API Reference
Manage your Converse workspace programmatically — create agents, upload knowledge, trigger campaigns, and query call history.
Authentication
All API requests require a Bearer token from your API key:
Authorization: Bearer YOUR_API_KEY
Generate API keys in Settings → API Keys. Keys are shown once at creation — store them securely.
Test mode
?mode=test to any request to use mock data without affecting live resources or incurring usage charges. Useful during development.Base URL
https://api.converse.axllabs.in/api/v1
All endpoints below are relative to this base URL.
Agents
/agentsList all agents in your workspace.
/agentsCreate a new agent.
/agents/{id}Get a specific agent by ID.
/agents/{id}Update an agent.
/agents/{id}Delete an agent.
Create agent — request body
{
"name": "Support Bot",
"system_prompt": "You are a helpful support agent...",
"llm_model": "gemini-2.5-flash",
"language": "en-IN",
"greeting": "Hello! How can I help you today?"
}Flows
/flowsList all flows.
/flowsCreate a new flow with nodes and edges.
/flows/{id}Get a flow by ID including its full node graph.
/flows/{id}Update flow name, nodes, or edges.
/flows/{id}Delete a flow.
Knowledge Base
/knowledgeList documents in your knowledge base.
/knowledge/uploadUpload a file (PDF, DOCX, TXT, CSV). Multipart/form-data.
/knowledge/ingest-urlScrape and index a URL. Body: { url, name }
/knowledge/ingest-textIndex pasted text. Body: { name, content }
/knowledge/querySemantic search. Body: { query, top_k, voice_mode }
/knowledge/{id}/reindexRe-embed a document.
/knowledge/{id}Delete a document and its embeddings.
/knowledge/{id}/chunksList all indexed chunks of a document.
/knowledge/agent/{agent_id}/assign/{doc_id}Assign a document to a specific agent.
/knowledge/agent/{agent_id}/assign/{doc_id}Remove a document assignment from an agent.
/knowledge/agent/{agent_id}List an agent's assigned knowledge documents.
Custom Tools
/toolsList custom tools.
/toolsCreate a tool (HTTP, webhook, code).
/tools/{id}Update a tool.
/tools/{id}Delete a tool.
/tools/{id}/testExecute a tool with test inputs.
/tools/agent/{agent_id}/assign/{tool_id}Assign a tool to an agent.
/tools/agent/{agent_id}/assign/{tool_id}Remove a tool assignment.
/tools/mcp/serversList MCP servers.
/tools/mcp/serversRegister an MCP server.
/tools/mcp/servers/{id}/connectTest connection and discover tools.
Campaigns
/campaignsList campaigns.
/campaignsCreate a campaign.
/campaigns/{id}Get campaign with live stats.
/campaigns/{id}Update campaign settings.
/campaigns/{id}Delete a campaign and all its contacts.
/campaigns/{id}/startStart dialing.
/campaigns/{id}/pausePause after the current call.
/campaigns/{id}/resumeResume a paused campaign.
/campaigns/{id}/cancelCancel immediately.
/campaigns/{id}/contactsList contacts with status/outcome filters.
/campaigns/{id}/contactsAdd a single contact.
/campaigns/{id}/contacts/bulkAdd up to 10,000 contacts.
/campaigns/{id}/contacts/upload-csvUpload a CSV file of contacts.
/campaigns/{id}/resultsFull outcome breakdown and interested contacts.
/campaigns/{id}/results/exportDownload results as CSV.
Calls (History)
/callsList call history with filters (status, direction, date range).
/calls/{id}Get a specific call with full transcript.
Channels
/channelsList all channels.
/channelsCreate a channel.
/channels/{id}Update a channel.
/channels/{id}Delete a channel.
/channels/providers/verifyVerify credentials and fetch phone numbers.
/channels/web/{id}/sessionGet a WebSocket session URL for a web channel.
/channels/web/{id}/public-sessionGet WebSocket URL (no auth — for website embedding).
Live Space
/live-space/live-callsList all active calls for your org.
/live-space/live-calls/{id}Get live call details and transcript.
/live-space/live-calls/{id}/whisperSend a hidden message to the AI agent.
/live-space/live-calls/{id}/bargeForce the AI to speak a message.
/live-space/live-calls/{id}/takeoverPause/resume AI control.
/live-space/live-calls/{id}/endEnd a call.
/live-space/live-calls/{id}/supervisor/joinGet a WebRTC join token for a call.
Error responses
All error responses follow a consistent format:
{
"detail": "Human-readable error message"
}400— Bad request (invalid input)401— Missing or invalid API key403— Access denied (resource belongs to another org)404— Resource not found409— Conflict (duplicate resource)422— Validation error (required fields missing)500— Internal server error
