Skip to content
API reference

Leads

Create, find, assign and move leads, and log what happens on them.

GET/leads

List leads

Newest first by default. Filters: q (name, phone, e-mail, campaign), stageId, ownerId, source, channel (meta, google, whatsapp, website, referral…), state (open or closed), status, tag, createdFrom, createdTo, sort, order. Paginate with cursor.

Needs the permission leads:read.

ParameterInTypeNotes
limitqueryintegerat least 1. up to 200. default 50
cursorquerystringup to 512 characters
qquerystringup to 100 characters
pipelineIdquerystring (uuid)
stageIdquerystring (uuid)
statusquerystring
statequeryone of open, closed
ownerIdquerystring (uuid) or one of unassigned
sourcequeryone of website, referral, portal, direct, meta_ads, google_ads, walk_in, other
channelqueryone of meta, google, bing, linkedin, tiktok, website, whatsapp, referral, portal, walk_in, manual, other
tagquerystringup to 40 characters
scoreMinqueryintegerat least 0. up to 100
projectIdquerystring (uuid)
areaquerystringup to 120 characters
areaKindqueryone of wants, dislikes
createdFromquerystring
createdToquerystring
campaignIdquerystring (uuid)
adsetIdquerystring
adIdquerystring
formIdquerystring
testqueryone of exclude
contactIdquerystring (uuid)
slaqueryone of breached, at_risk
followupqueryone of overdue, today
fieldquerystring
fieldValuequerystringup to 200 characters
poolqueryone of true
sortqueryone of created, updated, score, value, followupdefault "created"
orderqueryone of asc, descdefault "desc"
curl -X GET https://crm.anibrosdesign.com/api/v1/leads \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 429

POST/leads

Create a lead

Creates a lead with its contact. A phone number or e-mail that matches an existing person links the lead to that person instead of duplicating them.

Needs the permission leads:create.

ParameterInTypeNotes
Idempotency-KeyheaderstringAny unique string up to 128 characters. Repeating the request with the same key returns the first response. up to 128 characters
Body fieldTypeNotes
contactIdstring (uuid)
contactobject
contact.firstName requiredstringat least 1 characters. up to 100 characters
contact.lastNamestring or null
contact.emailstring or null
contact.phonestring or null
pipelineIdstring (uuid)
stageIdstring (uuid)
ownerIdstring (uuid) or null
sourceone of website, referral, portal, direct, meta_ads, google_ads, walk_in, other
allowDuplicateboolean
estimatedValuenumber or null
currencystringat least 3 characters. up to 3 characters
budgetMinnumber or null
budgetMaxnumber or null
bedroomsMininteger or null
locationslist of stringup to 10 items
propertyTypeslist of one of apartment, villa, townhouse, penthouse, office, retail, plot, otherup to 8 items
listingTypeone of sale, rent, lease or null
tagslist of stringup to 30 items
campaignstring or null
customFieldsobject of any
nextFollowupAtstring (date-time) or null
curl -X POST https://crm.anibrosdesign.com/api/v1/leads \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"contactId":"01a15d23-0000-7000-8000-000000000000","contact":{"firstName":"text","lastName":"text","email":"text"},"pipelineId":"01a15d23-0000-7000-8000-000000000000"}'

Responses: 201 400 401 402 403 429

GET/leads/activity-options

Get activity options (leads)

Needs the permission activities:read.

curl -X GET https://crm.anibrosdesign.com/api/v1/leads/activity-options \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 401 403 429

POST/leads/bulk

Bulk (leads)

Needs the permission leads:bulk.

curl -X POST https://crm.anibrosdesign.com/api/v1/leads/bulk \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"ids":["01a15d23-0000-7000-8000-000000000000"],"action":"assign","ownerId":"01a15d23-0000-7000-8000-000000000000"}'

Responses: 200 400 401 402 403 429

GET/leads/channels

Leads per channel

How many leads each channel (Meta, Google, WhatsApp, website…) has under the other filters you pass: the numbers behind the “From” strip.

Needs the permission leads:read.

