Skip to main content
POST
/
contacts
/
bulk_enrich
Enrich multiple contacts
curl --request POST \
  --url https://app.prontohq.com/api/v2/contacts/bulk_enrich \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <api-key>' \
  --data '
{
  "contacts": [
    {
      "firstname": "Mathieu",
      "lastname": "Brun-Picard",
      "domain": "prontohq.com",
      "company_name": "Pronto",
      "linkedin_url": "https://www.linkedin.com/in/mathieu-brun-picard/",
      "custom": {
        "hubspot_id": "4447901"
      }
    },
    {
      "firstname": "Nicolas",
      "lastname": "Fernandez-Le Follic",
      "domain": "prontohq.com",
      "company_name": "Pronto",
      "linkedin_url": "https://www.linkedin.com/in/nicolasfernandezlefollic/",
      "custom": {
        "hubspot_id": "4447902"
      }
    }
  ],
  "webhook_url": "https://webhook.site/8b53c96f-f2cd-4c24-bc09-b3c2176d7ea8",
  "enrichment_type": [
    "email"
  ]
}
'
{
  "enrichment_id": "123e4567-e89b-12d3-a456-426614174000"
}

Documentation Index

Fetch the complete documentation index at: https://docs.prontohq.com/llms.txt

Use this file to discover all available pages before exploring further.

Enqueue up to 100 contacts for waterfall enrichment in a single request. The endpoint returns immediately with an enrichment_id for the bulk job; each contact is enriched asynchronously and results are delivered to your webhook_url as each contact completes.

Constraints

  • Minimum: 2 contacts per request. For a single contact, use the single async endpoint.
  • Maximum: 100 contacts per request.
  • A single enrichment_type applies to every contact in the batch.

Enrichment Types

Pass enrichment_type as an array containing one of:
  • ["email"] — Find and validate professional emails
  • ["phone"] — Find phone numbers (requires linkedin_url on every contact)
  • ["personal_email"] — Find personal emails (requires linkedin_url and account-level consent — see below)
Requesting personal_email requires the authenticated user to have consented to personal email enrichment in their account settings. If consent is missing the entire batch is rejected with 422 Unprocessable Entity. This consent gate is required for GDPR compliance.

Required Fields per contact

  • firstname
  • lastname
  • domain or company_name (when enrichment_type is ["email"])
  • linkedin_url (when enrichment_type is ["phone"] or ["personal_email"])

Receiving results

Provide webhook_url to receive results — we POST one payload per contact as each one finishes. The webhook payload echoes the custom fields you sent with that contact, so you can correlate results back to your records.

Credits

Credits are checked up-front for the entire batch. If your balance is insufficient the request is rejected with 422 Unprocessable Entity and no contacts are enqueued.

Authorizations

X-API-KEY
string
header
required

Your API key

Body

application/json

Bulk contact information for enrichment

contacts
object[]
required
Maximum array length: 100
enrichment_type
enum<string>[]
required

Types of enrichment to perform. Supported values: "email", "phone", "personal_email". Note: "personal_email" requires the user to have consented to personal email enrichment in their account settings (GDPR-compliant). Requests for "personal_email" or "phone" require a linkedin_url on each contact.

Maximum array length: 1
Available options:
phone,
email,
personal_email
webhook_url
string<uri>

Webhook URL to receive enrichment results

phone_country_codes
string[]

Optional. Restrict phone enrichment to phone numbers from these countries (applies to every contact in the batch). When omitted, the user's account-level default phone country codes are applied.

ISO 3166-1 alpha-2 country code (e.g. "US", "FR", "GB")

Response

Bulk enrichment request accepted. Each contact is enriched asynchronously; results are delivered via the webhook_url callback as each contact finishes.

enrichment_id
string<uuid>

The ID of the bulk enrichment job