curl --request POST \
--url https://app.eat-now.io/api/partner/v1/missed-calls \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"caller_phone_number": "+33612345678",
"external_call_id": "pbx-call-9f3a2",
"occurred_at": "2026-05-10T14:23:00+02:00"
}
'{
"data": {
"id": "ckl3m2b9t0000abcd1234efgh",
"outcome": "SENT",
"caller_phone_number": "+33612345678",
"customer_id": "ckl3customer0000",
"reservation_id": "ckl3reservation0000",
"template_type": "MISSED_CALL_WITH_RESERVATION",
"created_at": "2026-05-10T14:23:01.245Z"
}
}Report a missed call
Reports a missed call from a customer and triggers the same side effects as a Telnyx-detected missed call: caller phone normalization, customer match-or-create, upcoming reservation lookup, and WhatsApp template dispatch (MISSED_CALL or MISSED_CALL_WITH_RESERVATION).
Use this endpoint when the integrating partner already detects missed calls through their own PBX or telco integration and wants to bypass Telnyx provisioning. The restaurant must have the MISSED_CALLS feature enabled and an approved WhatsApp template for the relevant message type.
Idempotency
- Pass
external_call_idto make replays safe. A second request with the sameexternal_call_idfor the same restaurant returnsoutcome: SKIPPED_DUPLICATEwithout re-sending the WhatsApp message. - Idempotency is scoped to the partner API and never collides with Telnyx-originated call ids.
Cooldown
- A 6-hour per-caller cooldown is enforced. Repeat calls within that window return
outcome: SKIPPED_COOLDOWNand do not dispatch a message.
Outcome semantics
- A
201response with aSKIPPED_*outcome is not an error. The platform received the report and intentionally chose not to dispatch the WhatsApp message (feature disabled, suppression, no template, etc.). - A
502response means an unexpected internal failure occurred while dispatching the WhatsApp message. Retry the same payload with the sameexternal_call_idto recover safely.
curl --request POST \
--url https://app.eat-now.io/api/partner/v1/missed-calls \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"caller_phone_number": "+33612345678",
"external_call_id": "pbx-call-9f3a2",
"occurred_at": "2026-05-10T14:23:00+02:00"
}
'{
"data": {
"id": "ckl3m2b9t0000abcd1234efgh",
"outcome": "SENT",
"caller_phone_number": "+33612345678",
"customer_id": "ckl3customer0000",
"reservation_id": "ckl3reservation0000",
"template_type": "MISSED_CALL_WITH_RESERVATION",
"created_at": "2026-05-10T14:23:01.245Z"
}
}Authorizations
Restaurant-scoped partner API token passed as Authorization: Bearer <token>.
Body
Missed call report payload. The caller phone number is required; the rest is optional and improves replay safety and observability.
Payload to report a missed call. Triggers the same side effects (customer match, reservation lookup, WhatsApp template dispatch) as a Telnyx-detected call.
Caller phone number. E.164 format (+33612345678) is recommended. National-format strings are accepted and will be normalized using the restaurant's country.
3 - 40Partner-supplied unique id for this call. Replaying with the same value within the same restaurant returns outcome: SKIPPED_DUPLICATE without re-sending the WhatsApp message. Recommended for any retry-safe integration.
1 - 128ISO-8601 timestamp of the missed call. Defaults to the request time. Used as the cutoff for the 6-hour per-caller cooldown.
Response
Missed call processed. Inspect data.outcome to know whether a WhatsApp message was dispatched.
Show child attributes
Show child attributes
