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

> Update an existing API key's permissions, description, or other metadata.

# Update



## OpenAPI

````yaml patch /api_keys/{id}
openapi: 3.0.0
info:
  title: ngrok OpenAPI
  version: 1.0.0
  description: >
    The ngrok REST API at https://api.ngrok.com provides programmatic access to
    provision and configure every ngrok resource: endpoints, domains, API keys,
    IP policies, tunnels, certificates, and more. Full documentation:
    https://ngrok.com/docs/api


    **Authentication:** Send an API key as a bearer token: "Authorization:
    Bearer {API key}". Create and revoke keys at
    https://dashboard.ngrok.com/api-keys or via the /api_keys resource. Requests
    without credentials receive an error with code ERR_NGROK_200.


    **Versioning and deprecation policy:** Every request must include the
    "ngrok-version: 2" header; a missing header returns HTTP 400 with error code
    ERR_NGROK_218. Version 2 is the current version; all earlier versions are
    deprecated. ngrok never makes breaking changes to a published API version.
    Breaking changes ship only as a new version that clients explicitly opt in
    to via this header. Additive changes (new resources, methods, and fields,
    and bug fixes that match documented behavior) may ship to a live version.
    Full policy: https://ngrok.com/docs/api#versioning-and-api-stability


    **Rate limits:** By default, the API allows 120 requests per rolling
    60-second window per account; some plans have higher limits. Exceeding the
    limit returns HTTP 429 with error code ERR_NGROK_226; wait for the window to
    pass before retrying. Details: https://ngrok.com/docs/errors/err_ngrok_226


    **Errors:** Every 4xx and 5xx response carries the Error schema: the
    status_code, a human-readable msg, and in most cases a globally unique
    machine-readable error_code and a details object. Every error code is
    documented at https://ngrok.com/docs/errors
servers:
  - url: https://api.ngrok.com
security:
  - authentication: []
paths:
  /api_keys/{id}:
    patch:
      tags:
        - APIKeys
      summary: Update
      description: |
        Update attributes of an API key by ID.
      operationId: ApiKeysUpdate
      parameters:
        - $ref: '#/components/parameters/ngrokVersion'
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyUpdate'
      responses:
        '200':
          description: |
            Update attributes of an API key by ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIKey'
        4XX:
          $ref: '#/components/responses/Error'
        5XX:
          $ref: '#/components/responses/Error'
components:
  parameters:
    ngrokVersion:
      name: ngrok-version
      in: header
      required: true
      schema:
        type: integer
        default: 2
  schemas:
    APIKeyUpdate:
      type: object
      properties:
        id:
          description: n/a
          type: string
        description:
          description: >
            human-readable description of what uses the API key to authenticate.
            optional, max 255 bytes.
          type: string
        metadata:
          description: >
            arbitrary user-defined data of this API key. optional, max 4096
            bytes
          type: string
    APIKey:
      type: object
      properties:
        id:
          description: |
            unique API key resource identifier
          type: string
        uri:
          description: |
            URI to the API resource of this API key
          type: string
        description:
          description: >
            human-readable description of what uses the API key to authenticate.
            optional, max 255 bytes.
          type: string
        metadata:
          description: >
            arbitrary user-defined data of this API key. optional, max 4096
            bytes
          type: string
        created_at:
          description: |
            timestamp when the api key was created, RFC 3339 format
          type: string
        token:
          description: >
            the bearer token that can be placed into the Authorization header to
            authenticate request to the ngrok API. **This value is only
            available one time, on the API response from key creation. Otherwise
            it is null.**
          type: string
        owner_id:
          description: >
            If supplied at credential creation, ownership will be assigned to
            the specified User or Bot. Only admins may specify an owner other
            than themselves. Defaults to the authenticated User or Bot.
          type: string
    Error:
      type: object
      description: >
        The error body every api.ngrok.com 4xx and 5xx response returns. Every
        error condition has a globally unique, documented error code; see
        https://ngrok.com/docs/errors
      required:
        - status_code
        - msg
      properties:
        error_code:
          description: >
            Globally unique machine-readable error code, for example
            ERR_NGROK_226. Each code is documented at
            https://ngrok.com/docs/errors/reference. Omitted on transport-level
            errors such as a plain 404 for an unknown path.
          type: string
        status_code:
          description: |
            The HTTP status code of the response, duplicated in the body.
          type: integer
        msg:
          description: |
            Human-readable description of the error and how to resolve it.
          type: string
        details:
          description: >
            Additional error context. details.operation_id identifies the failed
            request when contacting support.
          type: object
          additionalProperties:
            type: string
  responses:
    Error:
      description: >
        An error. The body carries a machine-readable error_code and a
        human-readable msg; every code is documented at
        https://ngrok.com/docs/errors. A 429 with error code ERR_NGROK_226 means
        the account exceeded the documented request-rate limit.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    authentication:
      type: http
      scheme: bearer

````

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