Schedule a call
Schedule an outbound AI call: once scheduled_at passes, the agent calls the contact's phone number on file. The call is billed like any outbound call when it runs.
POST
https://api.centerfy.ai/webhooks/inbound/scheduled-calls Headers
| Header | Required | Value | Description |
|---|---|---|---|
x-api-key | Yes | your sub-account API key (cfy_…) | Authenticates the request; or use Authorization: Bearer <key>. |
Body parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
agent_id | string (uuid) | Yes | — | Agent that will act; must be in this sub-account. |
contact_id | string (uuid) | Yes | — | Contact to reach; must be in this sub-account. |
scheduled_at | string (ISO 8601) | Yes | — | When to run, in the future, with a UTC offset or Z, e.g. 2026-10-08T14:00:00Z. |
context | string | Yes | — | What it’s about — the agent uses this to know what to say (max 4000 characters). |
Request body
{
"agent_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f",
"scheduled_at": "2026-10-08T14:00:00Z",
"context": "Follow up on the quote sent last week and offer a demo."
}Example
curl -X POST "https://api.centerfy.ai/webhooks/inbound/scheduled-calls" \
-H "x-api-key: $CENTERFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f",
"scheduled_at": "2026-10-08T14:00:00Z",
"context": "Follow up on the quote sent last week and offer a demo."
}' import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.scheduledCalls.create({
"agent_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f",
"scheduled_at": "2026-10-08T14:00:00Z",
"context": "Follow up on the quote sent last week and offer a demo."
});
console.log(result); centerfy scheduledCalls create '{"agent_id":"2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e","contact_id":"3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f","scheduled_at":"2026-10-08T14:00:00Z","context":"Follow up on the quote sent last week and offer a demo."}' MCP tool: centerfy_scheduled_calls_create (see MCP server)
Response
{
"status": "success",
"scheduled_call": {
"id": "1842",
"agent_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f",
"context": "Follow up on the quote sent last week and offer a demo.",
"scheduled_at": "2026-10-08T14:00:00.000Z",
"status": "pending"
}
}Errors
400— if context is missing or too long, scheduled_at is malformed or not in the future, an id isn’t a UUID, or the contact has no phone number.404— if the agent or contact is not in this sub-account.
Notes
Returns 201. The status moves pending → processing → completed or failed.