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.
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.
# 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 }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.
# 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_...# 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" }'{
"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.