EliteCallFlowPublisher API

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. 1

    Ping

    Send the offer and the caller's state.

  2. 2

    Get a number

    We answer with a payout and a number reserved for you.

  3. 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

FieldTypeDescription
offerstringOffer code, e.g. fe_spanish. Required: the list of offer codes is in your portal (Sending calls).
verticalstringfinal_expense, aca or medicare. Optional check: we refuse the ping if the offer isn't in this vertical.
statestringCaller's 2-letter US state, e.g. TX. Required.
caller_idstringCaller's 10-digit number. Optional, enables duplicate checks.
zipstring5-digit ZIP. Optional.
ageintegerCaller's age. Optional.
ani_prefixstringFirst digits of the caller number, if you can't share it all. Optional.
sub_idstringYour 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.