> For the complete documentation index, see [llms.txt](https://docs.takionapi.tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.takionapi.tech/start.md).

# Interacting with our APIs

## API Key

You need an API key to call any endpoint. Request a trial key [via Discord](https://takionapi.tech/discord) or [purchase a plan](https://takionapi.tech/pricing).

A key looks like this:

```
TAKION_API_XXXXXXXX
```

## Endpoints <a href="#endpoints" id="endpoints"></a>

Each antibot has its own subdomain, so interactions stay organized:

```
https://<vendor>.takionapi.tech      e.g. https://datadome.takionapi.tech
```

Different walls expect different parameters and return different tokens, so always check that vendor's page for the exact endpoint, request body, and response.

### Authentication

Send your key one of two ways:

**Header**

```
x-api-key: TAKION_API_XXXXXXXX
```

**Query parameter**

```
?api_key=TAKION_API_XXXXXXXX
```

### Browser Details

Our solutions are not browser-based, but they read the headers you send to build a realistic fingerprint:

* `User-Agent`
* `Sec-Ch-Ua`
* `Accept-Language`

{% hint style="success" %}
Providing accurate browser headers based on your produces more realistic tokens. If you send none, the latest chrome versions on MacOS will be used, but matching the headers you will send on the final request is strongly recommended.
{% endhint %}

### Plan Details and Status

Check your key's status two ways:

* Use [your Dashboard](https://takionapi.tech/dashboard)
* Send `GET /plan` on any Aantibot subdomain for a JSON response with your plan details

## Get plan status

> Returns the current status of the authenticated API key — plan name, request usage against your quota, and validity. Use it to monitor consumption in real time.<br>

```json
{"openapi":"3.0.3","info":{"title":"Takion API — Plan status","version":"1.0.0"},"servers":[{"url":"https://{vendor}.takionapi.tech","description":"Any antibot subdomain exposes /plan.","variables":{"vendor":{"default":"datadome","description":"The antibot subdomain to query (datadome, incapsula, geetest, perimeterx, castle, nudata, cognito, akamai, cloudflare, hcaptcha).\n"}}}],"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key"},"ApiKeyQuery":{"type":"apiKey","in":"query","name":"api_key"}},"schemas":{"Plan":{"type":"object","description":"Your plan details. The field names below are representative — confirm them against a live `/plan` response and adjust before publishing.\n","properties":{"valid":{"type":"boolean","description":"Whether the key is currently active and within its limit."},"plan":{"type":"string","description":"The subscription tier name."},"requests_used":{"type":"integer","description":"Requests consumed in the current period."},"requests_limit":{"type":"integer","description":"Total requests included in the current period."},"resets_at":{"type":"string","format":"date-time","nullable":true,"description":"When the usage counter resets (null for non-cyclic plans)."}},"additionalProperties":true},"Error":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message."}}}}},"paths":{"/plan":{"get":{"operationId":"getPlan","summary":"Get plan status","description":"Returns the current status of the authenticated API key — plan name, request usage against your quota, and validity. Use it to monitor consumption in real time.\n","responses":{"200":{"description":"Plan details for the authenticated key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plan"}}}},"401":{"description":"Invalid API key — the key is wrong, expired, or over its request limit.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

### Error Codes

* **400 - Invalid Input Parameters**: Review the data provided; there’s an issue with it.
* **401 - Invalid API Key**: The API key is invalid, expired, or the request limit has been exceeded.
* **500 - Internal Server Error**: Something unexpected occurred on our end. Contact us for support.
