> ## 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.

# Revoke virtual key

> Marks the virtual key as revoked and archives its own budgets. Clients using it start receiving 401 within ~60s (the gateway's change-event long-poll period). Idempotent.



## OpenAPI

````yaml POST /api/gateway/v1/virtual-keys/{id}/revoke
openapi: 3.1.0
info:
  title: LangWatch API
  version: 1.0.0
  description: LangWatch openapi spec
servers:
  - url: https://app.langwatch.ai
security:
  - project_api_key: []
paths:
  /api/gateway/v1/virtual-keys/{id}/revoke:
    post:
      tags:
        - Virtual Keys
      summary: Revoke virtual key
      description: >-
        Marks the virtual key as revoked and archives its own budgets. Clients
        using it start receiving 401 within ~60s (the gateway's change-event
        long-poll period). Idempotent.
      operationId: postApiGatewayV1VirtualKeysByIdRevoke
      parameters:
        - schema:
            type: string
          in: path
          name: id
          required: true
      responses:
        '200':
          description: Revoked
          content:
            application/json:
              schema:
                type: object
                properties:
                  virtual_key:
                    type: object
                    properties:
                      id:
                        type: string
                      organization_id:
                        type: string
                      name:
                        type: string
                      description:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - active
                          - disabled
                          - revoked
                      purpose:
                        type: string
                        enum:
                          - user
                          - langy
                      display_prefix:
                        type: string
                      principal_user_id:
                        type:
                          - string
                          - 'null'
                      trace_project_id:
                        type:
                          - string
                          - 'null'
                        description: >-
                          The project this key's traces and costs land in, which
                          is the project its spend is attributed to. Not a
                          scope: it grants no access to the key. Decided when
                          the key is written and stored on it, so editing what
                          the key is scoped to never moves it; send
                          `trace_project_id` on an update to move it. Null only
                          on a key created before this was stored, in an
                          organization that had no governance project to fall
                          back to; those keys export no spans until they are
                          given a destination.
                      trace_project_archived:
                        type: boolean
                        description: >-
                          True when the project in `trace_project_id` has been
                          deleted. The key goes on sending its traces there, so
                          the data stays whole and reappears if the project is
                          restored, and traffic is never refused for it. Nothing
                          else on the key says the destination is gone.
                      external_id:
                        type:
                          - string
                          - 'null'
                      metadata:
                        type: object
                        additionalProperties:
                          type: string
                      scopes:
                        type: array
                        items:
                          type: object
                          properties:
                            scope_type:
                              type: string
                              enum:
                                - organization
                                - team
                                - project
                            scope_id:
                              type: string
                          required:
                            - scope_type
                            - scope_id
                      routing_policy_id:
                        type:
                          - string
                          - 'null'
                      routing_mode:
                        type: string
                        enum:
                          - none
                          - fallback_all
                          - policy
                      config: {}
                      revision:
                        type: string
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type: string
                        format: date-time
                      last_used_at:
                        type:
                          - string
                          - 'null'
                        format: date-time
                      revoked_at:
                        type:
                          - string
                          - 'null'
                        format: date-time
                      expires_at:
                        type:
                          - string
                          - 'null'
                        format: date-time
                        description: >-
                          When the key stops serving, or null for a key that
                          never expires. Requests presented after this moment
                          are refused with `virtual_key_expired`. `status` stays
                          `active` past the date on purpose: the three status
                          values are what clients switch on, and the key stays
                          editable so the date can be extended.
                    required:
                      - id
                      - organization_id
                      - name
                      - description
                      - status
                      - purpose
                      - display_prefix
                      - principal_user_id
                      - trace_project_id
                      - trace_project_archived
                      - external_id
                      - metadata
                      - scopes
                      - routing_policy_id
                      - routing_mode
                      - revision
                      - created_at
                      - updated_at
                      - last_used_at
                      - revoked_at
                      - expires_at
                required:
                  - virtual_key
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      meta:
                        type: object
                        additionalProperties: {}
                      trace_id:
                        type: string
                      span_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                required:
                  - error
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      meta:
                        type: object
                        additionalProperties: {}
                      trace_id:
                        type: string
                      span_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                required:
                  - error
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      meta:
                        type: object
                        additionalProperties: {}
                      trace_id:
                        type: string
                      span_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                required:
                  - error
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      meta:
                        type: object
                        additionalProperties: {}
                      trace_id:
                        type: string
                      span_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                required:
                  - error
      security:
        - project_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.

````