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

# Set provider key

<div className="endpoint-signature"><span className="endpoint-method endpoint-method-put">PUT</span><code>/v1/provider-keys/\{provider}</code></div>


## OpenAPI

````yaml /openapi/compatibility.yaml put /v1/provider-keys/{provider}
openapi: 3.1.0
info:
  title: Tokenless Compatibility and BYOK API
  version: 1.0.0
  description: |
    OpenAI- and Anthropic-compatible routing endpoints, plus interactive-session
    management for bring-your-own provider keys.
servers:
  - url: https://api.usetokenless.com
security:
  - tokenlessBearer: []
paths:
  /v1/provider-keys/{provider}:
    parameters:
      - $ref: '#/components/parameters/Provider'
    put:
      tags:
        - BYOK
      summary: Set provider key
      operationId: setProviderKey
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetProviderKeyRequest'
      responses:
        '200':
          description: Stored provider-key metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderKey'
        '400':
          $ref: '#/components/responses/ControlPlaneError'
        '403':
          $ref: '#/components/responses/ControlPlaneError'
        '502':
          $ref: '#/components/responses/ControlPlaneError'
      security:
        - interactiveSession: []
components:
  parameters:
    Provider:
      name: provider
      in: path
      required: true
      schema:
        type: string
        enum:
          - openai
          - anthropic
          - deepseek
  schemas:
    SetProviderKeyRequest:
      type: object
      required:
        - api_key
      properties:
        api_key:
          type: string
          writeOnly: true
          description: The upstream provider API key. Never returned by this API.
        label:
          type: string
          maxLength: 100
    ProviderKey:
      type: object
      required:
        - key_id
        - provider
        - last4
        - status
        - enabled
        - created_at
      properties:
        key_id:
          type: string
          format: uuid
        provider:
          type: string
          enum:
            - openai
            - anthropic
            - deepseek
        last4:
          type: string
          description: Last four characters of the provider key.
        label:
          type: string
        status:
          type: string
          enum:
            - active
            - invalid
        enabled:
          type: boolean
        created_at:
          type: string
          format: date-time
        validated_at:
          type: string
          format: date-time
        last_used_at:
          type: string
          format: date-time
    ControlPlaneError:
      type: object
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
  responses:
    ControlPlaneError:
      description: Control-plane error response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ControlPlaneError'
  securitySchemes:
    tokenlessBearer:
      type: http
      scheme: bearer
      bearerFormat: Tokenless API key
    interactiveSession:
      type: http
      scheme: bearer
      bearerFormat: Clerk dashboard JWT or tkl CLI session

````