Voice Agents

Create Voice Agent

Create Agent

Requires the OWNER or ADMIN role.

Request Body

name, personality, instructions, and voice (with voice.provider and voice.voiceId) are required. Every other agent field can be set on create.

Set avatar.avatarId to attach an avatar from your catalog — the server resolves avatarUrl, provider, and any Tavus ids from that catalog row itself; you cannot set those directly.

post/voice/agents

Request

  • Base URL: https://api.speakai.co/v1
  • URL: https://api.speakai.co/v1/voice/agents
  • Auth: API key in header x-speakai-key and API key in header x-access-token

Request body

_idstring

MongoDB document id, included because every document has one; use agentId to identify it.

agentIdstring

Server-generated UUID. Immutable — sent in the body on create or update is silently dropped.

companyIdstring

Stamped from the caller's authenticated company. Sending your own value on create or update is silently dropped; you cannot re-parent an agent.

userIdstring

Id of the user who created the agent.

namestring required

Required on create. Trimmed, non-empty.

personalitystring required

Required on create. Free text describing the agent's tone. Can be cleared to an empty string on update.

instructionsstring required

Required on create. The agent's system instructions. Can be cleared to an empty string on update.

sttobject

Speech-to-text provider config. Shape is not validated beyond being an object.

liveVoicestring nullable

The voice id used when llm.model is a Live (speech-to-speech) model. Rejected with a 400 listing the valid ids if it is not one of the voices the resolved Live model offers. Cleared by sending an empty string or null.

conversationMode'voice' | 'avatar'
statusstring

One of the agent status values.

websiteUrlstring
enableWebSearchboolean
creativityLevelnumber
folderIdstring
isDeletedboolean

DELETE soft-deletes: this flips to true and the agent stops appearing in list/get, but the document is not removed.

deletedAtstring date-time nullable
createdAtstring date-time
updatedAtstring date-time

Response

Created

status'success'

Changes

No recorded changes to this operation across all 2 revisions of this API.