When to Use Custom Integration
Use Custom Integration If...
- You built your own voice AI platform
- You’re using a provider not yet supported by Tuner
- You need full control over when and how data is sent
Use Native Integration If...
- You’re using Retell, Vapi, or another supported provider
- You want automatic webhook configuration
- You prefer a no-code setup
What You’ll Need
Before you begin, make sure you have:A Tuner Account
Sign up at tuner.ai if you haven’t already.
Generate Your API Key
Navigate to Workspace Settings > API Keys in your Tuner dashboard and generate a new API key. Keep this key secure—you’ll need it to authenticate your API requests.
Create a New Agent
In your Tuner dashboard, click Add New Agent and select Custom API as the integration type.
Set Your Agent ID
Enter your Agent ID (also called Agent Remote Identifier). This is the unique identifier that links calls from your voice platform to this agent in Tuner.
The Agent ID must match the agent identifier used in your voice platform. This ensures that call data sent to Tuner is correctly associated with the right agent. If your voice platform already assigns an agent ID, use that exact same ID here.
Complete Agent Setup & Send Your First Call
Finish configuring your agent settings (name, system prompt, evaluation criteria). For guidance on setting up evaluations, see Creating Custom Evaluations and Classifying Calls.Once configured, use the API to send your first call data. See the examples below to get started.
Integration Overview
The integration process is straightforward:- After each call ends in your voice AI platform, collect the transcript and metadata.
- Send the call data to Tuner using the Create Call API.
- Tuner processes the call and runs it through your configured evaluations.
- View results in your Tuner dashboard.
API Endpoint
Full URL:https://api.usetuner.ai/api/v1/public/call
Method: POST
Authentication
Include your API key in theX-API-Key header:
Required Parameters
Query Parameters
| Parameter | Type | Description | Where to Find |
|---|---|---|---|
workspace_id | number | Your Tuner workspace ID | workspace-settings > General Settings |
agent_remote_identifier | string | Your Agent ID | agent-settings > Agent Connection > Agent ID |
Body Parameters
| Parameter | Type | Description | Example |
|---|---|---|---|
call_id | string | A unique identifier for this call from your system | "call_12345" |
call_type | string | The type of call interaction. Use this to distinguish between different communication channels. | "phone_call" |
transcript_with_tool_calls | object[] | Array of messages in the conversation | See format below |
start_timestamp | integer | Epoch timestamp of when the call ended | 1705392000000 |
end_timestamp | integer | Epoch timestamp of when the call ended | 1705392000000 |
recording_url | string | URL to the audio recording of the call. Tuner will use this for audio analysis and playback in the dashboard. | "https://..." |
Transcript Format
Thetranscript_with_tool_calls field accepts an array of message objects. Each message should have a role and content:
User Sentiment Values
When sending theuser_sentiment field in your call data, it is highly recommended to use one of the following standardized values:
| Value | Description |
|---|---|
positive | The user expressed satisfaction or positive emotions |
neutral | The user’s tone was neither positive nor negative |
negative | The user expressed frustration, dissatisfaction, or negative emotions |
unknown | The sentiment could not be determined |
Sending Call Data
Send Call Data API Reference
View the complete API documentation with all available parameters, response formats, and error codes.
Example Request
Response
A successful request returns a201 Created response:
| Field | Description |
|---|---|
id | Tuner’s internal ID for this call |
provider_call_id | The call_id you provided |
is_new | Whether this is a new call or an update |
Best Practices
Send Calls Immediately
Send Calls Immediately
Send call data to Tuner as soon as each call ends. This keeps your dashboard up-to-date and enables real-time alerting.
Include Complete Transcripts
Include Complete Transcripts
Always send the full conversation transcript. Partial transcripts may result in incomplete evaluations.
Use Consistent IDs
Use Consistent IDs
Use your platform’s unique call identifier as the
call_id. This makes it easy to correlate calls between systems.Handle Failures Gracefully
Handle Failures Gracefully
Implement retry logic with exponential backoff. If a request fails, store the call data locally and retry later.
Include Recording URL
Include Recording URL
Always include the
recording_url so you can play back the audio directly in the Tuner dashboard for deeper analysis.Troubleshooting
422 Validation Error
422 Validation Error
Check that all required fields are present:
workspace_id and agent_remote_identifier in the query string, and call_id, call_type, transcript_with_tool_calls, end_timestamp, and recording_url in the body.401 Unauthorized
401 Unauthorized
Calls not appearing in dashboard
Calls not appearing in dashboard
Ensure the
agent_remote_identifier matches an agent you’ve created in Tuner. Check that the workspace_id is correct.Next Steps
Once your integration is working, explore these resources to get the most out of Tuner:How to Review Your First Call
Learn how to review and analyze calls in the Tuner dashboard.
Creating Custom Evaluations
Set up custom evaluations to automatically assess call quality.
Using a Supported Provider? If you’re using Retell, Vapi, or another supported platform, check out our native integration guides for a simpler setup experience.
Connecting to Retell
Connect your Retell agent to Tuner with automatic webhook configuration.