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. This program takes connected TV (CTV) traffic only.
- 1
Ping
Send the offer and the state where the caller lives.
- 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_ctv","state":"TX","caller_id":"2145550199","sub_id":"ctv_campaign_12"}'Body
| Field | Type | Description |
|---|---|---|
| offer | string | Offer code. Required. For this program: fe_ctv (CTV traffic only). |
| state | string | Caller's US state of residence: the 2-letter code (TX) or the full name (Texas), any capitalization. Required. |
| caller_id | string | Caller's own 10-digit number. Optional but strongly recommended: we use it to check for duplicates and as the caller's number on the call. |
| zip | string | 5-digit ZIP. Optional. |
| age | integer | Caller's age, if you know it. Optional: our agent confirms age and qualification on the call (see your IO). |
| 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. |
| test | boolean | Set to true to check your setup: see Test pings below. Optional. |
Accepted
{
"accepted": true,
"ping_id": "4f0c2a8e-7b1d-4c55-9a3e-2d6f1b0c9e71",
"payout": 45.00,
"phone_number": "+18885550123",
"expires_in": 60,
"min_call_duration": 55
}payout is in US dollars, paid for each billable call. A call is billable when the caller stays connected for more than min_call_duration seconds. Transfer the caller to phone_number within expires_in seconds. After that the number is released and a late call is refused.
Test pings
Add "test": true to check your connection, key and response mapping without an agent online. A test ping always answers accepted with the same fictional number (+15555550100) and your real payout. Nothing is reserved or logged and the number does not ring, so never transfer a caller to it. Remove test to go live.
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 before you transfer the call. We use it for duplicate detection and as the caller's number on the call.
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.
- If we decline a ping, do not transfer that caller to us. Send the call to your next buyer or end it on your side.
- Send the caller's own number in
caller_id. When you transfer, keep the caller's number as the caller ID if your platform allows it. If the transfer shows your own line instead, we use the number from the ping, so duplicate checks stay correct. - Billable time starts when our agent answers, not while the call is ringing or in your own menus. A call is billable once it stays connected for more than
min_call_durationseconds. - Callers hear a short notice when they reach us: "This call may be monitored or recorded for quality and compliance purposes." Make sure your platform does not treat it as a hang-up.
- Agents take calls only during their own calling hours and in the states they are licensed for. Outside them a ping returns
outside_hoursorstate_not_covered. - A caller who already spoke with one of our agents recently is a duplicate: the ping is declined with
duplicate, or the call is not sent to that agent. Duplicate calls are not billable. - Age and qualification are confirmed by our agent on the call. A caller who does not meet the requirements in your Insertion Order is not payable.
- Our agents can dispute a call within 72 hours of it starting. You see the dispute on the call in your portal. If we approve it, the payout for that call is removed; if we reject it, the payout stays.
- 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.
Questions
Write to [email protected] or use the chat in your publisher portal. Please include the ping_id if your question is about a specific call.