/api/ingest/{token}Push a lead as a GET query string
One lead per request: JSON object, `application/x-www-form-urlencoded`, `multipart/form-data`, XML, or query-string parameters. Common keys (name, phone / mobile, email, city, budget, bhk, locality, project, message, id …) are recognised; the rest is read for budget / BHK / locality mentions and kept in the message. Send your own `id` for idempotent retries; `is_test=true` keeps a lead in the sandbox. JSON bodies may carry an optional `consent` (one entry or an array of up to 10: `channel` or `channels` of whatsapp | sms | call | email | all, `purpose` promotional | service, `granted` boolean, `text` — required when granted —, `text_version`, `captured_at` ISO 8601, `source_url`, `dlt_consent_ref`); granted entries reach the consent ledger with proof, `granted: false` records nothing, an invalid `consent` is a 422 with field errors. 404 = unknown or rotated URL. Portals that can only call a URL (MagicBricks, JustDial style) use this form.
Access: No authentication.
Parameters
tokenpathrequired- string
The source token from the Lead Push URL (secret).
Response · 202
datarequired- LeadPushAccepted
metarequired- object
curl -X GET 'https://api.propzolo.com/api/ingest/{token}'{
"data": {
"ok": true,
"event_id": "cmusrceel0000q7kaafxqi1om",
"duplicate": true
},
"meta": {}
}Errors
404Not found — records of another company are reported the same way.422Invalid input; `error.fields` maps field paths to messages.429Too many requests; retry after the Retry-After header.500Unexpected error; quote `error.request_id` to support.

