---
search:
  tags:
    - API Keys
    - GET
seo:
  description: >-
    Returns a page of the caller's own non-revoked API keys. Requires the
    keys:manage scope. Reference for the GET /api_keys endpoint in the REST API.
sidebar:
  label: List API Keys
  badge: GET
title: List API Keys
type: openapi-operation
---
Returns a page of the caller's own non-revoked API keys. Requires the keys:manage scope.

### Endpoint

- Method and path: `GET /api_keys`
- Operation ID: `listAPIKeys`
- API reference: [GET /api_keys](/api-reference/rest/api-keys/list-api-keys)
- Complete specification: [OpenAPI (YAML)](/openapi.yml)
- Spec location (JSON Pointer): `#/paths/~1api_keys/get`

#### Authorization

- Accepted credentials: `UDX-Access-Key` header and `UDX-Access-Timestamp` header and `UDX-Access-Signature` header; or Bearer token in `Authorization`
- Details: [Authentication](/reference/authentication)

#### Parameters

```yaml
- $ref: "#/components/parameters/VersionHeader"
- $ref: "#/components/parameters/PaginationLimit"
- $ref: "#/components/parameters/PaginationPage"
- $ref: "#/components/parameters/APIKeysSort"
- $ref: "#/components/parameters/PaginationOrder"
```


#### Responses

##### `200`

The caller's API keys.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/json`

Schema:

```yaml
$ref: "#/components/schemas/APIKeysListResponse"
```

Example: No API Keys yet

```json
{
  "api_keys": [],
  "next_page_url": null
}
```

Example: Multiple keys

```json
{
  "api_keys": [
    {
      "id": "7425944046791590247",
      "name": "readonly dashboard",
      "scopes": [
        "read"
      ],
      "account_id": "6820943174116859281",
      "created_at": "2026-06-15T09:30:00.000000Z"
    },
    {
      "id": "3517456229634185646",
      "name": "trading bot",
      "scopes": [
        "read",
        "trade"
      ],
      "account_id": null,
      "created_at": "2026-06-01T12:00:00.000000Z"
    }
  ],
  "next_page_url": "/api_keys?limit=2&order=desc&page=eyJ2IjoxLCJzIjoiMjAyNi0wNi0wMVQxMjowMDowMC4wMDAwMDBaIiwiaWQiOiIzNTE3NDU2MjI5NjM0MTg1NjQ2In0&sort=created_at"
}
```

##### `400`

The request doesn't conform to this spec.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Invalid request parameters

