api_tokens.create permission).
1
Create an API token
- Sign in to the dashboard at app.callva.io.
- Open the organization menu at the top of the sidebar and choose Settings, then API Keys.
- Choose Create API Key and fill in the dialog:
- Key Name - what the key is for, such as
Quickstartorn8n integration. - Role - the permissions the key carries. For this quickstart the key needs
calls.readandtranscripts.read; the built-in Analyst role holds both and can change nothing. - Project Scope - your project, for a project token that works in that project only, or All projects for an organization-wide token.
- Key Name - what the key is for, such as
- Choose Create Key, then copy the key.
2
Set your environment
Every example in these docs reads the base URL and your token from two variables:
3
List your projects
Check that the token works by listing the projects it reaches (List projects):A project token answers with its own project:
200 OK
Using an organization-wide token? Name the project.
Using an organization-wide token? Name the project.
An organization-wide token reaches every project of its organization, so each request must say which project it acts in - and that includes Send the project’s id in the To find a project’s id, open the project in the dashboard and choose Project Settings: the id sits under the page title, and a click copies it. A project token ignores both, and always acts in its own project.
GET /projects. Without one, the API refuses the request:400 Bad Request
X-Project-ID header, or as project_id - in the query string for reads and deletes, in the JSON body for writes:4
Talk to your agent in the browser
The dashboard can call your agent from the browser, using your microphone - no phone number and no phone line involved.
- In the dashboard, open your project and choose Voice Agent in the sidebar, then the agent.
- Choose Test Agent (the microphone button at the top right of the agent page). A test panel opens beside the page.
- Choose Start Call and allow the browser to use your microphone.
- Say a few sentences and let the agent answer, then choose End Call.
A test call is a real call on the voice engine, and it is recorded like any other: it becomes a call record in the project, with
type set to webrtc (shown as Web in the dashboard). The agent must be active, and the organization must have the CallVA voice engine available.5
Find the call
List the project’s calls, newest first (List calls). A call carries its identity (
sort takes a field key, with - in front for descending order; without it the list is not ordered newest first.200 OK
id, tenant_id, project_id, created_at, updated_at) and then every field of the project’s data model at the top level, by field key. Fields with no value are left out. Every field key also works as a filter, such as status=complete or started_at_gte=2026-11-01; the Calls guide covers filtering.6
Read the call and its transcript
Take the call’s The transcript is the conversation as a list of messages, each with its A call that has no transcript yet answers
id and fetch the record (Get a call) and its transcript (Get transcript):role (assistant for the agent, user for the caller), content and timestamp:200 OK
404 with "message": "No transcript found for this call".Next steps
Authentication and permissions
Choose the right token and role for each integration.
Calls
Place outbound calls and work with call records at scale.
Connect an AI agent
Let Claude, Cursor or any MCP client operate CallVA for you.
API reference
Every endpoint, with a playground that runs on your token.