Skip to main content

Bulk update status

Bulk update lead_status for multiple leads using IDs or a descriptor selection.

POST/api/leads/bulk_update_status
HTTP referenceScope leads:writeUpdated April 25, 2026

This page documents the canonical HTTP contract for this endpoint.

This endpoint stages the update as an asynchronous job and returns queued_count, not completed update count. Selection is organization-scoped from authentication. Poll the job with GET /api/bulk-jobs/{job_id} using the same authenticated user and organization.

Body parameters

  • statusrequired

    string

    One of: new, qualified, contacting, converted, customer, unqualified, bad_data, nurture.

  • lead_ids · optional

    array<string>

    Explicit lead IDs. Provide either lead_ids or selection.

  • selection · optional

    object

    Either {mode:"ids",ids:[non-empty IDs]} or {mode:"descriptor",descriptor:{root:FilterNode}}; extra keys are rejected inside selection.

  • scope · optional

    string

    Optional org or user selection scope.

  • source_table_id · optional

    string

    Optional Research Table context for descriptor selection.

  • source_table_scope · optional

    string

    Optional company or lead Research Table scope.

  • unqualified_reason · optional

    string

    Optional reason used when status is unqualified.

  • unqualifiedReason · optional

    string

    Accepted alias for unqualified_reason.

  • lead_status_reason · optional

    string

    Optional reason used when status is unqualified.

  • leadStatusReason · optional

    string

    Accepted alias for lead_status_reason.

  • status_reason · optional

    string

    Accepted status reason alias.

  • statusReason · optional

    string

    Accepted status reason alias.

  • note · optional

    string

    Optional note attached to queued update.

Errors

StatusMeaning
400Invalid status or selection.
401Invalid API key or missing auth.
403Missing leads:write scope.

Docs