Link Operator to Project
Operators belong to your account, not to a single project. These two endpoints control which projects each operator appears in.
POST
https://api.identitycall.ai/api/v1/public/operators/{id}/add_projectMake an existing operator available to a recording project. Idempotent.
Requires write permission
DELETE
https://api.identitycall.ai/api/v1/public/operators/{id}/remove_projectRemove the operator from a project. The operator itself is not deleted.
Requires write permission
When you need this
You do not need it to attribute a call — operator_id on an upload accepts any
operator in your account, linked or not. You need it so the operator shows up in
that project’s roster:
| Situation | What to do |
|---|---|
| Operator does not exist yet | Create it (pass project_id to link at the same time) |
| Operator exists, but is missing from this project’s list | add_project |
| Operator left the team for this project | remove_project (attribution on past recordings is kept) |
add_project is idempotent. Linking an operator that is already linked
returns 200 and changes nothing, so a nightly roster sync can call it
unconditionally instead of diffing first.
Parameters
Body / Query Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
project_id | integer | No | - | The project to link or unlink. Required for account-wide keys. Project-scoped keys may omit it; passing a different project returns 403. |
Request
cURL
# Link operator 42 to project 12
curl -X POST "https://api.identitycall.ai/api/v1/public/operators/42/add_project" \
-H "Authorization: Bearer $IDENTITYCALL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"project_id": 12}'
# Unlink again
curl -X DELETE "https://api.identitycall.ai/api/v1/public/operators/42/remove_project?project_id=12" \
-H "Authorization: Bearer $IDENTITYCALL_API_KEY"Response
Both endpoints return the operator in its updated state.
Response200 OK
{
"data": {
"id": 42,
"name": "Jonas Jonaitis",
"phone_number": "+37060000001",
"email": null,
"active": true,
"initials": "JJ",
"recording_project_ids": [12],
"virtual_numbers": []
}
}Errors
| Status | Error | Description |
|---|---|---|
| 401 | “Invalid API key” | Missing or unrecognized bearer token |
| 403 | “Write permission required” | API key lacks write permission |
| 403 | “project_id does not match this API key’s project” | A project-scoped key named a different project |
| 404 | “Resource not found” | No such operator in this account |
| 404 | “Project not found” | project_id is not a project in this account |
| 422 | “project_id is required for account-wide API keys” | Account-wide key omitted project_id |
See Also
- List Operators
- Create Operator
- Upload Recording — sending
operator_id