> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List API Keys (with Model Access Summary)

List the API keys of the current team. When `includePolicySummary=true`, each key includes a `modelAccessPolicy` summary, which is convenient for showing model access status on a list page. On page initialization, call this endpoint to get the summaries first, then query a single key's full policy as needed.

## Permissions

Returned according to the platform's existing API key read permissions: Owner / Admin can list all keys in the team; Developer and Basic members see the keys they own, within their accessible scope.

## Request Headers

<ParamField header="Authorization" type="string" required={true}>
  Bearer authentication format, for example: Bearer \{\{API Key}}.
</ParamField>

## Query Parameters

<ParamField query="includePolicySummary" type="boolean" required={false}>
  Whether to return the `modelAccessPolicy` summary for each key. Recommended to pass `true` on the frontend. When omitted or `false`, `modelAccessPolicy` may not be returned.
</ParamField>

## Response Parameters

<ResponseField name="keys" type="object[]" required={true}>
  The list of API keys.

  <Expandable title="properties" defaultOpen={true}>
    <ResponseField name="name" type="string" required={true}>
      API Key name.
    </ResponseField>

    <ResponseField name="id" type="string" required={true}>
      Numeric ID of the API key.
    </ResponseField>

    <ResponseField name="stringId" type="string" required={true}>
      The stringId of the API key, used as the path parameter for the model access policy endpoints.
    </ResponseField>

    <ResponseField name="maskedKey" type="string" required={true}>
      The masked API key, for example `sk_xxx***`. The list endpoint does not return the plaintext key; the plaintext is shown only once at creation time.
    </ResponseField>

    <ResponseField name="memberId" type="string" required={true}>
      The sub-user account ID that owns the API key.
    </ResponseField>

    <ResponseField name="uuid" type="string" required={true}>
      The UUID of the user that owns the API key.
    </ResponseField>

    <ResponseField name="expireTime" type="string" required={true}>
      Expiration time. `never` when the key never expires.
    </ResponseField>

    <ResponseField name="createTime" type="string" required={true}>
      Creation time.
    </ResponseField>

    <ResponseField name="lastUsedAt" type="int64" required={true}>
      Last used time, as a Unix timestamp in seconds. `0` if never used.
    </ResponseField>

    <ResponseField name="modelAccessPolicy" type="object" required={false}>
      Model access summary, returned only when `includePolicySummary=true`.

      <Expandable title="properties">
        <ResponseField name="mode" type="string" required={true}>
          Access mode. Possible values: `all_enabled`, `selected`.
        </ResponseField>

        <ResponseField name="allowedModelCount" type="int32" required={true}>
          Number of accessible models.
        </ResponseField>

        <ResponseField name="excludedModelCount" type="int32" required={true}>
          Number of excluded models.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash theme={"system"}
  curl --request GET \
    --url 'https://api.novita.ai/openapi/v2/user/key?includePolicySummary=true' \
    --header 'Authorization: Bearer <API_KEY>'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"system"}
  {
    "keys": [
      {
        "name": "default",
        "id": "123456",
        "stringId": "key_xxx",
        "maskedKey": "sk_xxx***",
        "memberId": "member_xxx",
        "uuid": "user_uuid_xxx",
        "expireTime": "never",
        "createTime": "2026-07-14 12:00:00",
        "lastUsedAt": 1783764000,
        "modelAccessPolicy": {
          "mode": "selected",
          "allowedModelCount": 1,
          "excludedModelCount": 0
        }
      }
    ]
  }
  ```
</ResponseExample>
