DealSleek API · Leads

Preview

Create Lead

Add a new lead from an inbound signal. Captures contact + first stage.

POST/api/v1/leads/dispatch

Authorization

Minimum role
Sales repThe caller must hold this role or a higher one.
Action
CREATE_LEAD

Headers

  • AuthorizationstringRequired

    Access token of the signed-in user, as a Bearer token. It identifies the user, their role and the workspace.

  • X-CQRS-ActionstringRequired

    Names the command to run. Must be CREATE_LEAD for this endpoint.

  • Content-TypestringRequired

    Always application/json.

  • X-Idempotency-KeystringOptional

    A key you choose that is unique to this attempt. A command repeated with the same key is not applied a second time.

  • X-Correlation-IdstringOptional

    Your own identifier for the request. Returned in the x-correlation-id response header; generated when you leave it out.

Request body

  • emailemailRequired

    No description yet.

  • first_namestringRequired

    May arrive blank from a form that only collected an address; the executor derives one from the email rather than refusing the lead. Still guaranteed non-blank on the way out — see execute_create_lead.

  • last_namestringRequired

    No description yet.

    minimum length 1
  • routing_mechanismenumRequired

    No description yet.

    Allowed values
    • GEOGRAPHIC
    • COGNITIVE_LIQUIDITY
    • PSYCHOLOGICAL_AFFINITY
  • tenant_iduuidRequired

    No description yet.

  • assigned_rep_iduuid or nullOptional

    Optional representative assigned to the lead during creation.

  • company_namestring or nullOptional

    No description yet.

  • custom_fieldsanyOptional

    Tenant-defined field values, keyed by LeadCustomFieldDef.key. Rides the event AND projects to leads.custom_fields — same path as enrichment_snapshot, so a custom answer is as durable and as queryable as a platform one.

  • enrichment_snapshotanyOptional

    No description yet.

  • initial_activationobject or nullOptional

    Optional initial lifecycle activation (routing, sequence enrollment, cryosleep, or disqualification).

    6 child fields
    • pathenumRequired

      No description yet.

      Allowed values
      • enroll
      • cryo
      • discovery
      • disqualify
      enroll
      Route + start the lifecycle (default), then enroll into a sequence.
      cryo
      Park in cryo-sleep until a wake signal fires (HIBERNATE_LEAD).
      discovery
      Keep as a finder discovery — no lead is created (RECORD_DISCOVERY).
      disqualify
      Close out with a BANT category + reason (DISQUALIFY_LEAD).
    • cryo_wake_triggerenum or nullOptional

      No description yet.

      Allowed values
      • FUNDING_ROUND
      • EXECUTIVE_CHANGE
      • COMPETITOR_CONTRACT_EXPIRING
      • SEMANTIC_WEB_SIGNAL
      • INBOUND_ENQUIRY
    • disqualification_categoryenum or nullOptional

      No description yet.

      Allowed values
      • BUDGET
      • AUTHORITY
      • NEED
      • TIMING
      • OTHER
    • disqualification_reasonstring or nullOptional

      No description yet.

    • rep_iduuid or nullOptional

      No description yet.

    • sequence_iduuid or nullOptional

      No description yet.

  • initial_consentobject or nullOptional

    Optional initial consent grant recorded atomically with lead creation.

    4 child fields
    • channelsarray of enumRequired

      No description yet.

      Allowed values
      • EMAIL
      • SMS
      • PHONE
      • LINKEDIN
      • PROGRAMMATIC_AD
      • AI_OUTREACH
      • POSTAL
      minimum items 1
    • evidence_refstringRequired

      No description yet.

      minimum length 1
    • jurisdictionobjectRequired

      No description yet.

      2 child fields
      • countrystringRequired

        ISO 3166-1 alpha-2 ("US", "DE", "BD").

      • subRegionstringRequired

        Sub-region for split regimes ("US-CA", "DE-BY"). Empty = whole country.

    • expires_atdate-time or nullOptional

      No description yet.

  • lifecycle_stageenum or nullOptional

    Lifecycle stage (e.g. Lead, MQL). Defaults to Lead.

    Allowed values
    • SUBSCRIBER
    • LEAD
    • MARKETING_QUALIFIED_LEAD
    • SALES_ACCEPTED_LEAD
    • SALES_QUALIFIED_LEAD
    • OPPORTUNITY
    • CUSTOMER
    • EVANGELIST
  • phonestring or nullOptional

    No description yet.

  • scorenumber or nullOptional

    No description yet.

  • score_overrideanyOptional

    No description yet.

  • sourceenum or nullOptional

    Acquisition source (attribution). Optional — defaults to Direct for manual creation; the finder/import paths pass their own.

    Allowed values
    • Direct
    • Email Discovery
    • LinkedIn
    • Webinar
    • Referral
    • Google Ads
    • Meta Ads
    • LinkedIn Ads
    • Import
    • Web Form
    • Inbound Email
    Import
    Bulk intake (CSV / paste). Distinct from Direct on purpose: an imported cohort has no first-party interaction behind it, so attribution, scoring priors and outreach eligibility should all be able to tell it apart from a lead who came to us.
    Web Form
    Our own site's form, posted to POST /intake/{sourceKey}.
    Inbound Email
    Released from a reviewed capture of mail that arrived in a rep's connected mailbox (BYOE). Forced by the release executor from the capture source — never taken from the reviewer's payload.
  • stateenum or nullOptional

    State of the lead (e.g. Discovered, Engaged). Defaults to Discovered. Create-time whitelist: only Discovered/Engaged are accepted — a lead cannot be born terminal (Converted/CryoSleep/Resurrected).

    Allowed values
    • DISCOVERED
    • ENGAGED
    • CRYO_SLEEP
    • RESURRECTED
    • CONVERTED
    • DISQUALIFIED

Response

Status 202. The command was applied. The body reports the outcome and, where the command changes a record, that record's new state.

  • successbooleanRequired

    true when the command was applied.

  • error_messagestringRequired

    Empty when the command was applied.

  • projected_stateobjectOptional

    The record as it stands after the command.

  • event_payloadobjectOptional

    The event the command recorded.

  • insightsarray of objectOptional

    Advisory notes about the result. Each has a code, a message and an impact number.

Errors

Every error carries an HTTP status. Where it also carries a code, branch on the code, not on the message.

  • 400X-CQRS-Action is missing or names a command this route does not accept. Send CREATE_LEAD.
  • 400DOMAIN_ROUTINGThe body is not a valid command. Check the required fields and their types.
  • 401The access token is missing, expired or not valid.
  • 401L1_AUTHThe caller's role is below rep or the caller has no access to this record.
  • 403L1_POLICYA business rule refused the command. The message names the rule.
  • 409L1_IDEMPOTENCYA command with this idempotency key was already applied.
  • 409CONFLICTThe command would duplicate a record that must be unique.
  • 500L3_COMMITThe command was valid but could not be saved.
Generated from the API contract · revision 49d871e9cf4ff307