The callback bridge: Spoofey rings your own number (agent) first, then connects the destination showing the caller_id you choose. It's the same call you'd place from the dashboard, billed to the same balance. New to the API? Start with Getting started with the Spoofey API.
Request
text
POST https://api.spoofey.com/v1/calls| Field | Required | Notes |
|---|---|---|
agent |
yes | The number to ring first. Should be a phone you control. |
destination |
yes | The number to connect once you answer. |
caller_id |
yes | What the destination sees ring in. Can't be the same number as destination. Some numbers can never be shown; it's checked against the same safety list as a dashboard call. |
caller_id_name |
no | A caller-ID name to send alongside the number. Best-effort. Many carriers show their own directory name anyway. |
record |
no | true to keep a recording you can play back later. |
Example
bash
curl https://api.spoofey.com/v1/calls \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"agent":"15195551234","destination":"14165557890","caller_id":"18005551234"}'Response
Returns 200 as soon as the call is placed, before it connects:
json
{
"id": "9f2c1a7e-4b3d-4e2a-8f11-2b6a7c9d0e12",
"status": "calling",
"agent": "15195551234",
"destination": "14165557890",
"caller_id": "18005551234",
"caller_id_name": null,
"minutes_remaining": 42.5,
"business_call": false
}The response only tells you the call was placed, not how it went. Poll GET /v1/calls/:id with its id to follow it.
Errors
Errors come back as {"error":{"message":"...","code":"..."}}. See API errors and rate limits for every status code and the rate limit. A rejected call never touches your balance.