Skip to Content
API ReferenceOperatorsCreate Operator

Create Operator

Create a new operator (human agent) that can be assigned to virtual numbers for inbound call routing.

POSThttps://api.identitycall.ai/api/v1/public/operators

Create an operator with a name and phone number. Phone numbers are auto-normalized to E.164.

Requires write permission

Scope and auto-linking

Project-scoped keys auto-link the new operator to the bound project.

When you create an operator with a project-scoped API key, the operator is created and an OperatorProject row is automatically inserted that links the new operator to the key’s bound project. This makes the operator immediately visible to other project-scoped requests.

When you create an operator with an account-wide key, the operator is created unlinked — it belongs to the account but is not yet attached to any project. You must explicitly link it to one or more projects through the project-scoped operator endpoints (or via the dashboard) before project-scoped keys can see it.

API key scopeBehavior
Account-wideCreates an unlinked account-level operator
Project-scopedCreates the operator and auto-links it to the bound project

Request Body

Body Parameters (application/json)

NameTypeRequiredDefaultDescription
namestringYes-Full display name (e.g. "Jane Doe"). Used to derive `initials`.
phone_numberstringYes-Phone number in E.164 or local format. Auto-normalized to E.164 on save.
emailstringNo-Optional contact email for the operator.
activebooleanNotrueWhether the operator can currently receive routed calls.

Request

curl -X POST "https://api.identitycall.ai/api/v1/public/operators" \ -H "Authorization: Bearer $IDENTITYCALL_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Jane Doe", "phone_number": "+15551234567", "email": "jane.doe@example.com", "active": true }'

Response

Response201 Created
{
"data": {
  "id": 42,
  "name": "Jane Doe",
  "phone_number": "+15551234567",
  "email": "jane.doe@example.com",
  "active": true,
  "initials": "JD",
  "virtual_numbers": []
}
}

Response Fields

FieldTypeDescription
idintegerUnique operator ID
namestringFull display name
phone_numberstringE.164 normalized phone number
emailstring | nullContact email
activebooleanWhether the operator is active
initialsstringTwo-letter initials derived from name
virtual_numbersarrayVirtual numbers assigned to this operator (empty on create)

Each entry of virtual_numbers (when populated later) has the shape:

FieldTypeDescription
idintegerVirtual number ID
phone_numberstringThe virtual number in E.164
namestringDisplay name of the virtual number
activebooleanWhether the virtual number is active

Errors

StatusErrorDescription
401”Invalid API key”Missing or unrecognized bearer token
403”Write permission required”API key lacks write permission
422["Name can't be blank"]name was not supplied
422["Phone number can't be blank"]phone_number was not supplied
422["Phone number is invalid"]Phone number could not be normalized to a valid E.164 value

See Also