Webhooks

Lead Webhook

Ingest a lead from a form or integration (`Authorization: Bearer <webhook key>`). Upserts the lead (by email, else phone), records `phone_consent` if given, and, when speed-to-lead is on and every compliance check passes, queues an AI call (or schedules it for the next calling-window time). Every outcome is on the lead's timeline (`speed_to_lead`). Send an `Idempotency-Key` header to name the delivery (default: the body); a replay returns the first result and never calls twice.

API key access

This route has its own authentication (or none); an API key is not used here.
POST/api/v1/hooks/leads
AuthorizationBearer <token>

Workspace lead webhook key (rowh_...) from /api/v1/workspaces/current/speed-to-lead/webhook-key.

In: header

Header Parameters

Idempotency-Key?string | null

Names the delivery; replays return the stored result.

first_name?string | null
Lengthlength <= 100
last_name?string | null
Lengthlength <= 100
title?string | null
Lengthlength <= 200
email?string | null
Lengthlength <= 320
phone?string | null

E.164 with country code

Lengthlength <= 32
phone_type?PhoneType | null
Default"unknown"
linkedin_url?string | null
Lengthlength <= 500
timezone?string | null
Lengthlength <= 64
language?string | null

Spoken language (RO-253): a code such as hi or pt-BR, or a common language name; the speed-to-lead call starts in it

Lengthlength <= 35
source?string | null
Default"webhook"
Lengthlength <= 64
custom_fields?object | null

Empty Object

phone_consent?PhoneConsentIn | null

Response Body

curl -X POST "http://localhost:8000/api/v1/hooks/leads" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{}'
{
  "delivery_id": "9892f438-d31c-4ff2-bc84-146525b292ff",
  "lead_id": "9bddab70-98e6-43a9-8f32-c9788b9de0c0",
  "lead_created": true,
  "status": "disabled",
  "reasons": [
    "string"
  ],
  "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  "run_at": "2019-08-24T14:15:22Z",
  "deduplicated": true
}
Empty
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
Empty