API reference
Leads
Leads are inbound interest you have not qualified yet: a name, a way to reach them, where they came from and how far they got. Web forms and imports create them; so can you.
- Scopes
leads:read·leads:write- Plan
- Sales hub
- Events
lead.*
status and source accept the built-in values below and any the workspace has added in the app. score is computed in Nextora and cannot be written.
Attributes
Unique identifier of the lead.
- namestring
The person’s name.
Email address.
Phone number.
The company they mentioned, as free text.
- statusstring
Where the lead is in qualification. Workspaces can add their own statuses. New leads start as
new.Built in
newcontactedqualifiedproposalnegotiationwonlost The channel the lead came from. Workspaces can add their own sources.
Built in
websitereferralcold_calladvertisementsocialeventemailsmstelegramviberwhatsappinstagramotherLead score, maintained in Nextora by lead scoring and workflows.
0until scored.- owner_iduuid
The user who owns the record. On create it defaults to the API key’s owner. See Users.
- custom_fieldsobject
Custom-field values keyed by field key. Updates merge into the stored values; send
nullfor a key to clear it. See Custom fields. When the record was created (UTC).
When the record last changed (UTC).
{
"id": "a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13",
"name": "Grace Whitfield",
"email": "[email protected]",
"phone": "+44 161 496 0732",
"company_name": "Harbor Logistics",
"status": "new",
"source": "website",
"score": 0,
"owner_id": "0c4f8e2a-7b3d-4a1f-9e6c-5d2b8a1f3e47",
"custom_fields": {
"budget": 15000
},
"created_at": "2026-10-10T07:58:31Z",
"updated_at": "2026-10-10T07:58:31Z"
}Creating a lead is the one write a read-only workspace still accepts, so a website’s lead capture keeps working while billing is sorted out. Every other write answers 403 workspace_read_only until the subscription is active again.
Posting your site’s forms to the API? A Nextora web form does the same without an API key in your front end, with validation, spam protection and the form’s automations.
GET/api/v1/leads
Requires leads:read
Returns the leads the key’s owner can see, newest first. Filter on the fields below, combine them with q, and follow meta.next_cursor for more.
Query parameters
- limitinteger
Page size, from 1 to 100.
Default
50 - cursorstring
The
meta.next_cursorof the previous page. Omit it for the first page. - qstring
Search by name.
- sortenum
The field to sort by. Any other value is a
400 validation_failed.One of
created_atupdated_atnamestatusscoreDefault
created_at - orderenum
Sort direction.
One of
ascdescDefault
desc - filterstring (JSON)
An advanced filter: conditions joined with
andoror. See the JSON filter.
Filters
Add ?field=value or ?field[operator]=value — operators.
- namestring
Exact match.
[like]matches a case-insensitive substring. - emailstring
Exact match.
[like]matches a case-insensitive substring. - statusstring
Exact match.
[like]matches a case-insensitive substring.Built in
newcontactedqualifiedproposalnegotiationwonlost - sourcestring
Exact match.
[like]matches a case-insensitive substring.Built in
websitereferralcold_calladvertisementsocialeventemailsmstelegramviberwhatsappinstagramother - owner_iduuid
Exact match, or several IDs with
[in]. - company_namestring
Exact match.
[like]matches a case-insensitive substring. - created_atdate-time
An ISO 8601 timestamp. Use a range:
[gt],[gte],[lt],[lte]. - updated_atdate-time
An ISO 8601 timestamp. Use a range:
[gt],[gte],[lt],[lte].
Returns
A list of lead objects and meta. meta.next_cursor is null on the last page.
curl -G https://acme.nextora.co/api/v1/leads \
-H "Authorization: Bearer $NEXTORA_API_KEY" \
-d status=new \
-d 'created_at[gte]=2026-10-01T00:00:00Z' \
-d limit=20{
"data": [
{
"id": "a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13",
"name": "Grace Whitfield",
"email": "[email protected]",
"phone": "+44 161 496 0732",
"company_name": "Harbor Logistics",
"status": "new",
"source": "website",
"score": 0,
"owner_id": "0c4f8e2a-7b3d-4a1f-9e6c-5d2b8a1f3e47",
"custom_fields": {
"budget": 15000
},
"created_at": "2026-10-10T07:58:31Z",
"updated_at": "2026-10-10T07:58:31Z"
}
],
"meta": {
"limit": 20,
"has_more": false,
"next_cursor": null
}
}POST/api/v1/leads
Requires leads:write
Creates a lead and runs the workflows that react to new leads, as for a lead created in the app. Works in a read-only workspace too.
Body parameters
The person’s name.
Email address.
Phone number.
The company they mentioned, as free text.
- statusstring
Where the lead is in qualification. Workspaces can add their own statuses. New leads start as
new.Built in
newcontactedqualifiedproposalnegotiationwonlostDefault
new The channel the lead came from. Workspaces can add their own sources.
Built in
websitereferralcold_calladvertisementsocialeventemailsmstelegramviberwhatsappinstagramother- owner_iduuid
The user who owns the record. On create it defaults to the API key’s owner. See Users.
- custom_fieldsobject
Custom-field values keyed by field key. Updates merge into the stored values; send
nullfor a key to clear it. See Custom fields.
Returns
The new lead, with 201 Created.
curl -X POST https://acme.nextora.co/api/v1/leads \
-H "Authorization: Bearer $NEXTORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Grace Whitfield",
"email": "[email protected]",
"phone": "+44 161 496 0732",
"company_name": "Harbor Logistics",
"source": "website",
"custom_fields": {
"budget": 15000
}
}'{
"data": {
"id": "a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13",
"name": "Grace Whitfield",
"email": "[email protected]",
"phone": "+44 161 496 0732",
"company_name": "Harbor Logistics",
"status": "new",
"source": "website",
"score": 0,
"owner_id": "0c4f8e2a-7b3d-4a1f-9e6c-5d2b8a1f3e47",
"custom_fields": {
"budget": 15000
},
"created_at": "2026-10-10T07:58:31Z",
"updated_at": "2026-10-10T07:58:31Z"
}
}GET/api/v1/leads/{id}
Requires leads:read
Returns one lead by ID.
Path parameters
The lead’s ID.
Returns
The lead. 404 not_found when it does not exist or the key’s owner cannot see it.
curl https://acme.nextora.co/api/v1/leads/a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13 \
-H "Authorization: Bearer $NEXTORA_API_KEY"{
"data": {
"id": "a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13",
"name": "Grace Whitfield",
"email": "[email protected]",
"phone": "+44 161 496 0732",
"company_name": "Harbor Logistics",
"status": "new",
"source": "website",
"score": 0,
"owner_id": "0c4f8e2a-7b3d-4a1f-9e6c-5d2b8a1f3e47",
"custom_fields": {
"budget": 15000
},
"created_at": "2026-10-10T07:58:31Z",
"updated_at": "2026-10-10T07:58:31Z"
}
}PATCH/api/v1/leads/{id}
Requires leads:write
Changes the fields you send and leaves the rest as they are. PUT does the same as PATCH.
Path parameters
The lead’s ID.
Body parameters
- namestring
The person’s name.
Email address.
Phone number.
The company they mentioned, as free text.
- statusstring
Where the lead is in qualification. Workspaces can add their own statuses. New leads start as
new.Built in
newcontactedqualifiedproposalnegotiationwonlost The channel the lead came from. Workspaces can add their own sources.
Built in
websitereferralcold_calladvertisementsocialeventemailsmstelegramviberwhatsappinstagramother- owner_iduuid
The user who owns the record. On create it defaults to the API key’s owner. See Users.
- custom_fieldsobject
Custom-field values keyed by field key. Updates merge into the stored values; send
nullfor a key to clear it. See Custom fields.
Returns
The updated lead.
curl -X PATCH https://acme.nextora.co/api/v1/leads/a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13 \
-H "Authorization: Bearer $NEXTORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "qualified",
"custom_fields": {
"budget": 18000
}
}'{
"data": {
"id": "a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13",
"name": "Grace Whitfield",
"email": "[email protected]",
"phone": "+44 161 496 0732",
"company_name": "Harbor Logistics",
"status": "qualified",
"source": "website",
"score": 0,
"owner_id": "0c4f8e2a-7b3d-4a1f-9e6c-5d2b8a1f3e47",
"custom_fields": {
"budget": 18000
},
"created_at": "2026-10-10T07:58:31Z",
"updated_at": "2026-10-10T10:44:19Z"
}
}DELETE/api/v1/leads/{id}
Requires leads:write
Moves the lead to the workspace Trash, as deleting it in the app does. It disappears from lists; restore it to bring it back.
Path parameters
The lead’s ID.
Returns
{ "data": { "id": "…", "deleted": true } }. 404 not_found when there is nothing to delete.
curl -X DELETE https://acme.nextora.co/api/v1/leads/a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13 \
-H "Authorization: Bearer $NEXTORA_API_KEY"{
"data": {
"id": "a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13",
"deleted": true
}
}POST/api/v1/leads/{id}/restore
Requires leads:write
Brings a lead back from Trash, with its fields and links as they were.
Path parameters
The lead’s ID.
Returns
The restored lead.
curl -X POST https://acme.nextora.co/api/v1/leads/a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13/restore \
-H "Authorization: Bearer $NEXTORA_API_KEY"{
"data": {
"id": "a7c9e1b3-5f2d-4a6c-8e9b-2d4f6a8c0e13",
"name": "Grace Whitfield",
"email": "[email protected]",
"phone": "+44 161 496 0732",
"company_name": "Harbor Logistics",
"status": "new",
"source": "website",
"score": 0,
"owner_id": "0c4f8e2a-7b3d-4a1f-9e6c-5d2b8a1f3e47",
"custom_fields": {
"budget": 15000
},
"created_at": "2026-10-10T07:58:31Z",
"updated_at": "2026-10-10T07:58:31Z"
}
}