Skip to main content
POST
Automatic metadata mappingAny keys in the request body that are not core lead columns (first_name, last_name, email, phone, source, company, title, city, date_of_birth, external_id, assigned_to, workflow_id, campaign_id, tags, force_first_message, force_first_channel, skip_first_message) will automatically be mapped into the metadata object. This means you can pass extra fields at the top level without explicitly wrapping them in metadata.For example, sending { "first_name": "Tony", "edad": 35, "broker": "Tony" } is equivalent to { "first_name": "Tony", "metadata": { "edad": 35, "broker": "Tony" } }.If you provide both top-level extra keys and a metadata object, they will be merged, with explicit metadata values taking precedence.
Importing leads that already have an ownerSend assigned_to with the team member’s user ID — get it from GET /team, where each member’s id is the value to use. The owner must be an active member of your account; anything else is rejected with 400.Assigning an owner is independent from workflow_id: workflow_id picks the AI agent that works the lead, assigned_to records which person owns it.

Authorizations

X-API-Key
string
header
required

API key for authentication. Keys are prefixed with nxr_live_.

Body

application/json
first_name
string
required

Lead's first name

Example:

"John"

last_name
string

Lead's last name

Example:

"Doe"

email
string<email>

Lead's email address

Example:

"john@example.com"

phone
string

Lead's phone number (required if assigning to a workflow with call steps)

Example:

"+1234567890"

metadata
object

Arbitrary key-value data specific to your organization. Use this to store any custom information about the lead (e.g., age, salary range, assigned broker, lead status, notes). There is no enforced schema — send any keys and values you need. Values can be strings, numbers, or booleans.

Example:
workflow_id
string<uuid>

Workflow ID to assign the lead to. Use GET /workflows to list available workflows.

Example:

"123e4567-e89b-12d3-a456-426614174000"

campaign_id
string<uuid>

Campaign ID to tag the lead with (optional). Use GET /campaigns to list available campaigns.

Example:

"123e4567-e89b-12d3-a456-426614174001"

force_first_message
object

Override the first outreach with a custom message. Requires workflow_id. The rest of the cadence sequence continues normally from the second touchpoint.

assigned_to
string<uuid> | null

ID of the team member who owns this lead. Must be an active member of your account — use GET /team to list them and copy the id field. Rejected with 400 otherwise.

Example:

"123e4567-e89b-12d3-a456-426614174002"

source
string
default:api
company
string | null
title
string | null
city
string | null
date_of_birth
string<date> | null
external_id
string | null
tags
string[]
do_not_contact
boolean
default:false

When true, creates or updates the lead without workflow enrollment.

SMS consent disclosure and evidence. Invalid evidence rejects the lead.

WhatsApp consent disclosure and evidence. Invalid evidence rejects the lead.

move
boolean
default:false

When true, deactivates other active workflow runs before enrollment.

force_first_channel
enum<string>

Pins the first channel and can trigger immediate outreach. Cannot be combined with force_first_message.

Available options:
whatsapp,
imessage,
call,
email
skip_first_message
boolean

Suppress the workflow's first outbound message when supported by enrollment.

Response

An existing identity was matched and merged.

success
enum<boolean>
required
Available options:
true
lead
object
required
existed
boolean
workflow_run
any

Documented top-level response field.

workflow_run_skipped
any

Documented top-level response field.

moved_from
any

Documented top-level response field.

force_first_message
any

Documented top-level response field.

force_first_channel
any

Documented top-level response field.

Documented top-level response field.

Documented top-level response field.

warning
any

Documented top-level response field.

Last modified on September 8, 2026