Ping/Post API
Ask us before you send a call. If we accept, you get a phone number and a payout. Transfer the caller to that number within 60 seconds and the call is credited to you.
- 1
Ping
Send the offer and the caller's state.
- 2
Get a number
We answer with a payout and a number reserved for you.
- 3
Transfer
Transfer the caller to that number before it expires.
Authentication
Send your API key in every request:
Authorization: Bearer ecf_your_key
Missing or revoked key: 401. Over 600 requests per minute: 429. Keep your key on your server, never in a browser or an app.
POST /api/v1/ping
curl -X POST https://elitecallflow.com/api/v1/ping \
-H "Authorization: Bearer ecf_your_key" \
-H "Content-Type: application/json" \
-d '{"offer":"fe_spanish","state":"TX","caller_id":"2145550199","sub_id":"fb_campaign_12"}'Body
| Field | Type | Description |
|---|---|---|
| offer | string | Offer code, e.g. fe_spanish. Required: the list of offer codes is in your portal (Sending calls). |
| vertical | string | final_expense, aca or medicare. Optional check: we refuse the ping if the offer isn't in this vertical. |
| state | string | Caller's 2-letter US state, e.g. TX. Required. |
| caller_id | string | Caller's 10-digit number. Optional, enables duplicate checks. |
| zip | string | 5-digit ZIP. Optional. |
| age | integer | Caller's age. Optional. |
| ani_prefix | string | First digits of the caller number, if you can't share it all. Optional. |
| sub_id | string | Your own source label, shown in reports. Optional, max 100 characters. |
Accepted
{
"accepted": true,
"ping_id": "4f0c2a8e-7b1d-4c55-9a3e-2d6f1b0c9e71",
"payout": 38.00,
"phone_number": "+18885550123",
"expires_in": 60
}payout is in US dollars, paid once the call reaches the billable duration. Transfer the caller to phone_number within expires_in seconds. After that the number is released and a late call is refused.
Declined
{ "accepted": false, "reason": "no_capacity" }- no_capacityNo agent can take the call right now.
- state_not_coveredNo available agent is licensed in the caller's state.
- outside_hoursAvailable agents are outside their calling hours.
- duplicateEvery available agent already bought this caller recently (needs caller_id).
- vertical_disabledThis vertical is not buying calls at the moment.
- invalid_requestThe request body is wrong. The errors field says why (HTTP 400).
POST /api/v1/post (optional)
If you didn't have the full caller number at ping time, confirm it here. It improves duplicate detection.
curl -X POST https://elitecallflow.com/api/v1/post \
-H "Authorization: Bearer ecf_your_key" \
-H "Content-Type: application/json" \
-d '{"ping_id":"4f0c2a8e-7b1d-4c55-9a3e-2d6f1b0c9e71","caller_id":"2145550199"}'Response: { "ok": true }, or 404 for an unknown ping.
Good to know
- Only transfer calls we accepted. A call to a number without a matching ping is refused.
- One ping, one call. Ping again for the next caller, even if you got the same number before.
- A transfer that starts just before expiry still counts if it reaches us within 30 seconds after
expires_in. - Aim to answer the caller and ping in the same flow: our answer usually comes back in well under a second.