Skip to main content
POST

Authorizations

X-API-Key
string
header
required

API key for authentication

Body

application/json
name
string
required

Agent name, unique within the workspace

type
enum<string>
default:agent
  • agent: built inside Calibrate
  • connection: your existing agent connected to Calibrate
Available options:
agent,
connection
interaction_type
enum<string>
default:conversation

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
config
object | null

Agent behavioral config. The keys depend on type.

type=agent, built inside Calibrate:

  • system_prompt: the agent's instructions
  • llm.model: provider/model, e.g. openai/gpt-4.1 or google/gemini-2.5-flash
  • stt.provider: deepgram, openai, cartesia, elevenlabs, google, sarvam, or smallest
  • tts.provider: cartesia, openai, google, elevenlabs, sarvam, or smallest
  • settings.agent_speaks_first, settings.max_assistant_turns
  • system_tools.end_call: let the agent end the call
  • data_extraction_fields: [{name, type, description, required}]

type=connection, your own HTTP endpoint:

  • agent_url: public HTTP(S) endpoint your agent is called at
  • agent_headers: headers sent on each request, e.g. auth
  • benchmark_provider: openrouter by default. Other values: openai, google, anthropic, meta-llama, mistralai, deepseek, x-ai, cohere, qwen, or ai21

Either type:

  • traces.scoring.enabled: whether the traces you send for this agent are scored by its linked evaluators. On unless you set it to false. Turning it back on needs at least one linked evaluator that can score traces

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

Response

Successful Response

uuid
string
required

ID of the newly created agent

Required string length: 36
Example:

"f47ac10b-58cc-4372-a567-0e02b2c3d479"

message
string
required

Confirmation message