---
title: "Create User API Key"
description: "Create a new API key for a user."
api: "POST /api/v1/user-api-keys"
---

## Request

<ParamField header="x-stack-secret-server-key" type="string" required>
  The secret server key for authentication.
</ParamField>

<ParamField header="x-stack-admin-access-token" type="string">
  The admin access token.
</ParamField>

<ParamField header="x-stack-project-id" type="string" required>
  The project ID.
</ParamField>

<ParamField body="user_id" type="string" required>
  The identifier of the user to create the API key for.
</ParamField>

<ParamField body="description" type="string">
  A human-readable description for the API key.
</ParamField>

<ParamField body="expires_at" type="string">
  ISO 8601 timestamp of when the API key should expire. If not provided, the key does not expire.
</ParamField>

## Response

<ResponseField name="id" type="string">
  The unique identifier of the newly created API key.
</ResponseField>

<ResponseField name="description" type="string">
  The description of the API key.
</ResponseField>

<ResponseField name="user_id" type="string">
  The identifier of the user this API key belongs to.
</ResponseField>

<ResponseField name="api_key" type="string">
  The actual API key value. This is only returned once at creation time.
</ResponseField>

<ResponseField name="expires_at" type="string">
  ISO 8601 timestamp of when the API key expires, or `null` if it does not expire.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp of when the API key was created.
</ResponseField>

<Note>
  The `api_key` value is only returned in the creation response. Make sure to store it securely, as it cannot be retrieved again.
</Note>

<CodeGroup>
```bash cURL
curl -X POST 'https://api.stack-auth.com/api/v1/user-api-keys' \
  -H 'Content-Type: application/json' \
  -H 'x-stack-secret-server-key: YOUR_SECRET_SERVER_KEY' \
  -H 'x-stack-project-id: YOUR_PROJECT_ID' \
  -d '{
    "user_id": "usr_1234567890",
    "description": "My API key",
    "expires_at": "2025-12-31T23:59:59Z"
  }'
```

```json 200 Response
{
  "id": "uak_1234567890",
  "description": "My API key",
  "user_id": "usr_1234567890",
  "api_key": "uak_live_abc123def456...",
  "expires_at": "2025-12-31T23:59:59Z",
  "created_at": "2024-01-01T00:00:00Z"
}
```
</CodeGroup>
