Your first call in five minutes

From zero to a live session created by API, without leaving this page.

Before you start

  • An account on a paid plan: the API is not part of FREE (you can still browse the entire reference without paying).
  • A presentation in your workspace: the session you are about to create runs an existing presentation.
  1. Create your credential

    In your workspace, open Company → API and create a credential with the content:write scope. The secret is shown once: save it.

    Get your API key

    The credential belongs to the organization, not to your user: any admin can revoke it and every use lands in the audit log. Request only the scopes you need — results:read to read, content:write to create and drive.

  2. Create and open a session

    With your key in the X-API-Key header, create a session on an existing presentation and open it.

    curl -X POST https://api.votinova.prd.atbionapps.com/public/v1/sessions \
      -H "X-API-Key: vz_live_…" \
      -d '{ "presentation_id": "prs_8f3k2" }'
    
    curl -X POST https://api.votinova.prd.atbionapps.com/public/v1/sessions/ses_71xw9/open \
      -H "X-API-Key: vz_live_…"

    The session is born in DRAFT; opening it mints its join_code and the room is ready. Watch the X-RateLimit-* headers on the response: they travel on every reply and tell you how much request budget is left in the 60-second window.

  3. Receive the results

    Register a webhook for question.results.finalized and receive signed aggregates in your backend.

    curl -X POST https://api.votinova.prd.atbionapps.com/public/v1/webhooks \
      -H "X-API-Key: vz_live_…" \
      -d '{ "url": "https://example.com/hooks/votinova",
            "event_types": ["question.results.finalized"] }'

    Save the signing_secret the registration returns: it is shown once, and it is what lets you verify every delivery. The webhooks guide ships the verification ready to paste in three languages.

If something looks off

  • 401 — the X-API-Key header or the scope is missing: the body names the exact one in required_scope.
  • 402 — your plan does not include the API: the body carries upgrade_to with the plan that unlocks it.
  • 429 — budget spent for this window: wait retry_after_seconds and retry with backoff.

What next?

Browse the full reference, try every endpoint online, and connect Zapier or your agent over MCP.

API reference