API

Endpoints

What the public API covers — and where the complete reference lives.

This page is the overview of what the API can do. Field names, example responses and the option to try calls directly live in the interactive API documentation — that is the authoritative source and always current.

All paths below are relative to the base URL https://app.scaletalk.ai/api/public/v1.

Account

MethodPathPurpose
GET/meYour own account — the best test that the key works
GET/usageMinutes used in the current billing period
GET/voicesAvailable voices
GET/prompt_templatesThe prompt templates on your account

Agents

MethodPathPurpose
GET POST/agentsList agents, create a new one
GET PATCH DELETE/agents/{id}Read, update or delete a single agent
POST/agents/{id}/duplicateDuplicate an agent
POST/agents/{id}/generate_promptGenerate a prompt
GET PUT/agents/{id}/caller_lookupRead and set caller context
GET PUT/agents/{id}/post_processingRead and set follow-up
GET POST/agents/{id}/toolsList and create capabilities
PATCH DELETE/agents/{id}/tools/{toolId}Update or remove a single capability
GET POST/agents/{id}/knowledgeThe agent's knowledge documents
DELETE/agents/{id}/knowledge/{docId}Detach a document from the agent
GET POST/agents/{id}/dictionaryPronunciation dictionary
PATCH DELETE/agents/{id}/dictionary/{termId}Update or delete a single entry
GET POST/agents/{id}/keytermsSTT keyterms
PATCH DELETE/agents/{id}/keyterms/{termId}Update or delete a single term
POST/agents/{id}/dial_outTrigger a single outbound call

Calls

MethodPathPurpose
GET/callsList and filter calls
GET/calls/{id}A single call with its captured variables
GET/calls/{id}/transcriptFull transcript
GET/calls/{id}/recordingRecording, where one exists

Campaigns

MethodPathPurpose
GET POST/campaignsList and create campaigns
GET PATCH DELETE/campaigns/{id}Read, update or delete a single campaign
GET POST/campaigns/{id}/leadsList contacts and add them one at a time
POST/campaigns/{id}/leads/csvUpload a contact list as CSV
POST/campaigns/{id}/startStart a campaign
POST/campaigns/{id}/pausePause
POST/campaigns/{id}/resumeResume
POST/campaigns/{id}/stopStop for good

Phone numbers

MethodPathPurpose
GET/phone_numbersList your own numbers
POST/phone_numbers/searchSearch available numbers
POST/phone_numbers/purchasePurchase a number
POST/phone_numbers/import_byoImport your own SIP number
GET PATCH DELETE/phone_numbers/{id}Read, assign or release a single number

Knowledge base

MethodPathPurpose
GET POST/knowledge_documentsList and upload documents
GET DELETE/knowledge_documents/{id}Read or delete a single document

Mind the permissions

Every endpoint requires the matching permission on the key. Without it you get 403 back, not 401. The mapping is straightforward: read calls need …:read, writes need …:write.

Three endpoints cost money or place real calls, so they carry their own permissions:

EndpointPermission
POST /phone_numbers/purchasephone_numbers:purchase
POST /campaigns/{id}/startcampaigns:execute
POST /agents/{id}/dial_outdial_out:execute

More on this under managing API keys.

Errors

Errors come back as JSON with a descriptive code:

{
  "error": {
    "code": "invalid_request",
    "message": "The request body is missing required fields"
  }
}
CodeMeaning
invalid_requestThe request is incomplete or malformed
unauthorizedKey missing or invalid
forbiddenKey valid but lacking the required permission
not_foundThe resource does not exist
rate_limitedToo many requests
internal_errorAn error on our side

On 429 the response carries a Retry-After header telling you how long to wait.

Idempotency on write calls

Every write endpoint accepts an Idempotency-Key header. Set it wherever a duplicate call would hurt — purchasing a number, placing a call, uploading a contact list. If the request times out and you retry with the same key, it is not executed twice.

On this page