Required scopes
Lead statuses
A lead moves through the following statuses:Lead sources
When creating a lead,source tells Novala where it originated:
web_form · referral · agent_chat · inbound_call · mcp · import
List leads
GET /api/v1/leads
Returns a cursor-paginated list of leads for the authenticated tenant.
Query parameters
integer
default:"25"
Maximum number of results to return.
string
Opaque cursor from the previous response’s
nextCursor field. Omit for the first page.string
Filter by lead status. One of:
new, contacted, qualifying, qualified, converted, disqualified, lost.string
Filter by the UUID of the assigned user.
Response
Paginating through all leads
TypeScript
Create a lead
POST /api/v1/leads
Creates a new lead. Use this to capture leads from external web forms, CRM integrations, or any channel that produces inbound interest.
Request body
string
required
Lead’s first name. Maximum 255 characters.
string
required
Lead’s last name. Maximum 255 characters.
string
default:"web_form"
Origin of the lead. One of:
web_form, referral, agent_chat, inbound_call, mcp, import.string
Free-text channel descriptor (for example,
"instagram" or "trade_show").string
Lead’s email address.
string
Lead’s phone number. Maximum 50 characters.
string
Name of the lead’s company. Maximum 255 characters.
string
Short description of what the lead is interested in.
string
Internal notes about the lead.
string
UUID of the user to assign this lead to.
object
Free-form attribution metadata, for example UTM parameters or ad campaign IDs.
object
Custom field key-value map. Any required custom fields your tenant has configured must be included.
Response
Returns201 Created with { "data": { lead object } }.
Example: capturing a web form submission
Get a lead
GET /api/v1/leads/{id}
Retrieves a single lead by ID.
Path parameters
string
required
UUID of the lead.
Response fields
object