# Poll for a device authorization key (/docs/api-reference/api/v1/auth/device/token/post)

`POST https://mmb-blurware-alpha.vercel.app/api/v1/auth/device/token`

Poll for a device authorization key

Exchanges an approved device_code for a fresh API key. While pending, responds 400 with authorization_pending.

Operation ID: `deviceToken`

OpenAPI document: https://mmb-blurware-alpha.vercel.app/openapi.json

## Authentication

Public endpoint; no bearer token is required.

## Request

### Request body — application/json (required)

```json
{
  "type": "object",
  "properties": {
    "device_code": {
      "type": "string",
      "minLength": 8
    }
  },
  "required": [
    "device_code"
  ]
}
```

## Responses

### `200` — The device was approved. The key is returned once.

**application/json**

```json
{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string"
    }
  },
  "required": [
    "apiKey"
  ]
}
```

### `400` — Not approved yet, expired, or denied.

**application/json**

```json
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "enum": [
        "authorization_pending",
        "slow_down",
        "expired_token",
        "access_denied",
        "invalid_code",
        "unauthorized",
        "service_unavailable"
      ],
      "description": "authorization_pending: keep polling. slow_down: increase the polling interval. expired_token: restart the device flow. access_denied: the request was rejected."
    }
  },
  "required": [
    "error"
  ]
}
```