# Quickstart

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](https://clodo.ai/api-console?tab=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

```bash
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:

```json
{
  "email": "patrick@stripe.com"
}
```

Response headers include `X-Request-Id` (a UUID per request).

## 3. Same call from Python

```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

```javascript
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](https://docs.clodo.ai/api-reference/endpoint/deep-search), enrich their emails, then draft, review, and send from your own inbox with [Outreach Emails](https://docs.clodo.ai/api-reference/endpoint/outreach-emails):

```bash
# 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](https://docs.clodo.ai/api-reference/authentication) for the full key model and what headers we accept.
- [API Base URL](https://docs.clodo.ai/api-reference/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 Accepted` and POST results to a webhook URL you specify. [Webhook Signing Secrets](https://docs.clodo.ai/guides/webhook-secrets) and [Webhook Signature Verification](https://docs.clodo.ai/guides/webhook-signing) cover wiring a receiver. [Async Polling](https://docs.clodo.ai/guides/async-polling) is the fallback when your receiver is unavailable.

## Costs in this example

5 credits per call. See [Credit Semantics](https://docs.clodo.ai/guides/credits-and-pricing) for the full table.
