curl --request POST \
--url https://api.calibrate.artpark.ai/agents \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '{
"name": "Support Agent",
"type": "agent",
"config": {
"system_prompt": "You are a helpful assistant.",
"llm": {
"model": "google/gemini-2.5-flash"
},
"stt": {
"provider": "google"
},
"tts": {
"provider": "google"
},
"settings": {
"agent_speaks_first": false,
"max_assistant_turns": 10
}
}
}'
{
"uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"message": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Agents
Create agent
Create an agent to test inside Calibrate or connect your existing agent to Calibrate
POST
/
agents
curl --request POST \
--url https://api.calibrate.artpark.ai/agents \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '{
"name": "Support Agent",
"type": "agent",
"config": {
"system_prompt": "You are a helpful assistant.",
"llm": {
"model": "google/gemini-2.5-flash"
},
"stt": {
"provider": "google"
},
"tts": {
"provider": "google"
},
"settings": {
"agent_speaks_first": false,
"max_assistant_turns": 10
}
}
}'
{
"uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"message": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
API key for authentication
Body
application/json
Agent name, unique within the workspace
agent: built inside Calibrateconnection: your existing agent connected to Calibrate
Available options:
agent, connection What the agent expects in the request body:
conversation: a normal back-and-forth agent, answers within an ongoing conversation. Receives{"messages": [...]}general: a one-shot agent, takes a single plain input and produces a single plain output, no conversation. Receives{"input": "..."}
Available options:
conversation, general Agent behavioral config. The keys depend on type.
type=agent, built inside Calibrate:
system_prompt: the agent's instructionsllm.model:provider/model, e.g.openai/gpt-4.1orgoogle/gemini-2.5-flashstt.provider:deepgram,openai,cartesia,elevenlabs,google,sarvam, orsmallesttts.provider:cartesia,openai,google,elevenlabs,sarvam, orsmallestsettings.agent_speaks_first,settings.max_assistant_turnssystem_tools.end_call: let the agent end the calldata_extraction_fields:[{name, type, description, required}]
{ "system_prompt": "You are a helpful support agent.", "llm": {"model": "openai/gpt-4.1"}, "stt": {"provider": "deepgram"}, "tts": {"provider": "elevenlabs"}, "settings": {"agent_speaks_first": true, "max_assistant_turns": 50} }
type=connection, your own HTTP endpoint:
agent_url: public HTTP(S) endpoint your agent is called atagent_headers: headers sent on each request, e.g. authbenchmark_provider:openrouterby default. Other values:openai,google,anthropic,meta-llama,mistralai,deepseek,x-ai,cohere,qwen, orai21
{ "agent_url": "https://api.example.com/agent", "agent_headers": {"Authorization": "Bearer <token>"}, "benchmark_provider": "openrouter" }
Either type:
traces.scoring.enabled: whether the traces you send for this agent are scored by its linked evaluators. On unless you set it tofalse. Turning it back on needs at least one linked evaluator that can score traces
{"traces": {"scoring": {"enabled": false}}}
Every request Calibrate makes to your endpoint carries the header
X-Calibrate-Eval: 1. Read it to tell a test run from a real user, for example
to tag the trace you send back or to skip sending one.
For type=agent, omitted keys inherit managed defaults. Omit config entirely to use all defaults. For type=connection, config is stored as-is and must contain agent_url