> ## Documentation Index
> Fetch the complete documentation index at: https://docs.classify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> First classification in under a minute.

## Authenticate

Every request carries your API key as a bearer token. Keys look like `ck_...` and are shown once at creation.

```bash theme={null}
export CLASSIFY_API_KEY=ck_your_key_here
```

## Classify a URL

```bash theme={null}
curl -s -X POST https://api.classify.ai/v1/classify \
  -H "Authorization: Bearer $CLASSIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://en.wikipedia.org/wiki/Electric_vehicle"]}'
```

If the URL is in ContentGraph, classifications come back inline:

```json theme={null}
{
  "results": [{
    "url": "https://en.wikipedia.org/wiki/Electric_vehicle",
    "status": "classified",
    "classifications": [
      { "rank": 0, "distance": "0.13", "iab_code": "22",
        "iab_name": "Automotive > Auto Type > Green Vehicles" }
    ]
  }],
  "count": 1,
  "latency_ms": 8
}
```

If it isn't, you get `status: "unknown"` plus a `job_id`. Poll it:

```bash theme={null}
curl -s https://api.classify.ai/v1/jobs/JOB_ID \
  -H "Authorization: Bearer $CLASSIFY_API_KEY"
```

Jobs typically complete in seconds per URL. Each result carries a `diag` object showing exactly what was extracted from the page.

## Result statuses

| Status                           | Meaning                                                                 |
| -------------------------------- | ----------------------------------------------------------------------- |
| `classified`                     | Ranked IAB 3.1 classifications with cosine distances; lower is stronger |
| `unknown / no_match`             | Fetched and embedded, but no labeled neighbor within threshold          |
| `unknown / insufficient_content` | Too little extractable text, most commonly client-rendered JS shells    |
| `error`                          | Fetch or processing failure; `reason` names it                          |

<Note>
  Classify returns `insufficient_content` rather than a low-confidence guess. The `diag` object shows what was read so you can verify.
</Note>
