# Create a key

`POST https://api.llm.buzz/api/v1/keys`

Creates an inference key of your own. The answer, 201, carries the key object in `data` and the key itself in `key`, which no later answer repeats. OpenRouter's other create fields, such as `include_byok_in_limit` and `workspace_id`, are accepted and ignored, except `external.api_key`, which is a 400: llm.buzz issues its own keys.

Authentication: a management key, created on the console's Keys page, as `Authorization: Bearer KEY`; the samples read it from `$LLM_BUZZ_MANAGEMENT_KEY`.

## Body

- `name` (string, required): 1 to 64 characters.
- `limit` (number): A spending limit in US dollars, at most nine decimal places; `null` for none.
- `limit_reset` (string, one of `daily`, `weekly`, `monthly`): The limit's period in UTC, a week starting on Monday; `null` counts the key's whole life.
- `expires_at` (string): When the key expires: ISO 8601 with seconds and an offset, in the future, such as `2027-12-31T23:59:59Z`. Omitted, it never expires.

## Responses

- 201: The key object and the key.
- 400: The body is not JSON (`invalid_json`), a field or query value is invalid (`invalid_parameter`, with `metadata.param`), or a `PATCH` sets no field (`invalid_request`).
- 401: No `Authorization` header (`missing_authentication`), or the key is unknown, expired, revoked or disabled (`invalid_key`).
- 403: An inference key called a route that takes a management key. Create one on the console's Keys page.

## Example (curl)

```bash
curl -X POST https://api.llm.buzz/api/v1/keys \
  -H "Authorization: Bearer $LLM_BUZZ_MANAGEMENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "CI key",
  "limit": 5,
  "limit_reset": "monthly"
}'
```

## Example response

```json
{
  "data": {
    "hash": "...",
    "name": "CI key",
    "label": "CI key",
    "disabled": false,
    "created_at": "...",
    "updated_at": null,
    "expires_at": null,
    "last_used_at": null,
    "limit": 5,
    "limit_remaining": 5,
    "limit_reset": "monthly",
    "include_byok_in_limit": false,
    "usage": 0,
    "usage_daily": 0,
    "usage_weekly": 0,
    "usage_monthly": 0,
    "byok_usage": 0,
    "byok_usage_daily": 0,
    "byok_usage_weekly": 0,
    "byok_usage_monthly": 0,
    "creator_user_id": "...",
    "external_user": null,
    "workspace_id": "default"
  },
  "key": "exp_vk_..."
}
```
