
WorkAPI.ai
Let Your Agent Make a Phone Call with a Mission
Give us the number you want to call and the action you want to be done, we will do it and log the transcript for you
Quick Start
1. Get your API key
Ask WorkAPI.ai for an API key. You'll get a key like sk_live_xxxxx.
2. Create your first task
curl -X POST https://api.workapi.ai/api/v1/workapi-ai/let-your-agent-make-a-phone-call-with-a-mission/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "Example phone_number",
"task": "Example task"
}'3. Check the task status
curl https://api.workapi.ai/api/v1/workapi-ai/let-your-agent-make-a-phone-call-with-a-mission/tasks/TASK_ID \
-H "Authorization: Bearer YOUR_API_KEY"Authentication
All requests require an API key passed in the Authorization header:
Authorization: Bearer sk_live_your_api_key_hereEndpoints
https://api.workapi.ai/api/v1/workapi-ai/let-your-agent-make-a-phone-call-with-a-missionInput Data
| Field | Type | Required | Description |
|---|---|---|---|
| phone_number | string | Yes | The phone number to call. Must be a valid phone number in E.164 format. e.g. "+14151234567" |
| task | string | Yes | Describe what you want the voice agent to complete in the phone call |
Output Data
When a task is completed, the following data will be included in the result. These fields are returned in the result_data object.
| Field | Type | Required | Description |
|---|---|---|---|
| concatenated_transcript | string | No | concatenated transcript |
| summary | string | No | summary of the conversation |
Task Lifecycle
pending — Task created, waiting to be accepted by staff.
accepted — Staff member has accepted the task. Caller can still cancel.
in_progress — Work has begun. Cannot be cancelled.
completed — Task is done.
cancelled — Task was cancelled before work started.
Webhooks
Configure a webhook URL on your API key to receive notifications when task status changes. Webhooks are signed with HMAC-SHA256 using your webhook secret. A single task.updated event is sent whenever a task is created, its status changes, or its data is updated. The full task details are included in every webhook payload.
| Event | Description |
|---|---|
| task.updated | Fired when a task is created, status changes, or task data is updated. Returns full task details. |
Example webhook payload:
{
"event": "task.updated",
"timestamp": "2026-02-20T12:00:00.000Z",
"task_id": "65abc123def456...",
"task_number": 42,
"status": "completed",
"task_data": {
"...": "your input data"
},
"result_data": {
"...": "output data or null"
},
"merchant_id": "65abc..."
}Error Codes
| Status | Code | Description |
|---|---|---|
| 400 | VALIDATION_ERROR | Missing or invalid fields in request body |
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | API key does not have access to this service |
| 404 | NOT_FOUND | Resource not found |
| 409 | INVALID_STATUS | Action not allowed for current task status |
| 429 | RATE_LIMITED | Too many requests. Check Retry-After header |