面向开发者

用 Votinova 来构建

REST API、webhook、连接器,还有一个 MCP 服务器。网页端能做的事,API 里都有:创建一场会话、开启它,五分钟内就能把结果接进您的系统。

  1. 在工作区中创建一个凭据,两种权限范围,作用于整个组织。
  2. 发出第一个调用:用 curl 创建并开启一场会话。
  3. 订阅一个 webhook,每道问题结束时就收到结果。
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"}

所有接入方式,同一份契约

每一种集成都源自同一份 OpenAPI 文档。新增一个端点,各处会同时出现。

REST API

公开端点,带权限范围、按套餐分配的配额和游标分页。

API 参考

Webhooks

带 HMAC 签名的事件,失败按退避策略重试,也可以手动重投。

Webhook 指南

Zapier

触发器和动作,无需写代码即可实现自动化。

查看集成

Power Automate

面向微软生态的 webhook 触发器连接器。

查看集成

MCP 服务器

为您的智能体提供由 OpenAPI 文档生成的工具。远程托管,无需安装。

配置 MCP

加载项

PowerPoint、Google Slides、Teams、Zoom 和 Webex。

查看加载项

大家都用它做什么

把结果送进 CRM
每道问题一关闭,就把回答和出勤同步进您的 CRM 或数据仓库,由 webhook 通知,无需轮询。
自己做报告
通过 API 以游标分页取到关键指标、参与者和结果:完全按您组织想要的样子做报告。
从自家软件里开会话
从您的后端、内部工具或智能体创建、开启并操控会话,用的就是这个网页端所用的同一套 API。
为智能体而建

您的智能体已经懂 Votinova

一个远程 MCP 服务器,工具由 OpenAPI 文档生成,并按您凭据的权限范围过滤。另有一份 llms.txt,任何模型都能找到文档。

配置 MCP 服务器
{  "mcpServers": {    "votinova": {      "url": "https://mcp.votinova.com/mcp",      "headers": { "Authorization": "Bearer vz_live_…" }    }  }}

API 的最新变更

更新日志
  • 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.

各套餐的配额

  • STARTER每60秒120次请求
  • PRO每60秒120次请求
  • TEAM每60秒600次请求
  • ENTERPRISE每60秒3000次请求

每个响应都会带上您的配额(X-RateLimit-* 响应头)。