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

HeaderRequiredValueDescription
x-api-keyYesyour sub-account API key (cfy_…)Authenticates the request; or use Authorization: Bearer <key>.

Body parameters

NameTypeRequiredDefaultDescription
agent_idstring (uuid)Yes—Agent that will act; must be in this sub-account.
contact_idstring (uuid)Yes—Contact to reach; must be in this sub-account.
scheduled_atstring (ISO 8601)Yes—When to run, in the future, with a UTC offset or Z, e.g. 2026-10-08T14:00:00Z.
contextstringYes—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.

© 2026 Centerfy AI. All rights reserved.