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

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 a single contact for waterfall enrichment. The endpoint returns immediately with an enrichment_id and status: "pending"; the waterfall runs asynchronously in the background.

When to use this endpoint

Use the async endpoint when:
  • You can accept results via webhook, or you can poll for them later.
  • You’re enriching at scale and don’t want to hold an HTTP connection per contact.
  • You want to retain the enrichment result on the contact record for later retrieval via GET /contacts/{id}.
If you need results inline (Chrome extension, interactive UI, real-time workflow), use the synchronous endpoint instead.

Enrichment Types

Pass enrichment_type as an array containing one of:
  • ["email"] — Find and validate the professional email
  • ["phone"] — Find phone numbers (requires linkedin_url)
  • ["personal_email"] — Find a personal email (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 API responds with 422 Unprocessable Entity and the message "You can't use the personal email enrichment feature without consenting with our terms of use". This consent gate is required for GDPR compliance.

Required Fields

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

Receiving results

You have two options:
  1. Webhook — pass webhook_url in the request. We POST the final result to that URL once the waterfall completes.
  2. Polling — call GET /contacts/{id} with the returned enrichment_id. While the waterfall is running the status is pending; once it has completed (with or without data) the status flips to finished.

Custom Fields

Pass custom: { ... } in the request to attach arbitrary correlation data (e.g. your CRM record ID). The same payload is echoed back on GET /contacts/{id} and on the webhook callback.

Pricing

Each enrichment consumes credits based on the requested enrichment_type and the providers used. Check your account credits via the Account Credits endpoint.

Authorizations

X-API-KEY
string
header
required

Your API key

Body

application/json

Contact information for enrichment

firstname
string
required

First name of the contact

lastname
string
required

Last name of the contact

enrichment_type
enum<string>[]
required

Type 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 linkedin_url.

Maximum array length: 1
Available options:
phone,
email,
personal_email
company_name
string

Company name of the contact

domain
string

Company domain

linkedin_url
string<uri>

LinkedIn profile URL of the contact

webhook_url
string<uri>

Webhook URL to receive enrichment results

phone_country_codes
string[]

Optional. Restrict phone enrichment to phone numbers from these countries. 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")

custom
object

Custom fields to include with the enrichment that will be returned in the webhook (like crm id, etc.)

Response

Enrichment request accepted. The waterfall runs asynchronously; poll GET /contacts/{id} (using the returned enrichment_id) or wait for the webhook_url callback to retrieve final results.

enrichment_id
string<uuid>

The ID of the enrichment request. Use it to poll GET /contacts/{id}.

first_name
string

The contact's first name

last_name
string

The contact's last name

status
enum<string>

Always pending on creation; the waterfall runs asynchronously.

Available options:
pending
custom
object

Custom fields passed in the request