Agent Studio

Agents Endpoints

API endpoints for managing voice agents

Agents Endpoints

Endpoints for creating, updating, and managing voice agents.

List Agents

GET /api/v1/agents

List all agents for the current tenant.

Query Parameters:

ParameterTypeDescription
limitintegerMax results (default: 50)
offsetintegerPagination offset
is_activebooleanFilter by active status

Response:

{
  "items": [
    {
      "id": "uuid",
      "name": "meal-agent",
      "display_name": "Meal Tracking Agent",
      "is_active": true,
      "created_at": "2026-01-17T10:30:00Z"
    }
  ],
  "total": 1,
  "limit": 50,
  "offset": 0
}

Get Agent

GET /api/v1/agents/{name}

Get a single agent by name.

Path Parameters:

ParameterTypeDescription
namestringAgent name (unique per tenant)

Response:

{
  "id": "uuid",
  "name": "meal-agent",
  "display_name": "Meal Tracking Agent",
  "config": {
    "prompt": {
      "system": "You are a friendly meal tracking assistant...",
      "greeting": "Hello {{user.name}}!"
    },
    "stt": { "provider": "deepgram", "model": "nova-3" },
    "tts": { "provider": "cartesia", "voice_id": "..." },
    "llm": { "provider": "gemini", "model": "gemini-2.5-flash" },
    "tools": ["save_meal", "transfer_to_glucose"],
    "handoffs": [
      { "target_agent": "glucose-agent" }
    ]
  },
  "is_active": true
}

Create Agent

POST /api/v1/agents

Create a new agent.

Request Body:

{
  "name": "meal-agent",
  "display_name": "Meal Tracking Agent",
  "config": {
    "prompt": {
      "system": "You are a friendly meal tracking assistant.",
      "greeting": "Hello! What did you have today?"
    },
    "stt": { "provider": "deepgram", "model": "nova-3" },
    "tts": { "provider": "cartesia", "voice_id": "voice-id" },
    "llm": { "provider": "gemini", "model": "gemini-2.5-flash" },
    "tools": ["save_meal"],
    "languages": ["en", "hi"],
    "default_language": "en"
  }
}

Required Fields:

FieldTypeDescription
namestringUnique agent identifier (lowercase, hyphens allowed)
config.prompt.systemstringSystem prompt for the agent
config.sttobjectSpeech-to-text provider configuration
config.ttsobjectText-to-speech provider configuration
config.llmobjectLanguage model configuration

Optional Fields:

FieldTypeDescription
display_namestringHuman-readable name
config.prompt.greetingstringInitial greeting message
config.toolsarrayTool names available to this agent
config.handoffsarrayAgents this agent can hand off to
config.languagesarraySupported language codes
config.default_languagestringDefault language code

Update Agent

PUT /api/v1/agents/{name}

Update an existing agent. Supports partial updates.

Path Parameters:

ParameterTypeDescription
namestringAgent name

Request Body:

{
  "display_name": "Updated Meal Agent",
  "config": {
    "prompt": {
      "system": "Updated system prompt..."
    }
  }
}

Delete Agent

DELETE /api/v1/agents/{name}

Delete an agent. Returns 204 on success.

Path Parameters:

ParameterTypeDescription
namestringAgent name

Deleting an agent that is used in active workflows may cause errors. Deactivate the agent first or remove it from workflows.

Activate Agent

POST /api/v1/agents/{name}/activate

Activate a deactivated agent.

Deactivate Agent

POST /api/v1/agents/{name}/deactivate

Deactivate an agent without deleting it. Deactivated agents cannot be used in new calls.

Agent Configuration Schema

Provider Configuration

{
  "stt": {
    "provider": "deepgram",
    "model": "nova-3",
    "language": "en"
  },
  "tts": {
    "provider": "cartesia",
    "voice_id": "voice-uuid",
    "speed": 1.0
  },
  "llm": {
    "provider": "openai",
    "model": "gpt-4.1",
    "temperature": 0.7,
    "max_tokens": 1000
  }
}

Supported Providers

TypeProviderModels
STTdeepgramnova-3
STTsarvamsaarika-v2
TTScartesiasonic-3
TTSsarvambulbul-v2
LLMopenaigpt-4.1
LLMgeminigemini-2.5-flash, gemini-2.5-pro

Handoff Configuration

{
  "handoffs": [
    {
      "target_agent": "glucose-agent",
      "condition": "{{flags.meal_logged}}",
      "context_pass": ["logged_meals"]
    }
  ]
}

On this page