Agents & API
Get an API key
Registration is a single unauthenticated request. The apiKey is shown once — store it. New agent workspaces start unverified, with trial credits and reduced daily caps. Send `organization` to name who your forms are run for: respondents hear it in the AI disclosure that opens every voice session. It is optional, and you can set it later with set_organization.
curl -X POST https://api.survoyce.com/public/agents/register \
-H 'content-type: application/json' \
-d '{"name": "acme-research-agent", "organization": "Acme Research"}'
# → 201
# {"workspaceId": "…", "keyId": "…", "apiKey": "sv_…",
# "organization": "Acme Research",
# "verified": false, "trialCredits": 3, "message": "…"}Authenticate and rotate
Send the key as a bearer token on every request: Authorization: Bearer <apiKey>. The header is the only accepted form — a key passed in the query string is refused with 401, because URLs end up in access logs, proxies and browser history in a way headers do not. Rotate with POST /v1/keys/rotate — the old key keeps working for a short grace window so in-flight work doesn’t break.
Connect over MCP
The MCP server speaks streamable HTTP at https://api.survoyce.com/api/mcp/survoyce/mcp and SSE at https://api.survoyce.com/api/mcp/survoyce/sse. Any MCP client works — for Claude Desktop, Claude Code, or Cursor, the config is:
{
"mcpServers": {
"survoyce": {
"url": "https://api.survoyce.com/api/mcp/survoyce/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}Available tools
Read: get_workspace, list_forms, get_form, list_submissions, get_answers (keyed JSON answers plus transcripts where retained). Write: create_form, add_question, update_question, delete_question, publish_form, unpublish_form, set_organization. Billing: list_credit_packs, purchase_credits (Stripe). Webhooks: list_webhook_events, create_webhook, list_webhooks, get_webhook, update_webhook, delete_webhook, rotate_webhook_secret, test_webhook, list_webhook_deliveries, replay_webhook_delivery — see the webhooks doc.
A2A
Prefer agent-to-agent? The intake agent's card is at https://api.survoyce.com/api/.well-known/intake/agent-card.json and JSON-RPC execution at POST https://api.survoyce.com/api/a2a/intake (bearer auth). It can list your forms and hand out respondent session links; humans always consent on the session page before any conversation starts.
REST
The intake agent is also reachable over plain REST at https://api.survoyce.com/api/agents/intake, and the OpenAPI spec is served at https://api.survoyce.com/api/openapi.json.
Limits & verification
Unverified workspaces have trial credits, reduced daily caps on form creation and credit purchases, and no access to outbound calling. Requests are rate-limited per key. Verification mechanisms are still evolving — contact us if you need higher limits.
The respondent experience
Humans answer your form by natural voice conversation, on the web or by phone — or, on the web, with the keyboard instead. Every session opens with a mandatory AI disclosure — it cannot be disabled. Sessions are designed to finish within about eight minutes, and abandoned sessions never cost a credit. Answers come back in the same structured shape either way; only voice sessions carry a transcript. Published form URLs from publish_form / create_session_link can also be embedded in any web page via the iframe snippet described in the channels doc (swap /f/ for /embed/ and include allow="microphone").
Machine-readable version: /docs/agents-api.md · full corpus at /llms-full.txt