Lead capture API for real estate CRM: One POST, one lead in the CRM.
Any website, portal or connector can send AuraStack CRM a lead with one request: a key, a name and a phone number. It keeps the UTM tags, finds the campaign, routes the lead to its owner and never makes a second lead for a buyer who enquires twice.
We use these details only to set up your trial and call you about it.
The endpoint
POSThttps://crm.aurastack.in/api/v1/leads/capture
Header x-api-key, a name and a phone. That is the whole contract.
01/05The request
A key and a body, nothing else.
Authentication
Your workspace’s lead-capture key, from Settings → Marketing APIs → API Key in the CRM, in an x-api-key header, or as ?key= on the URL for tools that cannot set a header.
Body
JSON (application/json), or a form (application/x-www-form-urlencoded or multipart/form-data), where a field left blank counts as not sent. CORS is open, so a browser form on any domain can post.
02/05Fields
Two required, the rest when you have them.
name
requiredtext, 2+ characters
The buyer’s name (`buyerName` also works).
phone
requiredtext, 8+ characters
Any format. An Indian number sent as +91 is stored as its ten digits; duplicates are matched on the last ten.
email
optionalemail
Left blank, it is ignored rather than refused.
projectName
optionaltext, up to 160
Matched by name to one of your projects.
source
optionaltext, up to 60
Where the lead came from, such as website or 99acres. Defaults to online_ads.
sourceDetail
optionaltext, up to 120
The form, page or listing.
notes
optionaltext, up to 2,000
Anything else the buyer wrote.
budgetMin, budgetMax
optionalnumber
In rupees.
utm_source, utm_medium, utm_campaign, utm_term, utm_content
optionaltext
Kept on the lead; utm_campaign also finds the campaign by its UTM name.
utm_id
optionaltext, up to 64
The ad platform’s campaign id, matched to a synced campaign.
campaignId
optionaltext
The CRM campaign’s own id, when you have it.
pool
optionaltext, up to 60
A routing pool your workspace has set up, to round-robin the lead across only its people.
03/05Examples
From a terminal, or from your own form.
curl, as JSON
curl -X POST 'https://crm.aurastack.in/api/v1/leads/capture' \
-H 'x-api-key: YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"Rahul Sharma","phone":"+91 98765 43210","projectName":"Demo Heights","source":"website","utm_campaign":"diwali-launch"}'A website form, posted by the browser
await fetch('https://crm.aurastack.in/api/v1/leads/capture?key=YOUR_KEY', {
method: 'POST',
body: new FormData(document.querySelector('#enquiry')),
})Send forms from connectors
In Zapier, Make or Pabbly, post the fields as a form rather than raw JSON: one quote or line break in a buyer’s answer breaks hand-written JSON and the lead is refused.
Keep the key off busy public pages
A key in a web page can be copied. It can only add leads to your workspace, but for a form that gets heavy traffic, post from your server or a connector instead.
Retries are safe
Posting the same buyer again returns success with deduped set, so an ad platform or connector that retries never creates duplicates.
04/05Responses
Every answer is JSON, and retries are safe.
- 200
{ "success": true, "data": { "leadId": "…", "campaignId": null, "deduped": false } }A new lead, assigned and in the list.
- 200
{ "success": true, "data": { "leadId": "…", "deduped": true } }A repeat enquiry: no second lead; it is added to the buyer’s existing lead, whose owner is told.
- 200
{ "success": true, "data": { "leadId": null, "test": true } }A Meta test lead, acknowledged and dropped.
- 401
{ "success": false, "error": { "code": "NO_KEY" } }No key sent (BAD_KEY: a key that matches no active workspace).
- 422
{ "success": false, "error": { "code": "VALIDATION", "details": { … } } }A required field is missing or a value is out of range; details names the field.
05/05Straight answers
Questions about the API.
Where do I find the API key?
Settings → Marketing APIs → API Key.
In the CRM, under Settings → Marketing APIs → API Key. Each workspace has its own key, and it only adds leads to that workspace.
Which fields are required?
A name and a phone number.
Only a name (two characters or more) and a phone number (eight or more). Everything else (email, project, source, notes, budget, UTM tags, campaign and pool) is optional.
What happens if the same buyer is sent twice?
Success, and still one lead.
The request succeeds with deduped set to true, and the enquiry is added to the buyer’s existing lead (matched on the last ten digits of the phone), whose owner is told. No second lead is made, so retries are safe.
Can I send 99acres or MagicBricks leads with it?
Yes, with the portal as the source.
Yes. A connector such as Zapier, Make or Pabbly, or the portal’s own lead push where your account has one, posts each lead to the API with source set to the portal’s name, so you can see which portal brings the buyers who book.
Not on the list? Ask us the awkward version — we would rather lose a deal on the call than on the third invoice.