Two public endpoints, one for each thing you can build under Integrations in the app: a web form (which you can also embed on your site with no code) and a Third-Party integration (an endpoint with no page, for Zapier, Make, Meta lead ads or your own backend). Both need no login, answer any origin, and take a JSON body keyed by the field ids you defined. Nothing else in CRM Dost is a public API.
Find the webhookId, the field ids and a ready-made example for your form or integration under Integrations → Web Forms or Third-Party → its guide in the app.
https://preprod.apis.crmdost.com/v1/web-form/submit/{webhookId}Submits a form you built under Integrations → Web Forms. This is what the hosted embed calls; call it yourself to submit from your own page or server. A multiple-choice field takes an array of the ticked options, or a comma-separated string.
curl -X POST 'https://preprod.apis.crmdost.com/v1/web-form/submit/YOUR_WEBHOOK_ID' \
-H 'Content-Type: application/json' \
-d '{
"f-name": "Riya Kapoor",
"f-phone": "+91 98765 43210",
"f-email": "riya@example.com",
"f-interests": ["Site visit", "Call back"],
"f-notes": "Weekend please"
}'| 201 | { "data": { "leadId": 42 } } — a new lead, tagged with the form or integration as its source and assigned by its rules. |
| 201 + existingLead | { "data": { "leadId": 42, "existingLead": true } } — the phone or email already belongs to a lead; the answers are added to that lead's timeline instead of creating a duplicate. |
| 400 | { "message": "…" } — a required field is missing, or an email or phone does not look like one; the message names the field and is safe to show. |
| 404 | The form or integration does not exist or is switched off. |
https://preprod.apis.crmdost.com/v1/integrations/{webhookId}Submits to an integration you built under Integrations → Third-Party. Add a field for each value the other system sends — the field ids are the JSON keys — then point a Zapier or Make Webhooks → POST (JSON) step, a Meta lead-form webhook, or your own code at this address. Press Verify Integration in the app, or send one request, and read the result under API logs.
curl -X POST 'https://preprod.apis.crmdost.com/v1/integrations/YOUR_INTEGRATION_WEBHOOK_ID' \
-H 'Content-Type: application/json' \
-d '{ "f-name": "Arjun Mehta", "f-phone": "+91 98100 12345", "f-campaign": "Diwali offer" }'| 201 | { "data": { "leadId": 42 } } — a new lead, tagged with the form or integration as its source and assigned by its rules. |
| 201 + existingLead | { "data": { "leadId": 42, "existingLead": true } } — the phone or email already belongs to a lead; the answers are added to that lead's timeline instead of creating a duplicate. |
| 400 | { "message": "…" } — a required field is missing, or an email or phone does not look like one; the message names the field and is safe to show. |
| 404 | The form or integration does not exist or is switched off. |