POST /leads and POST /leads/batch accept for one lead: the same fields the Fields card under lists, plus the array forms and the handful of extra fields that card leaves out.
Where
Settings→API & Integrations
Your role needs
Update access to Lead intake API
update-companies. Admin have it by default.Authenticated by a workspace API key, not by a signed-in session. Creating a key needs the same permission as the rest of the API settings tab.
Required
name is the only field the API always requires. Alongside it, send at least one of email, phone or linkedin_url. Or, instead of any of those, send a non-empty emails or phones array. A request with none of the five fails validation, and the error names only the three singular fields even though the array forms satisfy it too.
Fields
Identity
Contact
Person
Company
Location
Tags
Options
The last group in that table is different in kind.
on_duplicate, create_missing_tags, enrich and dry_run are switches for the call, not fields on the lead: in a batch you send them once, beside leads, and they apply to every row.
custom_fields deserves one more sentence: each key is slugified before it’s stored (Plan tier becomes plan_tier), a boolean value is stored as the text yes or no, and any value that is itself an object or an array is dropped instead of being flattened. See Custom fields and collected data for where it shows up afterwards.
Fields the card above doesn’t list
A few fields the API accepts aren’t in the Fields card, so they aren’t in the table above either. They come straight from the request’s own validation.Fields that accept more than one value
Every array field above has its own cap, enforced before anything is saved: go over it and the whole request fails with a 422 naming that field.
email and emails are the one pair worth knowing about beyond that. Each already passes its own check on its own, but the two are then combined into a single address list and that combined list is capped again, so filling both fields to their individual limits can still mean the address you listed last doesn’t get kept. phone and phones behave the same way.Related
POST /leads
The endpoint that accepts every field on this page: status codes, matching, dry run and the full response envelope.
Status vocabularies
Every enum a lead or its company can be in, and the label each one renders as.
Custom fields and collected data
Where a value sent in
custom_fields shows up afterwards, and the other way a lead picks up collected data.