Configure Custom Observability
Follow these steps to set up custom observability for your voice agents:Obtain your API key
Log in to your Cekura dashboard to retrieve your API key. You can find it in the Settings tab visible on the top right corner. This key is essential for authenticating your requests and accessing observability features.
Home > Settings > API
Home > Settings > API

Create an agent
Navigate to the dashboard and create an agent. This agent will be responsible for collecting and sending data to the observability platform.

Define metrics
Go to dashboard.cekura.ai and select your agent to start creating metrics. These metrics will help you monitor and analyze the performance of your systems.

Start pushing logs
Choose your voice provider below to forward call data to Cekura’s observability suite.
Connect your Providers
- Custom API
- Vapi
- ElevenLabs
- Retell
import requests
# Send call data to Cekura observability
url = 'https://api.cekura.ai/observability/v1/observe/'
headers = {
'X-CEKURA-API-KEY': '<your_cekura_api_key>',
'Content-Type': 'application/json'
}
data = {
'agent': '<agent_id_in_cekura>',
'voice_recording_url': '<url_to_call_recording>',
'transcript_type': 'custom',
'transcript_json': [
{
'role': 'user',
'content': 'Hello, I want to book an appointment.',
'start_time': 0.5,
'end_time': 2.3
},
{
'role': 'assistant',
'content': 'Sure, what time works for you?',
'start_time': 2.5,
'end_time': 4.1
}
],
'call_id': '<unique_call_identifier>',
'call_ended_reason': '<reason_for_call_end>'
}
response = requests.post(url, headers=headers, json=data)
- Code
- No Code
import requests
# Forward VAPI webhook response to Cekura
url = 'https://api.cekura.ai/observability/v1/observe/'
headers = {
'X-CEKURA-API-KEY': '<your_cekura_api_key>',
'Content-Type': 'application/json'
}
data = {
'agent': '<agent_id_in_cekura>',
'voice_recording_url': vapi_response["stereoRecordingUrl"],
'transcript_type': 'vapi',
'transcript_json': vapi_response["messages"],
'call_id': vapi_response["id"],
'call_ended_reason': vapi_response["endedReason"]
}
response = requests.post(url, headers=headers, json=data)
Get your Cekura API Key
Navigate to the API keys section in your Cekura dashboard settings. If you don’t have an API key yet, create a new one. Copy the API key value as you’ll need it to authenticate your requests to Cekura’s observability API.

Add Cekura credentials to VAPI
In your VAPI dashboard, navigate to integrations in your account settings and add custom integration with the following details:
- Auth type: Bearer token
- Credential name: Cekura API key
- Token: Your Cekura API key
- Header name: X-CEKURA-API-KEY
-
Include bearer prefix: No

Configure Server URL in VAPI
In your VAPI dashboard, navigate to your agent settings and configure the Server URL and authorization header you created in the previous step. This URL is used for all communication between your application and VAPI, including context retrieval, function calls, and end-of-call reporting.Set the Server URL to:
https://api.cekura.ai/observability/v1/vapi/observe/?agent_id=YOUR_AGENT_ID

Get your Assistant ID
Each VAPI agent has a unique Assistant ID that identifies your specific implementation. Copy your Assistant ID from the VAPI dashboard:

Add credentials to Cekura
In your Cekura Agent Settings page:
-
Add the API key from VAPI with the tag
webhook -
Copy and add your
agent IDfrom VAPI
- Code
- No Code
import requests
import json
# Download audio from ElevenLabs
ELEVENLABS_API_KEY = "your_elevenlabs_api_key"
ELEVENLABS_API_BASE_URL = "https://api.elevenlabs.io/v1"
conversation_id = "your_conversation_id"
url_audio = f"{ELEVENLABS_API_BASE_URL}/convai/conversations/{conversation_id}/audio"
headers_audio = {"xi-api-key": ELEVENLABS_API_KEY}
audio_response = requests.get(url_audio, headers=headers_audio)
audio_content = audio_response.content if audio_response.status_code == 200 else None
# Send to Cekura
CEKURA_API_KEY = "your_cekura_api_key"
CEKURA_AGENT_ID = "your_cekura_agent_id"
url_cekura = "https://api.cekura.ai/observability/v1/observe/"
headers_cekura = {"X-CEKURA-API-KEY": CEKURA_API_KEY}
data = {
"agent": CEKURA_AGENT_ID,
"call_id": conversation_id,
"transcript_type": "elevenlabs",
"transcript_json": json.dumps(transcript_data)
}
files = {
"voice_recording": (f"elevenlabs_recording_{conversation_id}.mp3", audio_content, "audio/mpeg")
}
response = requests.post(url_cekura, headers=headers_cekura, data=data, files=files)
Configure webhook URL in ElevenLabs
In your ElevenLabs dashboard, navigate to your agent settings and configure the observability webhook URL:
https://api.cekura.ai/observability/v1/elevenlabs/observe/

Verify ElevenLabs API key and Agent ID
Go to the API keys section in your ElevenLabs dashboard and ensure you have at least one API key configured. Also note your Agent ID from the dashboard:



Add credentials to Cekura
In your Cekura Agent Settings page, add the API key from ElevenLabs and ensure you have copied your 
agent ID from ElevenLabs:
- Code
- No Code
import requests
# Forward Retell webhook response to Cekura
url = 'https://api.cekura.ai/observability/v1/observe/'
headers = {
'X-CEKURA-API-KEY': '<your_cekura_api_key>',
'Content-Type': 'application/json'
}
data = {
'agent': '<agent_id_in_cekura>',
'voice_recording_url': retell_response['recording_multi_channel_url'],
'transcript_type': 'retell',
'transcript_json': retell_response['transcript_with_tool_calls'],
'call_id': retell_response['call_id'],
'call_ended_reason': retell_response['disconnection_reason']
}
response = requests.post(url, headers=headers, json=data)
Configure webhook URL in Retell
In your Retell dashboard, add the observability webhook URL:You can configure the webhook at either level:
https://api.cekura.ai/observability/v1/retell/observe/
-
Setting Webhook at Agent level: Navigate to your agent settings and add the webhook URL for a specific agent.

-
Setting Webhook at Workspace level: Navigate to your workspace settings and add the webhook URL for all agents in the workspace.

Verify Retell API key
Go to the API keys section in your Retell dashboard. Create/ensure you have at least one API key configured with the webhook tag set.

Add credentials to Cekura
In your Cekura Agent Settings page:
-
Add the API key from Retell with the tag
webhook -
Copy and add your
agent IDfrom Retell