On this page
Credits & rate limits
Credits
| Action | Credits |
|---|---|
POST /campaigns/:campaignId/leads when a lead is created | 1 (normal lead credits) |
POST /campaigns/:campaignId/leads/batch per successfully created lead | 1 (summed in creditsCharged) |
| Duplicate / excluded / validation soft-fail / insufficient / failed (no insert) | 0 |
PATCH …/leads/:leadId, POST …/leads/batch-update, POST …/leads/batch-delete | 0 (delete does not refund insert credits) |
POST /campaigns/lookalike | Lookalike allowance (reserved at launch; unused refunded). Request-log creditsCharged stays 0 |
Search, lookup, send, start, pause, all GETs (including /activity, /insights/overview) | 0 |
Insufficient normal credits → 403 insufficient_credits. Insufficient Lookalike → 403 insufficient_lookalike_credits.
Global rate limit
All /public/v1/* routes: 120 requests / minute per API key.
| Route class | Extra limit |
|---|---|
POST .../leads | 60 / minute |
POST .../leads/batch | 10 / minute (max 100 items) |
POST .../leads/batch-update | 6 / minute (max 100 items) |
POST .../leads/batch-delete | 10 / minute (max 100 items) |
PATCH .../leads/:id | 60 / minute |
POST .../start, POST .../pause | 30 / minute |
POST /inbox/messages | 10 / minute |
POST /linkedin/profiles/lookup | 5 / minute per key; 1 / 20s per account; 80/day classic or 150/day Sales Nav |
POST /linkedin/search | 6 / minute per key; 1 page / 15s per account; daily people quota shared with in-app search (1000 / 1500 SN) |
POST /campaigns/lookalike | 6 / minute per key |
429 responses include Retry-After and error.details.retryAfterSeconds.
Prefer depth: basic on lookup. Search limit: max 50 classic / 100 Sales Nav.
Idempotency
For POST .../leads, POST .../leads/batch, POST .../leads/batch-update, POST .../leads/batch-delete, POST /inbox/messages, and POST /campaigns/lookalike:
Idempotency-Key: <opaque-string-max-128>
Same key + same body → replay stored success (24h). Same key + different body, or request still in flight → 409 conflict.
If we cannot record the key (a transient failure on our side), the request is not performed and you get 503 upstream_unavailable saying nothing happened — retry the same key. We would rather fail than risk sending a duplicate message or charging a second credit.
For add-leads batch, the key is only retained when at least one item is created, duplicate, or excluded (so all-insufficient / all-validation retries work after a top-up). For batch-update, persist when summary.updated > 0. For batch-delete, persist when summary.deleted > 0.
Request size
Request bodies are capped at 128 KiB. Larger bodies get 413 validation_error with error.details.maxBytes.