# Rename an API key

`PATCH /v1/keys/{key_id}`

Requires role admin or higher.

Changes only the name; the key itself keeps working. Revoked keys can be renamed too.

## Authentication

A session token: `Authorization: Bearer <session token>`, or the session cookie in the browser. Requires role `admin` or higher.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `key_id` | path | string | yes |  |

## Request body

`application/json`

```json
{
  "additionalProperties": false,
  "properties": {
    "name": {
      "maxLength": 100,
      "minLength": 1,
      "pattern": "^(?=[\\s\\S]*\\S)[^\\u0000-\\u001F\\u007F]+$",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "type": "object"
}
```

## Responses

### 200

A project API key. The secret is never returned after creation.

`application/json`

```json
{
  "additionalProperties": false,
  "description": "A project API key. The secret is never returned after creation.",
  "properties": {
    "created_at": {
      "format": "date-time",
      "type": "string"
    },
    "created_by": {
      "anyOf": [
        {
          "pattern": "^usr_[0-7][0-9a-hjkmnp-tv-z]{25}$",
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "id": {
      "pattern": "^key_[0-7][0-9a-hjkmnp-tv-z]{25}$",
      "type": "string"
    },
    "last_used_at": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "name": {
      "type": "string"
    },
    "project_id": {
      "pattern": "^prj_[0-7][0-9a-hjkmnp-tv-z]{25}$",
      "type": "string"
    },
    "revoked_at": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "scopes": {
      "items": {
        "anyOf": [
          {
            "enum": [
              "ingest:write"
            ],
            "type": "string"
          }
        ]
      },
      "type": "array"
    }
  },
  "required": [
    "id",
    "project_id",
    "name",
    "scopes",
    "created_by",
    "created_at",
    "last_used_at",
    "revoked_at"
  ],
  "type": "object"
}
```

### 401

unauthorized: no valid session, or the email is not verified.

Problem type: [unauthorized](https://docs.dlogify.com/errors/unauthorized.md).

### 403

csrf-origin-rejected: a cookie-authenticated change from an origin outside the web app. forbidden: the action requires the admin role.

Problem type: [csrf-origin-rejected](https://docs.dlogify.com/errors/csrf-origin-rejected.md).

### 404

not-found: the resource does not exist, or the caller is not a member of its organization.

Problem type: [not-found](https://docs.dlogify.com/errors/not-found.md).

### 422

validation-failed: the request does not match the schema.

Problem type: [validation-failed](https://docs.dlogify.com/errors/validation-failed.md).

### 429

rate-limited: per-user management request limit.

Problem type: [rate-limited](https://docs.dlogify.com/errors/rate-limited.md).

## Example

```bash
curl -X PATCH "https://api.dlogify.com/v1/keys/{key_id}" \
  -H "Authorization: Bearer $DLOGIFY_SESSION" \
  -H "Content-Type: application/json" \
  --data-binary @body
```

Source: https://docs.dlogify.com/api/api-keys/renameApiKey
