>unstuck engine
>Engine
>SignalsForty signal types, one pipeline>Waterfall enrichmentMulti-provider, ranked by reply rate>AudiencesSaved filters that update themselves
>Plays
>PLG AssistTurn free signups into enterprise pipeline>Inbound enrichmentEvery form fill, enriched and routed in seconds>ABMSurround the account, grade the buying committee
>Partners
>AgenciesPipeline as a service. With your name on top.>AdvocatesSix ways to advocate. Pick yours.
>Pricing
Book a Demo

> help

> Help index
  • 01Connecting a destination — HubSpot, Salesforce, Apollo
  • 02Field mapping
  • 03Using the Signals API
  • 04Using the Enrichment API
  • 05Using the MCP server and CLI
Contents

Help / 04 · Destinations & API

> Using the Enrichment API

A standalone reference for the Enrichment API. POST identity, get back enriched contact channels and firmographic fields. Same engine as the in-app `Enrich` button.

2 min read·Never reviewed

TL;DR: POST identity hints, get back enriched fields. Same waterfall, same credit model, programmatic. Most usage looks like { email: "..." } → { phone, linkedin_url, work_email, company }.

Endpoint

POST /enrichment
Headers:
Authorization: Bearer <UNSTUCK_API_KEY>
Content-Type: application/json

Body:
{
"email": "person@company.com",
"linkedin_url": "https://linkedin.com/in/...",
"company_domain": "company.com",
"channels": ["work_email", "personal_email", "phone", "linkedin_url"]
}

At least one identity hint required. channels is optional — defaults to all four contact channels.

Identity-only mode

Sometimes you have a name + company and want to discover an email:

POST /enrichment/discover
Body:
{
"first_name": "Chloe",
"last_name": "Walker",
"company_domain": "westmarkrobotics.com"
}

Returns the same response shape. Discovery is slower (the waterfall has to find the contact, not just confirm it) and costs more credits per success.

Response

{
"record_id": "lead_abc123",
"channels": {
"work_email": {
"value": "chloe.walker@westmarkrobotics.com",
"source": "Provider A",
"confidence": 0.94,
"enriched_at": "2026-05-26T14:30:00Z"
},
"phone": null,
"linkedin_url": {
"value": "https://linkedin.com/in/chloewalker",
"source": "Provider C",
"confidence": 0.88,
"enriched_at": "2026-05-26T14:30:00Z"
}
},
"credits_used": 5
}

null channels mean the waterfall ran but no provider returned a usable value. Per-channel metadata includes source, confidence, and timestamp.

Account enrichment

For company-level firmographics:

POST /enrichment/account
Body:
{
"domain": "westmarkrobotics.com"
}

Response:

{
"account_id": "acc_xyz789",
"fields": {
"industry": "Robotics / Hardware",
"employee_count": 240,
"revenue_band": "$50M-$100M",
"founded_year": 2018,
"hq_country": "UK",
"hq_city": "Bristol",
"tech_stack": ["Snowflake", "Okta", "Datadog"],
"funding_stage": "Series C",
"last_funding_date": "2025-09-15",
"total_raised_usd": 87000000
}
}

Bulk enrichment

For higher-volume work:

POST /enrichment/bulk
Body:
{
"records": [
{ "email": "..." },
{ "linkedin_url": "..." },
...
],
"channels": ["work_email"]
}

Up to 100 records per request. Returns an array of per-record results. Credit cost is summed across all successful enrichments.

Bulk-bulk (>100 records) is done via the bulk action UI on Leads / Accounts rather than via API — to respect rate limits and offer in-app progress tracking.

Idempotency

The single-record endpoint is idempotent on (identity, channels). Re-requesting the same record + channels returns cached values; no credits charged. Pass force: true to bypass the cache.

Verification webhook (reverse direction)

Some workspaces want to verify enriched emails before sending outbound. Configure a verification webhook in Settings → API & Webhooks → Enrichment verification. Unstuck POSTs each enriched email to your verification service; the service responds with valid: true/false. Invalid emails are marked verified: false on the record and excluded from audience destination pushes.

Rate limits

  • 100 requests per minute per workspace (single-record endpoint)
  • 20 requests per minute (bulk endpoint, max 100 records per request)
  • 10,000 total requests per day per workspace

Related

  • What enrichment is and the waterfall model
  • Enriching via API or MCP
  • Reading enrichment results and provider attribution
  • Using the Signals API
Previous03Using the Signals APIDestinations & APINext 05Using the MCP server and CLIDestinations & API

On this page

  • Endpoint
  • Identity-only mode
  • Response
  • Account enrichment
  • Bulk enrichment
  • Idempotency
  • Verification webhook (reverse direction)
  • Rate limits
  • Related

Share

> wave is here.

Schedule it.
>unstuck engine
PricingBlogContact
>unstuck engine

The B2B GTM engine. Signal-led targeting, ICP-fit pipeline.

Product

  • Pricing
  • Comparisons
  • Blog
  • Handbook
  • Help

Company

  • Contact

Legal

  • Terms
  • Privacy

© 2026 Unstuck Engine. All rights reserved.

> wave is here.

Schedule it.
>unstuck engine
PricingBlogContact
>unstuck engine

The B2B GTM engine. Signal-led targeting, ICP-fit pipeline.

Product

  • Pricing
  • Comparisons
  • Blog
  • Handbook
  • Help

Company

  • Contact

Legal

  • Terms
  • Privacy

© 2026 Unstuck Engine. All rights reserved.