Pour les développeurs
Construisez avec Votinova
API REST, webhooks, connecteurs et un serveur MCP. Tout ce que fait l'application web est aussi dans l'API : créez une session, ouvrez-la et recevez les résultats dans votre stack en moins de cinq minutes.
- Créez un identifiant dans votre espace — deux scopes, à l'échelle de l'organisation.
- Lancez votre premier appel : créez et ouvrez une session depuis curl.
- Abonnez-vous à un webhook et recevez les résultats à la clôture de chaque question.
curl -X POST https://api.votinova.prd.atbionapps.com/public/v1/sessions \ -H "X-API-Key: vz_live_…" \ -d '{ "presentation_id": "prs_8f3k2" }' 200 OK · X-RateLimit-Remaining: 119{ "id": "ses_71xw9", "join_code": "482913", "state": "LIVE"}Toutes les surfaces, un même contrat
Chaque intégration dérive du même document OpenAPI. Un nouvel endpoint apparaît partout à la fois.
API REST
Endpoints publics avec scopes, quotas par plan et pagination par curseur.
Référence de l'API →Webhooks
Événements signés HMAC, réessais avec backoff et relivraison manuelle.
Guide des webhooks →Zapier
Déclencheurs et actions pour automatiser sans code.
Voir l'intégration →Power Automate
Connecteur à déclencheur webhook pour l'écosystème Microsoft.
Voir l'intégration →Serveur MCP
Des outils dérivés de l'OpenAPI pour vos agents. Distant, rien à installer.
Configurer MCP →Compléments
PowerPoint, Google Slides, Teams, Zoom et Webex.
Voir les compléments →Ce qu'on construit avec
Les résultats dans votre CRM
Synchronisez réponses et présence vers votre CRM ou votre entrepôt de données dès la clôture de chaque question — un webhook vous prévient, sans sondage.
Vos propres rapports
KPIs, participants et résultats par l'API avec pagination par curseur : montez le rapport exactement comme votre organisation le veut.
Des sessions depuis votre logiciel
Créez, ouvrez et conduisez des sessions depuis votre backend, vos outils internes ou votre agent — la même API que cette application web.
Votre premier appel, dans votre langage
Démarrage complet →Conçu pour les agents
Votre agent connaît déjà Votinova
Un serveur MCP distant avec des outils dérivés du document OpenAPI, filtrés par les scopes de votre identifiant. Et un llms.txt pour que tout modèle trouve la documentation.
Configurer le serveur MCP →{ "mcpServers": { "votinova": { "url": "https://mcp.votinova.com/mcp", "headers": { "Authorization": "Bearer vz_live_…" } } }}Derniers changements de l'API
Changelog →- ADDITIVE
The plan codes gain STARTER, the tier between FREE and PRO introduced with the 2026-08 pricing. upgrade_to, on a 402 and on a question the caller's plan does not cover, can name it, and so can quota_tiers[].plan_code on GET /public/v1/limits. A client that switches over plan codes needs a branch for STARTER; the other codes keep their meaning and their order.
- ADDITIVE
An event stranded by an auto-disable is now dead-lettered, so it can be replayed once the endpoint is back. Recovering from a bad afternoon is supposed to be: the platform pauses the endpoint, you fix it, you re-enable it, you redeliver what never arrived. Redelivery only accepts a dead-lettered delivery, and the queue of an auto-disabled endpoint was being terminated as merely failed — so there was nothing to replay and nothing said so. The arithmetic hid it: a delivery gets 8 attempts and an endpoint is paused after 10 consecutive failures, so a single event in flight always dead-letters first. The counter is per endpoint, and one ordinary session emits three events. Deliveries for an endpoint its owner REMOVED are still terminated without a dead letter: nobody is coming back for those.
- ADDITIVE
Three corrections found by driving this API the way an integration does. A bad request body now answers the envelope this surface documents ({ error, code: INVALID_REQUEST_BODY, invalid_fields }) naming the PUBLISHED field: it used to fall through to a shape the API emits nowhere else, which named the internal property (TargetUrl for target_url) and carried no error member for a generated client to read. session.ended is delivered ONCE per close; closing a live session through this API delivered it twice, so anything that posts a summary or books a room did it twice, and the event now always names presentation_id whichever surface closed the session. And enabling an endpoint only revives one the platform paused after failures: it used to undo a DELETE too, so a connector's unsubscribe could be reversed by one call while the connector itself could no longer remove it. Enabling an endpoint that was removed now answers 400 WEBHOOK_NOT_AUTO_DISABLED; register it again instead.
Quota par plan
- STARTER120 requêtes toutes les 60 s
- PRO120 requêtes toutes les 60 s
- TEAM600 requêtes toutes les 60 s
- ENTERPRISE3 000 requêtes toutes les 60 s
Votre quota voyage dans chaque réponse (en-têtes X-RateLimit-*).