Skip to main content
POST
Send a single request to subscribe one or more contacts or companies to real-time signal notifications. Each subscription links an entity to a webhook URL and the set of signal types you want to receive. Lusha delivers a signed JSON payload to your endpoint whenever a matching signal fires.
Your account must have a webhook secret before deliveries can be received. Generate one by calling POST /api/account/secret/regenerate and store it securely - it is shown only once.
Endpoint: POST https://api.lusha.com/api/subscriptions
You can create up to 25 subscriptions per request.

Request body

object
required
Default values applied to every subscription in the request, unless overridden per item.
string
Default subscription name prefix, applied unless a subscription item specifies its own name. Maximum 100 characters.
object[]
required
Array of subscriptions to create. Minimum 1, maximum 25 items per request (10 in development environments).

Example request

cURL

Example response

integer
Total number of subscription creation attempts.
integer
Number of subscriptions created successfully.
integer
Number of subscription creation attempts that failed.
object[]
One entry per item in the request subscriptions array, in the same order. Each entry has index and success, plus either a subscription object (on success) or an error object with code and message (on failure) - for example a DUPLICATE_SUBSCRIPTION error if the entity is already subscribed.
This endpoint supports partial success: some subscriptions in the request can be created while others fail (for example, due to a duplicate entity). Check failed and inspect results to see which items succeeded.

Webhook payload structure

When a signal fires, Lusha sends a POST request to the subscription’s webhook URL. The payload structure depends on the signal type.

Delivery headers

Lusha includes the following headers in every webhook delivery:

Required acknowledgment response

Your endpoint must respond within 10 seconds with an HTTP 2xx status and the following JSON body:
boolean
required
Must be true to confirm receipt.
string
required
ISO 8601 timestamp of when your server received the request.
string
required
The id value copied from the incoming webhook payload.
Return the acknowledgment before performing any heavy processing. Queue the payload for async handling if needed:

Delivery and retry behavior

  • Lusha retries failed deliveries up to 3 times with exponential backoff.
  • A non-2xx response or a timeout triggers the retry mechanism.
  • After all 3 retries are exhausted, the subscription is automatically disabled.
  • All delivery attempts are recorded in audit logs.
Retries do not incur additional credit charges. Each signal is charged once, at the time it is first delivered.

Error responses

Authorizations

api_key
string
header
required

Your Lusha API key. You can find this in your Lusha dashboard under API settings. Include this key in the api_key header for all requests.

Body

application/json
defaults
object
required
subscriptions
object[]
required

Array of subscriptions to create (max 25)

Required array length: 1 - 25 elements
name
string

Default subscription name prefix

Maximum string length: 100
Example:

"Contact Webhook"

Response

Subscriptions created (full or partial success)

total
integer
required
Example:

3

successful
integer
required
Example:

2

failed
integer
required
Example:

1

results
object[]
required