Quickstart
From zero to your first API call in about five minutes.
1. Create an API key
API access is included in the Pro plan. In your
Essere dashboard, go to
Developers → API keys → Create key, pick a scope
(read, or read_write if you'll create contacts or manage webhooks),
and copy the key.
Keys are shown once. Store it in a secret manager or environment variable — never in code or git.
export ESSERE_API_KEY="<paste your key here>" # from the show-once modal
2. List your agents
curl https://voice-public-api.essere.ai/v1/agents \
-H "Authorization: Bearer $ESSERE_API_KEY"
{
"object": "list",
"data": [
{
"id": "agt_1a2b3c4d5e6f7a8b9c0d1e2f",
"name": "Reception Agent",
"status": "active",
"language": "en",
"is_default": true,
"created_at": "2026-06-01T09:12:00Z"
}
],
"has_more": false,
"next_cursor": null
}
3. List recent calls
curl "https://voice-public-api.essere.ai/v1/calls?limit=5&from=2026-07-01T00:00:00Z" \
-H "Authorization: Bearer $ESSERE_API_KEY"
Each call includes summary, sentiment, outcome, and has_recording.
Keep the id (call_...) of one call for the next step.
4. Fetch a transcript
curl https://voice-public-api.essere.ai/v1/calls/call_9f8e7d6c5b4a3f2e1d0c9b8a/transcript \
-H "Authorization: Bearer $ESSERE_API_KEY"
{
"call_id": "call_9f8e7d6c5b4a3f2e1d0c9b8a",
"turns": [
{"role": "agent", "text": "Hi, you've reached Horizon Estates. How can I help?"},
{"role": "caller", "text": "I'm calling about the two-bedroom on Makarios Avenue."}
]
}
To download the audio instead, GET /v1/calls/{id}/recording streams the
file bytes directly (audio/mpeg).
5. Create a contact (read_write scope)
Contacts feed your agent's memory: on the next call from that number, the agent already knows who's calling.
curl -X POST https://voice-public-api.essere.ai/v1/contacts \
-H "Authorization: Bearer $ESSERE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: quickstart-contact-001" \
-d '{
"phone": "+35799123456",
"name": "Maria Georgiou",
"notes": "Interested in 2-bedroom apartments, budget €250k.",
"fields": {"source": "website-form"}
}'
Posting the same phone again updates the existing contact (upsert).
Next steps
- Webhooks — get
call.completedevents pushed to you instead of polling. - Errors & Pagination — the two conventions every integration needs.
- MCP Server — plug your account straight into an AI assistant.
- API Reference — every endpoint, schema, and example.