API DOCS

Build on the Enricher API

One REST API for company websites and verified emails. JSON in, JSON out, one bearer header. The full machine-readable contract is the OpenAPI 3.1 spec at /openapi.yaml; import that URL straight into ChatGPT Actions, Postman, or any OpenAPI client to generate calls. Coding agents should read AGENTS.md.

BASE URL · https://api.potarix.com/enricher
/ 00 - QUICKSTART

Get started in 30 seconds.

Two calls: sign up to get a ptk_live_ key with 25 free trial credits, then run your first lookup. No card, no browser, no waiting.

quickstart.sh
# 1. Sign up -> get a key + 25 free trial credits (no browser).
curl -X POST https://api.potarix.com/enricher/auth/signup \
  -H "Content-Type: application/json" \
  -d '{ "email": "you@company.com", "password": "a-strong-password" }'
# -> { "api_key": "ptk_live_...", "credits_remaining": 25 }

# 2. First call, using that key.
curl -X POST https://api.potarix.com/enricher/find-website \
  -H "Authorization: Bearer ptk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "company_name": "Stripe Inc." }'
# -> { "website_url": "https://stripe.com", "confidence": 0.99, "credits_remaining": 23 }
/ 01 - AUTH

Authenticate with a bearer key.

Every billable and account endpoint takes an API key that starts with ptk_live_, sent as Authorization: Bearer ptk_live_.... This is a bearer API key, not OAuth: no callback, no token refresh. Mint one headlessly with POST /auth/signup (new account, 25 free trial credits) or POST /auth/api-keys (existing account). Both take { "email", "password" } and return the key once. Never embed a key in client-side code; rotate it from Settings if exposed. Full auth reference: auth.md.

auth.sh
# Mint a key headlessly (no browser):
curl -X POST https://api.potarix.com/enricher/auth/signup \
  -H "Content-Type: application/json" \
  -d '{ "email": "you@company.com", "password": "a-strong-password" }'
# -> { "api_key": "ptk_live_...", "credits_remaining": 25 }

# Send it on every later call:
#   Authorization: Bearer ptk_live_...
/ 02 - ENDPOINTS

Six endpoints. One auth header.

ENDPOINTINPUTRETURNSCOST
POST /find-websitecompany_name (+ optional context)website_url + confidence + source2 credits
POST /find-email/personfull_name + domainemail + email_status + source25 credits
POST /find-email/decision-makerdomain + decision_maker_categoryname + email + linkedin_url + job_title25 credits
POST /find-email/linkedinlinkedin_urlemail + name + job_title10 credits
POST /find-email/companydomainemails[] (up to 500)25 credits
POST /find-allcompany_name (+ dm_categories)website + decision_makers[] + company_emails[]sum of sub-calls
/ 03 - EXAMPLES

Copy-paste curl.

lookup.sh
# Website lookup (2 credits)
curl -X POST https://api.potarix.com/enricher/find-website \
  -H "Authorization: Bearer ptk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "company_name": "Stripe Inc." }'

# Decision-maker email (25 credits)
curl -X POST https://api.potarix.com/enricher/find-email/decision-maker \
  -H "Authorization: Bearer ptk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "domain": "stripe.com", "decision_maker_category": "ceo" }'
response.jsonapplication/json
{
  "name": "Patrick Collison",
  "email": "patrick@stripe.com",
  "linkedin_url": "https://linkedin.com/in/patrickcollison",
  "job_title": "Co-founder & CEO",
  "email_status": "verified",
  "source": "anymailfinder",
  "cached": false,
  "credits_remaining": 4082
}

Every response includes cached and credits_remaining. Whiffed and repeat lookups are free. A 402 means out of credits: call POST /billing/topup with { "tier_key": "5k" } then retry. Full reference: llms-full.txt.