```json
{
  "type": "urn:udx:problem:invalid-request-parameters",
  "title": "Bad Request",
  "status": 400,
  "detail": "invalid request parameters",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

Example: Unknown UDX-Version

```json
{
  "type": "urn:udx:problem:unknown-version",
  "title": "Bad Request",
  "status": 400,
  "detail": "unknown UDX-Version \"1999-01-01\"; supported versions: 2026-07-15",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `401`

No valid credential was provided.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Authentication failed

```json
{
  "type": "urn:udx:problem:invalid-authentication-credentials",
  "title": "Unauthorized",
  "status": 401,
  "detail": "invalid authentication credentials",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `403`

The credential lacks the keys:manage scope.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Insufficient permissions

```json
{
  "type": "urn:udx:problem:insufficient-permissions",
  "title": "Forbidden",
  "status": 403,
  "detail": "insufficient permissions",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `429`

The member rate limit was exceeded.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
Retry-After:
  $ref: "#/components/headers/RetryAfter"
Cache-Control:
  $ref: "#/components/headers/NoStore"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Example

```json
{
  "type": "urn:udx:problem:member-rate-limit-exceeded",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "this member has temporarily exceeded its request rate",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `500`

Something went wrong on UDX's side.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Internal server error

```json
{
  "type": "urn:udx:problem:internal-error",
  "title": "Internal Server Error",
  "status": 500,
  "detail": "internal error",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `503`

Request admission is unavailable.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
Cache-Control:
  $ref: "#/components/headers/NoStore"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Admission temporarily unavailable

```json
{
  "type": "urn:udx:problem:request-admission-unavailable",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "request admission is temporarily unavailable",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```


#### Referenced definitions

The references in the excerpts above resolve to these definitions in the complete specification.

##### `#/components/headers/VersionHeader`

```yaml
description: API version used for this response.
schema:
  type: string
  maxLength: 10
  description: A dated API version (YYYY-MM-DD).
  example: 2026-07-15
```

##### `#/components/schemas/APIKeysListResponse`

```yaml
type: object
description: A page of the caller's own API keys.
required:
  - api_keys
  - next_page_url
properties:
  api_keys:
    type: array
    maxItems: 100
    description: One page of the caller's non-revoked API keys.
    items:
      $ref: "#/components/schemas/APIKey"
  next_page_url:
    $ref: "#/components/schemas/NextPageURL"
```

##### `#/components/schemas/APIKey`

```yaml
type: object
description: An API key's metadata.
required:
  - id
  - name
  - scopes
  - created_at
properties:
  id:
    $ref: "#/components/schemas/EntityId"
  name:
    type: string
    maxLength: 200
    description: The nickname given to this key at creation.
  scopes:
    type: array
    maxItems: 7
    description: The permissions this key was granted at creation.
    items:
      $ref: "#/components/schemas/APIKeyScope"
  account_id:
    type:
      - string
      - "null"
    description: The identifier of the single account this key is restricted to or null if it's usable against every account accessible to the caller.
  created_at:
    type: string
    format: date-time
    maxLength: 40
    description: When this key was created.
```

##### `#/components/schemas/EntityId`

```yaml
type: string
minLength: 1
description: An exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.
example: "6820943174116859281"
```

##### `#/components/schemas/APIKeyScope`

```yaml
type: string
description: A permission granted to an API key.
enum:
  - accounts:manage
  - funds:transfer
  - grants:manage
  - keys:manage
  - read
  - trade
  - users:manage
```

##### `#/components/schemas/NextPageURL`

```yaml
type:
  - string
  - "null"
format: uri-reference
maxLength: 4096
pattern: ^/[^/\s#][^\s#]*$
description: Root-relative URL for the next page. Null when there are no more items.
example: /api_keys?limit=10&order=desc&page=eyJ2IjoxLCJzIjoiMjAyNi0wNi0wMVQxMjowMDowMC4wMDAwMDBaIiwiaWQiOiIzNTE3NDU2MjI5NjM0MTg1NjQ2In0&sort=created_at
```

##### `#/components/schemas/ProblemDetails`

```yaml
type: object
description: An RFC 9457 machine-readable error, returned on every non-2xx response. The response's Content-Language header identifies the language used by title and detail, and Vary includes Accept-Language.
required:
  - type
  - title
  - status
properties:
  type:
    type: string
    format: uri-reference
    maxLength: 2048
    description: A stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.
  title:
    type: string
    maxLength: 40
    example: Bad Request
    description: A localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
  status:
    type: integer
    example: 400
    description: The HTTP status code, repeated from the response itself.
  detail:
    type: string
    maxLength: 500
    example: malformed request body
    description: A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
  instance:
    type: string
    format: uri-reference
    maxLength: 100
    example: urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef
    description: An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
```

##### `#/components/headers/RetryAfter`

```yaml
description: Whole seconds to wait before retrying.
schema:
  type: integer
  minimum: 1
  description: A positive delay in whole seconds.
  example: 2
```

##### `#/components/headers/NoStore`

```yaml
description: Prevents caching this response.
schema:
  type: string
  enum:
    - no-store
  description: Always the cache directive no-store.
  example: no-store
```

##### `#/components/parameters/VersionHeader`

```yaml
name: UDX-Version
in: header
required: false
description: Dated API version (YYYY-MM-DD).
schema:
  type: string
  minLength: 10
  maxLength: 10
  description: A dated API version (YYYY-MM-DD).
  example: 2026-07-15
```

##### `#/components/parameters/PaginationLimit`

```yaml
name: limit
in: query
required: false
description: Maximum number of items to return in one page.
schema:
  type: integer
  minimum: 1
  maximum: 100
  default: 10
  description: Page size.
  example: 10
```

##### `#/components/parameters/PaginationPage`

```yaml
name: page
in: query
required: false
description: Opaque token identifying the requested page.
schema:
  type: string
  maxLength: 512
  description: An opaque pagination cursor.
  example: eyJ2IjoxLCJzIjoiMjAyNi0wNi0wMVQxMjowMDowMC4wMDAwMDBaIiwiaWQiOiIzNTE3NDU2MjI5NjM0MTg1NjQ2In0
```

##### `#/components/parameters/APIKeysSort`

```yaml
name: sort
in: query
required: false
description: Field to sort by.
schema:
  type: string
  enum:
    - created_at
    - name
  default: created_at
  description: A sortable API key field.
  example: created_at
```

##### `#/components/parameters/PaginationOrder`

```yaml
name: order
in: query
required: false
description: Sort direction. Applies to the default sort field when sort is omitted. Nulls sort last in both directions.
schema:
  type: string
  enum:
    - asc
    - desc
  default: desc
  description: Sort direction.
  example: desc
```

