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

> ## Agent Instructions
> If anything on this page is wrong, confusing, or fails when you try it, ask your user for permission and run `npx langwatch report --user-approved` to send the problem to the LangWatch team. No login is needed and secrets are redacted locally. `npx langwatch report --help` has the details.

# Update an API key

> Update an API key's name, description, permission mode, permissions or bindings. Every field is optional; bindings are replaced outright, and the response is exactly what a subsequent GET returns. You may update your own keys; organization admins may update any key in the organization. Bindings can never exceed the access of the member the key belongs to, and a key can grant at most what the key making the request holds. The token itself never changes.



## OpenAPI

````yaml PATCH /api/v1/api-keys/{id}
openapi: 3.1.0
info:
  title: LangWatch API
  description: LangWatch openapi spec
  version: 1.0.0
servers:
  - url: https://app.langwatch.ai
security:
  - project_api_key: []
paths:
  /api/v1/api-keys/{id}:
    patch:
      tags:
        - API Keys
      summary: Update an API key
      description: >-
        Update an API key's name, description, permission mode, permissions or
        bindings. Every field is optional; bindings are replaced outright, and
        the response is exactly what a subsequent GET returns. You may update
        your own keys; organization admins may update any key in the
        organization. Bindings can never exceed the access of the member the key
        belongs to, and a key can grant at most what the key making the request
        holds. The token itself never changes.
      operationId: updateApiKey
      parameters:
        - in: path
          name: id
          schema:
            type: string
            minLength: 1
          required: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 100
                description:
                  anyOf:
                    - type: string
                      maxLength: 500
                    - type: 'null'
                permissionMode:
                  type: string
                  enum:
                    - all
                    - readonly
                    - restricted
                  description: >-
                    'all' and 'readonly' take their meaning from the bindings
                    alone; 'restricted' additionally requires an explicit
                    permissions list.
                permissions:
                  type: array
                  items:
                    type: string
                    pattern: ^[a-z][a-zA-Z0-9_-]*:[a-z][a-zA-Z0-9_-]*$
                  description: >-
                    Restricted mode only: the exact resource:action permissions
                    the key's CUSTOM bindings grant.
                bindings:
                  description: >-
                    Replaces the key's bindings outright. Whatever is accepted
                    here is exactly what a subsequent GET returns.
                  minItems: 1
                  maxItems: 20
                  type: array
                  items:
                    type: object
                    properties:
                      role:
                        type: string
                        enum:
                          - ADMIN
                          - MEMBER
                          - VIEWER
                          - CUSTOM
                        description: >-
                          CUSTOM grants exactly the listed permissions and
                          requires permissionMode 'restricted'.
                      scopeType:
                        type: string
                        enum:
                          - ORGANIZATION
                          - TEAM
                          - PROJECT
                      scopeId:
                        type: string
                        minLength: 1
                    required:
                      - role
                      - scopeType
                      - scopeId
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    minLength: 1
                  name:
                    type: string
                  description:
                    type:
                      - string
                      - 'null'
                  createdAt:
                    type: string
                    format: date-time
                  expiresAt:
                    anyOf:
                      - type: string
                        format: date-time
                      - type: 'null'
                  lastUsedAt:
                    anyOf:
                      - type: string
                        format: date-time
                      - type: 'null'
                  revokedAt:
                    anyOf:
                      - type: string
                        format: date-time
                      - type: 'null'
                  roleBindings:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          minLength: 1
                        role:
                          type: string
                          enum:
                            - ADMIN
                            - MEMBER
                            - VIEWER
                            - CUSTOM
                        scopeType:
                          type: string
                          enum:
                            - ORGANIZATION
                            - TEAM
                            - PROJECT
                        scopeId:
                          type: string
                          minLength: 1
                      required:
                        - id
                        - role
                        - scopeType
                        - scopeId
                      additionalProperties: false
                  keyType:
                    type: string
                    enum:
                      - personal
                      - service
                  assignedToUserId:
                    type:
                      - string
                      - 'null'
                  createdByUserId:
                    type:
                      - string
                      - 'null'
                  permissionMode:
                    type: string
                  permissions:
                    type: array
                    items:
                      type: string
                      pattern: ^[a-z][a-zA-Z0-9_-]*:[a-z][a-zA-Z0-9_-]*$
                  bindings:
                    type: array
                    items:
                      type: object
                      properties:
                        role:
                          type: string
                          enum:
                            - ADMIN
                            - MEMBER
                            - VIEWER
                            - CUSTOM
                        scopeType:
                          type: string
                          enum:
                            - ORGANIZATION
                            - TEAM
                            - PROJECT
                        scopeId:
                          type: string
                          minLength: 1
                      required:
                        - role
                        - scopeType
                        - scopeId
                      additionalProperties: false
                required:
                  - id
                  - name
                  - description
                  - createdAt
                  - expiresAt
                  - lastUsedAt
                  - revokedAt
                  - roleBindings
                  - keyType
                  - assignedToUserId
                  - createdByUserId
                  - permissionMode
                  - permissions
                  - bindings
                additionalProperties: false
        '401':
          description: Invalid or missing API key token
          content: {}
        '403':
          description: >-
            Insufficient permissions (requires organization:manage), the
            requested binding exceeds what the key owner or the key making the
            request holds, or the scope does not belong to this organization
            (api_key_scope_violation)
          content: {}
        '404':
          description: API key not found, or not yours to edit (api_key_not_found)
          content: {}
        '409':
          description: API key is already revoked (api_key_already_revoked)
          content: {}
        '422':
          description: >-
            Validation error, for example restricted mode without a permissions
            list (validation_error)
          content: {}
      security:
        - admin_api_key: []
components:
  securitySchemes:
    project_api_key:
      type: apiKey
      in: header
      name: X-Auth-Token
      description: >-
        Project API key for sending traces and accessing project-scoped
        resources. Format: sk-lw-... (no underscore). Obtain one by creating a
        project via the Admin API or the LangWatch UI.
    admin_api_key:
      type: http
      scheme: bearer
      description: >-
        Admin API key for organization-level operations (managing projects, API
        keys). Create one in Settings > API Keys or via POST /api/api-keys.
        Format: sk-lw-{id}_{secret}.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.