Make your first API call
Go from your API key to your first enrichment response.
Three steps from zero to your first response: mint an API key, send a request, read the result.
#1. Mint an API key
Open API Console → API Keys and click Mint new key. Copy the raw secret immediately. We display it once and never store it in plaintext after that.
Keys look like ck_live_<base64>.
#2. Send your first request
curl -X POST https://api-public.clodo.ai/api/public/v1/enrich/email/ \
-H "x-api-key: ck_live_..." \
-H "Content-Type: application/json" \
-d '{
"first_name": "Patrick",
"last_name": "Collison",
"domain": "stripe.com"
}'A successful response:
{
"email": "patrick@stripe.com"
}Response headers include X-Request-Id (a UUID per request).
#3. Same call from Python
import requests
response = requests.post(
"https://api-public.clodo.ai/api/public/v1/enrich/email/",
headers={"x-api-key": "ck_live_..."},
json={
"first_name": "Patrick",
"last_name": "Collison",
"domain": "stripe.com",
},
timeout=30,
)
response.raise_for_status()
print(response.json()["email"])#3b. Same call from Node
const response = await fetch(
"https://api-public.clodo.ai/api/public/v1/enrich/email/",
{
method: "POST",
headers: {
"x-api-key": "ck_live_...",
"content-type": "application/json",
},
body: JSON.stringify({
first_name: "Patrick",
last_name: "Collison",
domain: "stripe.com",
}),
},
);
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
const { email } = await response.json();
console.log(email);#Beyond enrichment: full outbound
The API also covers outreach itself — find people with Deep Search, enrich their emails, then draft, review, and send from your own inbox with Outreach Emails:
# Draft an email (202 -> poll -> review -> approve -> it sends)
curl -X POST https://api-public.clodo.ai/api/public/v1/emails/ \
-H "x-api-key: ck_live_..." \
-H "Content-Type: application/json" \
-d '{
"to": {"email": "jackie@acme.com", "first_name": "Jackie", "company_name": "Acme"},
"instructions": "Casual note asking if she is open to a chat about our founding PM role."
}'With the default review: "required", nothing sends without your explicit approval. No webhook receiver is required — polling is first-class for these endpoints.
#What to read next
- Authentication for the full key model and what headers we accept.
- API Base URL for the endpoint surface and which host to point at.
- Per-endpoint reference for input shapes, output shapes, and credit costs.
- People Search, Deep Search, and Phone Enrichment return
202 Acceptedand POST results to a webhook URL you specify. Webhook Signing Secrets and Webhook Signature Verification cover wiring a receiver. Async Polling is the fallback when your receiver is unavailable.
#Costs in this example
5 credits per call. See Credit Semantics for the full table.