Leads
Bulk sync leads
Synchronously imports or upserts up to 100 leads in a single request. Per-row lead webhooks are suppressed; Furnace emits one lead.bulk_import.completed batch event. Supports idempotent retries with Idempotency-Key. enrolled counts every address started on this import, including an address already in this campaign. updated is how many of those had their details refreshed, including a later copy of the same email in the same request. created is a new lead row. imported is the same number as enrolled. This call does not check other campaigns.
/v1/campaigns/{id}/leads/bulkAuthorization
bearerAuth Use an account API key in the Authorization header: Authorization: Bearer f_....
In: header
Path Parameters
Campaign id.
uuidHeader Parameters
Optional idempotency key for campaign create, lead create, bulk lead imports, and person enrichment. Retries with the same key and body return the cached response.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
1 <= items <= 100curl -X POST "https://example.com/v1/campaigns/497f6eca-6276-4993-bfeb-53cbbbba6f08/leads/bulk" \ -H "Content-Type: application/json" \ -d '{ "leads": [ { "email": "jane@example.com", "first_name": "Jane", "custom_lead_data": { "company": "Acme Co", "source": "Landing Page" }, "tags": [ "Hunter", "ICP Fit" ], "email_verification": { "status": "ok", "provider": "millionverifier" } }, { "email": "max@example.com", "first_name": "Max", "custom_lead_data": { "company": "Northwind", "source": "Conference" }, "tags": [ "Apollo" ] } ] }'{ "imported": 2, "created": 2, "updated": 0, "excluded": 0, "skipped": 0, "incomplete": 0, "failed": 0, "errors": []}{ "error": { "type": "invalid_request_error", "code": "invalid_flow", "message": "Flow validation failed" }, "details": [ { "path": "nodes[1].data.variants[0].id", "code": "invalid_variant_id", "message": "Email variants must have a stable UUID id." } ]}{ "error": { "type": "authentication_error", "code": "invalid_api_key", "message": "A valid Furnace API key is required" }}{ "error": { "type": "permission_error", "code": "smartlead_read_only", "message": "Smartlead campaigns are read-only via the API" }}{ "error": { "type": "invalid_request_error", "code": "campaign_not_found", "message": "Campaign not found" }}{ "error": { "type": "rate_limit_error", "code": "rate_limit_exceeded", "message": "Rate limit exceeded for this account" }}{ "error": { "type": "api_error", "code": "internal_error", "message": "Internal server error" }}