ParameterInTypeNotes
qquerystringup to 100 characters
pipelineIdquerystring (uuid)
stageIdquerystring (uuid)
statusquerystring
statequeryone of open, closed
ownerIdquerystring (uuid) or one of unassigned
sourcequeryone of website, referral, portal, direct, meta_ads, google_ads, walk_in, other
channelqueryone of meta, google, bing, linkedin, tiktok, website, whatsapp, referral, portal, walk_in, manual, other
tagquerystringup to 40 characters
scoreMinqueryintegerat least 0. up to 100
projectIdquerystring (uuid)
areaquerystringup to 120 characters
areaKindqueryone of wants, dislikes
createdFromquerystring
createdToquerystring
campaignIdquerystring (uuid)
adsetIdquerystring
adIdquerystring
formIdquerystring
testqueryone of exclude
contactIdquerystring (uuid)
slaqueryone of breached, at_risk
followupqueryone of overdue, today
fieldquerystring
fieldValuequerystringup to 200 characters
poolqueryone of true
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/channels \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 429

GET/leads/export

Download leads as a CSV

The same filters as the list, including the campaign, ad set, ad, form and channel, and a period given as days (2026-10-26: the whole day in the workspace's time zone) or as exact timestamps (2026-10-26T09:30:00Z). The file name says what is inside.

Needs the permission leads:export.

ParameterInTypeNotes
qquerystringup to 100 characters
pipelineIdquerystring (uuid)
stageIdquerystring (uuid)
statusquerystring
statequeryone of open, closed
ownerIdquerystring (uuid) or one of unassigned
sourcequeryone of website, referral, portal, direct, meta_ads, google_ads, walk_in, other
channelqueryone of meta, google, bing, linkedin, tiktok, website, whatsapp, referral, portal, walk_in, manual, other
tagquerystringup to 40 characters
scoreMinqueryintegerat least 0. up to 100
projectIdquerystring (uuid)
areaquerystringup to 120 characters
areaKindqueryone of wants, dislikes
createdFromquerystring
createdToquerystring
campaignIdquerystring (uuid)
adsetIdquerystring
adIdquerystring
formIdquerystring
testqueryone of exclude
contactIdquerystring (uuid)
slaqueryone of breached, at_risk
followupqueryone of overdue, today
fieldquerystring
fieldValuequerystringup to 200 characters
poolqueryone of true
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/export \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 429

GET/leads/export/count

Count the leads a download would hold

Takes the same filters as the download and answers { leads, limit, tooMany } before anything is built. A download holds at most 20,000 leads.

Needs the permission leads:export.

ParameterInTypeNotes
qquerystringup to 100 characters
pipelineIdquerystring (uuid)
stageIdquerystring (uuid)
statusquerystring
statequeryone of open, closed
ownerIdquerystring (uuid) or one of unassigned
sourcequeryone of website, referral, portal, direct, meta_ads, google_ads, walk_in, other
channelqueryone of meta, google, bing, linkedin, tiktok, website, whatsapp, referral, portal, walk_in, manual, other
tagquerystringup to 40 characters
scoreMinqueryintegerat least 0. up to 100
projectIdquerystring (uuid)
areaquerystringup to 120 characters
areaKindqueryone of wants, dislikes
createdFromquerystring
createdToquerystring
campaignIdquerystring (uuid)
adsetIdquerystring
adIdquerystring
formIdquerystring
testqueryone of exclude
contactIdquerystring (uuid)
slaqueryone of breached, at_risk
followupqueryone of overdue, today
fieldquerystring
fieldValuequerystringup to 200 characters
poolqueryone of true
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/export/count \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 429

GET/leads/imports

Get imports (leads)

Needs the permission leads:import.

curl -X GET https://crm.anibrosdesign.com/api/v1/leads/imports \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 401 403 429

POST/leads/imports

Imports (leads)

Needs the permission leads:import.

Body fieldTypeNotes
fileNamestringup to 200 characters
csv requiredstringat least 1 characters
mappingobject of string
onDuplicateone of skip, create
defaultSourceone of website, referral, portal, direct, meta_ads, google_ads, walk_in, other
ownerIdstring (uuid) or null
curl -X POST https://crm.anibrosdesign.com/api/v1/leads/imports \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"fileName":"text","csv":"text","mapping":{}}'

Responses: 202 400 401 402 403 429

POST/leads/imports/preview

Check a spreadsheet before importing it

Shows how the columns were understood.

Needs the permission leads:import.

Body fieldTypeNotes
csv requiredstringat least 1 characters
mappingobject of string or null
curl -X POST https://crm.anibrosdesign.com/api/v1/leads/imports/preview \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"csv":"text","mapping":{}}'

Responses: 200 400 401 402 403 429

GET/leads/imports/{id}

Get imports (lead)

Needs the permission leads:import.

ParameterInTypeNotes
id requiredpathstring (uuid)
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/imports/{id} \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 404 429

GET/leads/{id}

Get a lead

One lead with its contact, stage, owner, score and where it came from.

Needs the permission leads:read.

ParameterInTypeNotes
id requiredpathstring (uuid)
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/{id} \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 404 429

PATCH/leads/{id}

Change a lead

Send If-Match with the version you read; a stale change gets 412 instead of overwriting someone else’s edit.

Needs the permission leads:update.

ParameterInTypeNotes
id requiredpathstring (uuid)
Body fieldTypeNotes
sourceone of website, referral, portal, direct, meta_ads, google_ads, walk_in, other
estimatedValuenumber or null
currencystringat least 3 characters. up to 3 characters
budgetMinnumber or null
budgetMaxnumber or null
bedroomsMininteger or null
locationslist of stringup to 10 items
propertyTypeslist of one of apartment, villa, townhouse, penthouse, office, retail, plot, otherup to 8 items
listingTypeone of sale, rent, lease or null
tagslist of stringup to 30 items
campaignstring or null
customFieldsobject of any
nextFollowupAtstring (date-time) or null
curl -X PATCH https://crm.anibrosdesign.com/api/v1/leads/{id} \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"source":"website","estimatedValue":0,"currency":"text"}'

Responses: 200 400 401 402 403 404 412 429

DELETE/leads/{id}

Archive a lead

Archived leads can be restored.

Needs the permission leads:delete.

ParameterInTypeNotes
id requiredpathstring (uuid)
curl -X DELETE https://crm.anibrosdesign.com/api/v1/leads/{id} \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 204 400 401 402 403 404 429

GET/leads/{id}/activities

The activity history of a lead

Needs the permission activities:read.

ParameterInTypeNotes
id requiredpathstring (uuid)
limitqueryintegerat least 1. up to 200. default 50
cursorquerystringup to 512 characters
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/{id}/activities \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 404 429

POST/leads/{id}/activities

Log a call, message, meeting or note on a lead

Needs the permission activities:create.

ParameterInTypeNotes
id requiredpathstring (uuid)
Body fieldTypeNotes
type requiredone of note, call, whatsapp, sms, email, instagram, meeting
description requiredstringat least 1 characters. up to 4000 characters
directionone of outbound, inbound
outcomeone of connected, no_answer, busy, voicemail, wrong_number, interested, not_interested, appointment_booked, sent, replied
occurredAtstring (date-time)
durationMinutesintegerat least 0. up to 1440
nextFollowupAtstring (date-time) or null
curl -X POST https://crm.anibrosdesign.com/api/v1/leads/{id}/activities \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"type":"note","description":"text","direction":"outbound"}'

Responses: 201 400 401 402 403 404 429

GET/leads/{id}/areas

Get areas (leads)

Needs the permission leads:read.

ParameterInTypeNotes
id requiredpathstring (uuid)
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/{id}/areas \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 404 429

PUT/leads/{id}/areas

Set areas (leads)

Needs the permission leads:update.

ParameterInTypeNotes
id requiredpathstring (uuid)
Body fieldTypeNotes
wants requiredlist of stringup to 12 items
dislikes requiredlist of stringup to 12 items
curl -X PUT https://crm.anibrosdesign.com/api/v1/leads/{id}/areas \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"wants":["text"],"dislikes":["text"]}'

Responses: 200 400 401 402 403 404 412 429

POST/leads/{id}/assign

Give a lead to a person

Send ownerId, or null to unassign.

Needs the permission leads:assign.

ParameterInTypeNotes
id requiredpathstring (uuid)
Body fieldTypeNotes
ownerId requiredstring (uuid) or null
curl -X POST https://crm.anibrosdesign.com/api/v1/leads/{id}/assign \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"ownerId":"01a15d23-0000-7000-8000-000000000000"}'

Responses: 200 400 401 402 403 404 429

POST/leads/{id}/claim

Claim (leads)

Needs the permission leads:claim.

ParameterInTypeNotes
id requiredpathstring (uuid)
curl -X POST https://crm.anibrosdesign.com/api/v1/leads/{id}/claim \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 402 403 404 429

GET/leads/{id}/files

Get files (leads)

Needs the permission leads:read.

ParameterInTypeNotes
id requiredpathstring (uuid)
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/{id}/files \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 404 429

POST/leads/{id}/files

Files (leads)

Needs the permission leads:update.

ParameterInTypeNotes
id requiredpathstring (uuid)
namequerystringup to 200 characters
curl -X POST https://crm.anibrosdesign.com/api/v1/leads/{id}/files \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 201 400 401 402 403 404 429

GET/leads/{id}/handlers

Get handlers (leads)

Needs the permission leads:read.

ParameterInTypeNotes
id requiredpathstring (uuid)
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/{id}/handlers \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 404 429

PUT/leads/{id}/handlers/{userId}

Set handlers (lead)

Needs the permission leads:assign.

ParameterInTypeNotes
id requiredpathstring (uuid)
userId requiredpathstring (uuid)
curl -X PUT https://crm.anibrosdesign.com/api/v1/leads/{id}/handlers/{userId} \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 402 403 404 412 429

DELETE/leads/{id}/handlers/{userId}

Remove handlers (lead)

Needs the permission leads:assign.

ParameterInTypeNotes
id requiredpathstring (uuid)
userId requiredpathstring (uuid)
curl -X DELETE https://crm.anibrosdesign.com/api/v1/leads/{id}/handlers/{userId} \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 402 403 404 429

GET/leads/{id}/interests

Get interests (leads)

Needs the permission projects:read.

ParameterInTypeNotes
id requiredpathstring (uuid)
curl -X GET https://crm.anibrosdesign.com/api/v1/leads/{id}/interests \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 403 404 429

PUT/leads/{id}/interests

Set interests (leads)

Needs the permission leads:update.

ParameterInTypeNotes
id requiredpathstring (uuid)
Body fieldTypeNotes
items requiredlist of objectup to 20 items
items[].projectId requiredstring (uuid)
items[].unitTypeIdstring (uuid) or null
items[].notestring or null
items[].facingslist of stringup to 8 items
curl -X PUT https://crm.anibrosdesign.com/api/v1/leads/{id}/interests \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"projectId":"01a15d23-0000-7000-8000-000000000000","unitTypeId":"01a15d23-0000-7000-8000-000000000000","note":"text"}]}'

Responses: 200 400 401 402 403 404 412 429

POST/leads/{id}/restore

Restore (leads)

Needs the permission leads:delete.

ParameterInTypeNotes
id requiredpathstring (uuid)
curl -X POST https://crm.anibrosdesign.com/api/v1/leads/{id}/restore \
  -H "Authorization: Bearer crm_live_xxxxxxxx"

Responses: 200 400 401 402 403 404 429

POST/leads/{id}/stage

Move a lead to another stage

Won and lost stages may need a reason or a deal value, depending on the pipeline’s rules.

Needs the permission leads:update.

ParameterInTypeNotes
id requiredpathstring (uuid)
Body fieldTypeNotes
stageId requiredstring (uuid)
reasonstring or null
lossReasonstring or null
reasonCodestring or null
wantedAreaslist of stringup to 6 items
dealobject
deal.reservationIdstring (uuid)
deal.propertyIdstring (uuid)
deal.dealValue requirednumberat least 1.0E-7. up to 10000000000000
curl -X POST https://crm.anibrosdesign.com/api/v1/leads/{id}/stage \
  -H "Authorization: Bearer crm_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"stageId":"01a15d23-0000-7000-8000-000000000000","reason":"text","lossReason":"text"}'

Responses: 200 400 401 402 403 404 429

Something missing or unclear? Tell us.

Chat on WhatsApp