---
title: "List project API keys"
method: GET
path: "/v1/projects/{projectId}/api-keys"
tags: ["Projects"]
---

# List project API keys

`GET /v1/projects/{projectId}/api-keys`

Lists API keys scoped to the project.

## Path parameters

- `projectId` string, required — Project identifier.

## Response `200`

Project API keys

- object — Standard success response envelope.
  - `data` object, required — List of project API keys.
    - `apiKeys` object[], required — Project API keys.
      - `id` string, required — API key identifier.
      - `name` string, required — API key name.
      - `keyPrefix` string, required — API key prefix for display.
      - `role` 'api_admin' | 'api_developer' | 'api_readonly', required — API key role.
      - `environment` 'sandbox' | 'production', required — API key environment.
      - `status` 'active' | 'revoked' | 'expired' | 'deactivated', required — API key status.
      - `walletScope` 'all' | 'selected', required — Whether the key can use all wallets in scope or only explicitly selected wallets.
      - `signingWalletId` string, nullable, required — Default custody wallet bound to this API key for signing.
      - `signingWalletIds` string[], required — All custody wallet IDs bound to this API key.
      - `walletBindings` object[], required — Wallet bindings and wallet-level permission sets for this API key.
        - `walletId` string, required — Custody wallet ID attached to the API key.
        - `permissions` string[], required — Permissions allowed when this wallet is selected.
      - `policyBindings` object[], required — Policy binding summaries currently associated with this API key.
        - `id` string, required — API-key wallet policy binding ID.
        - `bindingScope` 'all' | 'selected', required — Whether this policy binding applies to every wallet or one selected wallet.
        - `walletId` string, nullable, required — Selected wallet ID when this binding is wallet-specific.
        - `custodyWalletId` string, nullable, required — Internal custody wallet row ID when this binding is wallet-specific.
        - `walletControlProfileId` string, nullable, required — Wallet control profile applied by this binding, if any.
        - `walletControlProfileRevisionId` string, nullable, required — Active wallet control profile revision applied by this binding, if any.
        - `apiKeyControlProfileId` string, nullable, required — API-key control profile applied by this binding, if any.
        - `apiKeyControlProfileRevisionId` string, nullable, required — Active API-key control profile revision applied by this binding, if any.
        - `createdAt` string, date-time, required — Policy binding creation timestamp.
        - `updatedAt` string, date-time, required — Policy binding update timestamp.
      - `lastUsedAt` string, date-time, nullable, required — Timestamp of the last key usage.
      - `expiresAt` string, date-time, nullable, required — Expiration timestamp, if set.
      - `createdAt` string, date-time, required — Creation timestamp.
  - `meta` object, required — Response metadata.
    - `requestId` string, required — Request identifier for tracing.
    - `timestamp` string, date-time, required — ISO 8601 timestamp.

## Other responses

- `401` — Error
- `403` — Error
- `404` — Error
- `500` — Error

---

[API](https://skmtc.net/solana/apis/solana-developer-platform-api.md) · [All operations](https://skmtc.net/solana/apis/solana-developer-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/solana/solana-developer-platform-api/revisions/672b1916ba61/schema)
