Per sviluppatori

Costruisci con Votinova

API REST, webhook, connettori e un server MCP. Tutto ciò che fa l'app web è anche nell'API: crea una sessione, aprila e ricevi i risultati nel tuo stack in meno di cinque minuti.

  1. Crea una credenziale nel tuo spazio — due scope, a livello di organizzazione.
  2. Fai la tua prima chiamata: crea e apri una sessione da curl.
  3. Iscriviti a un webhook e ricevi i risultati alla chiusura di ogni domanda.
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"}

Tutte le superfici, un unico contratto

Ogni integrazione deriva dallo stesso documento OpenAPI. Un endpoint nuovo appare ovunque allo stesso tempo.

Cosa ci costruisce la gente

Risultati nel tuo CRM

Sincronizza risposte e presenze nel tuo CRM o data warehouse appena ogni domanda chiude — te lo dice un webhook, senza polling.

Reportistica su misura

KPI, partecipanti e risultati via API con paginazione a cursore: costruisci il report esattamente come lo vuole la tua organizzazione.

Sessioni dal tuo software

Crea, apri e conduci sessioni dal tuo backend, dai tuoi strumenti interni o dal tuo agente — la stessa API che usa questa web app.

Fatto per gli agenti

Il tuo agente conosce già Votinova

Un server MCP remoto con strumenti derivati dal documento OpenAPI, filtrati dagli scope della tua credenziale. E un llms.txt perché qualsiasi modello trovi la documentazione.

Configura il server MCP
{  "mcpServers": {    "votinova": {      "url": "https://mcp.votinova.com/mcp",      "headers": { "Authorization": "Bearer vz_live_…" }    }  }}

Ultime modifiche dell'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 per piano

  • STARTER120 richieste ogni 60 s
  • PRO120 richieste ogni 60 s
  • TEAM600 richieste ogni 60 s
  • ENTERPRISE3000 richieste ogni 60 s

La tua quota viaggia in ogni risposta (header X-RateLimit-*).