Documentation
Quickstart
Place your first outbound AI call in three steps. You will need a By Your Side account with at least one phone number.
Step by step
- Get an agent API keyIn your account, open Account - Developers and press Create agent key. Copy the key; it starts with
bys_ak_. You will not be able to see it again.
Make sure you have at least one phone number on your account. By Your Side uses your number as the outbound caller ID. You can set a default in the Developers section or passcallerIdper call. - Place a callSend a
POSTto/v1/agent/callswith your objective and (optionally) the fields you want extracted from the conversation.The API responds immediately with acurl -X POST https://api.byourside.ai/v1/agent/calls \ -H "Authorization: Bearer bys_ak_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": "+14155550123", "objective": "Confirm the appointment for tomorrow at 2 PM and ask if they need to reschedule.", "fields": [ { "name": "confirmed", "type": "boolean" }, { "name": "new_time", "type": "string" } ] }'callIdand statusqueued. The call runs asynchronously in the background.{ "callId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "status": "queued" } - Poll until completeSend a
GETto/v1/agent/calls/{callId}every few seconds until the status is one of the five terminal states:completed,no_answer,voicemail,declined, orfailed.A completed call includes a plain-English summary, the extracted fields, a full transcript, and a recording URL.curl https://api.byourside.ai/v1/agent/calls/f47ac10b-58cc-4372-a567-0e02b2c3d479 \ -H "Authorization: Bearer bys_ak_YOUR_KEY"{ "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "status": "completed", "to": "+14155550123", "objective": "Confirm the appointment for tomorrow at 2 PM and ask if they need to reschedule.", "summary": "The contact confirmed the appointment at 2 PM and said they did not need to reschedule.", "extracted": { "confirmed": true, "new_time": null }, "transcript": "...", "recordingUrl": "https://api.byourside.ai/v1/agent/calls/f47ac10b-58cc-4372-a567-0e02b2c3d479/recording", "startedAt": "2026-06-17T14:03:12.000Z", "endedAt": "2026-06-17T14:05:48.000Z", "durationSec": 156 }
Skip the polling. Set a webhookUrl when placing the call and By Your Side will POST the result to your endpoint the moment the call ends. See Webhooks.
Next steps
- API reference - every parameter, response field, status, and error token.
- SDKs - Python and Node clients with a built-in
wait_for_callhelper that handles polling automatically. - MCP server - let Claude Desktop or Cursor place calls as tool calls.
- Webhooks - receive real-time events during and after the call.