VocalDocscontracts 1.65.0

HTTP quick starts

Four quick starts walk through the API with curl and an API key. Beside each curl command the pages show the same request in Node.js, with the built-in fetch, and in Python, with the requests library; both are written from the command, so they send what it sends. They use no Vocal SDK; quick starts for the SDKs are planned. Each page shows its requests in order, what to look for in each answer, the operations it uses and the contracts release that first served each of them.

On the Phase 0 host. Served. Every operation the four quick starts use was first released in 1.53.0 or earlier, and the api on the Phase 0 host serves all of them. On 2026-10-24 UTC the runner passed the 28 steps of the four quick starts against the Phase 0 host, which has pinned contracts 1.60.0 since deploy #70, with a live key: 27 steps were answered and one was skipped, as its page allows. No run with a test key is recorded.

The quick starts

Quick startWhat you doScopes the key needs
Your first AgentRead the Provider catalog, create an Agent draft, publish a version, read itagents:read, agents:write
Place a web CallCreate a Call for the web channel, read it, end it, read its tracecalls:read, calls:write
Receive eventsRead the event catalog, make a filter, read the log and the streamevents:read, webhooks:read, webhooks:write
Knowledge for an AgentCreate a Knowledge base, upload a document, bind it to an Agent, ask a queryknowledge:read, knowledge:write, agents:read, agents:write

The last three use the Agent that the first one creates. A Webhook subscription delivers events to an endpoint of yours; contracts 1.63.0 adds the operations that create and manage one, and each of their reference pages says whether the Phase 0 host serves it. These quick starts create no subscription, so Receive events reads events instead and shows what a replay answers when no subscription exists.

Before you start

Use an API key created by a Member (see Authentication and keys) with the scopes in the table. The environment of the key decides which Providers an Agent may name: a mock Provider, which sends nothing to any vendor, runs for test keys only, and the catalog lists the mock transcriber and voice as not streaming, for which the api refused them with a live key. Your first Agent says how to choose. The pages use these placeholders; replace them with your own:

PlaceholderStands for
https://api.example.testThe base URL of your API, in $VOCAL_API
vk_test_...Your API key, in $VOCAL_API_KEY
agt_..., call_..., kb_...The ids that earlier answers gave you
<stt_provider> and so onA value you chose from the catalog

The runner

The repository that builds these pages holds a runner that sends the requests of all four quick starts in order and checks each answer's status and the fields the pages name. It prints one line per step, with the quick start, the step, the method and the path template and the result, and no identifier, body or key. It stops at the first failure with a non-zero exit code.

export VOCAL_API_KEY=vk_test_...
pnpm run quickstarts -- --api https://api.example.test --key-env VOCAL_API_KEY

--key-env names the environment variable that holds the key, so the key never appears on a command line. --only first-agent,knowledge runs some quick starts and the ones they need, --providers auto|mock|real chooses whether mock Providers are preferred (auto, the default, prefers them for a test key and avoids them for any other), and --dry-run prints the plan and checks it against the document the reference is generated from, without sending anything. The runner leaves what it creates in the Organization, so point it at an Organization where leftovers do not matter.

The box at the top of this page records the runner's run against the Phase 0 host. No CI job runs it against a stack; the repository's gate runs its dry run and its unit tests, which use an in-process fake. A run against a host is a manual pnpm run quickstarts invocation.