Portkey Api-Keys API

Create, List, Retrieve, Update, and Delete your Portkey API keys.

OpenAPI Specification

portkey-api-keys-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Portkey Analytics > Graphs Api-Keys API
  description: The Portkey REST API. Please see https://portkey.ai/docs/api-reference for more details.
  version: 2.0.0
  termsOfService: https://portkey.ai/terms
  contact:
    name: Portkey Developer Forum
    url: https://portkey.wiki/community
  license:
    name: MIT
    url: https://github.com/Portkey-AI/portkey-openapi/blob/master/LICENSE
servers:
- url: https://api.portkey.ai/v1
  description: Portkey API Public Endpoint
security:
- Portkey-Key: []
tags:
- name: Api-Keys
  description: Create, List, Retrieve, Update, and Delete your Portkey API keys.
paths:
  /api-keys/{type}/{sub-type}:
    servers:
    - url: https://api.portkey.ai/v1
      description: Portkey API Public Endpoint
    - url: SELF_HOSTED_CONTROL_PLANE_URL
      description: Self-Hosted Control Plane URL
    post:
      tags:
      - Api-Keys
      summary: Create API Keys
      description: 'Creates a new API key.

        '
      parameters:
      - name: type
        in: path
        schema:
          type: string
          enum:
          - organisation
          - workspace
        required: true
      - name: sub-type
        in: path
        schema:
          type: string
          enum:
          - user
          - service
        required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApiKeyObject'
            examples:
              create_basic:
                summary: Create a basic service API key
                value:
                  name: API_KEY_NAME_0909
                  scopes:
                  - completions.write
              create_with_rotation:
                summary: Create an API key with automatic monthly rotation
                value:
                  name: Auto-rotating Key
                  scopes:
                  - completions.write
                  rotation_policy:
                    rotation_period: monthly
                    key_transition_period_ms: 3600000
              create_with_usage_limits:
                summary: Create an API key with usage limits and alert emails
                value:
                  name: Budget-limited Key
                  scopes:
                  - completions.write
                  usage_limits:
                    type: cost
                    credit_limit: 100
                    alert_threshold: 80
                    periodic_reset: monthly
                  alert_emails:
                  - admin@example.com
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    example: 183f497a-2a7f-4f47-992e-26213fa863we
                  key:
                    type: string
                    example: abssofjosfjs
                  object:
                    type: string
                    enum:
                    - api-key
                    example: api-key
      x-code-samples:
      - lang: python
        label: Default
        source: "from portkey_ai import Portkey\n\n# Initialize the Portkey client\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n)\n\n# Create a new API key\napi_key = portkey.api_keys.create(\n    name=\"API_KEY_NAME_0909\",\n    type=\"organisation\",\n    sub_type=\"service\",\n    workspace_id=\"WORKSPACE_ID\",\n    scopes=[\n        \"logs.export\",\n        \"logs.list\",\n        \"logs.view\",\n        \"configs.create\",\n        \"configs.update\",\n        \"configs.delete\",\n        \"configs.read\",\n        \"configs.list\",\n        \"virtual_keys.create\",\n        \"virtual_keys.update\",\n        \"virtual_keys.delete\",\n        \"virtual_keys.read\",\n        \"virtual_keys.list\",\n        \"virtual_keys.copy\"\n    ]\n)\n\nprint(api_key)\n"
      - lang: javascript
        label: Default
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst apiKey=await portkey.apiKeys.create({\n    name:\"API_KEY_NAME_0909\",\n    type:\"organisation\",\n    \"sub-type\":\"service\",\n    workspace_id:\"WORKSPACE_ID\",\n    \"scopes\": [\n        \"logs.export\",\n        \"logs.list\",\n        \"logs.view\",\n        \"configs.create\",\n        \"configs.update\",\n        \"configs.delete\",\n        \"configs.read\",\n        \"configs.list\",\n        \"virtual_keys.create\",\n        \"virtual_keys.update\",\n        \"virtual_keys.delete\",\n        \"virtual_keys.read\",\n        \"virtual_keys.list\",\n        \"virtual_keys.copy\"\n    ]\n})\nconsole.log(apiKey);\n"
      - lang: curl
        label: Default
        source: "curl -X POST https://api.portkey.ai/v1/api-keys/organisation/service\n  -H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\":\"API_KEY_NAME_0909\",\n    \"type\":\"organisation\",\n    \"sub-type\":\"service\",\n    \"workspace_id\":\"WORKSPACE_ID\",\n    \"scopes\":[\n      \"logs.export\",\n      \"logs.list\",\n      \"logs.view\",\n      \"configs.create\",\n      \"configs.update\",\n      \"configs.delete\",\n      \"configs.read\",\n      \"configs.list\",\n      \"virtual_keys.create\",\n      \"virtual_keys.update\",\n      \"virtual_keys.delete\",\n      \"virtual_keys.read\",\n      \"virtual_keys.list\",\n      \"virtual_keys.copy\"\n    ]\n  }'\n"
      - lang: curl
        label: Self-Hosted
        source: "curl -X POST SELF_HOSTED_CONTROL_PLANE_URL/api-keys/organisation/service\n  -H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\":\"API_KEY_NAME_0909\",\n    \"type\":\"organisation\",\n    \"sub-type\":\"service\",\n    \"workspace_id\":\"WORKSPACE_ID\",\n    \"scopes\":[\n      \"logs.export\",\n      \"logs.list\",\n      \"logs.view\",\n      \"configs.create\",\n      \"configs.update\",\n      \"configs.delete\",\n      \"configs.read\",\n      \"configs.list\",\n      \"virtual_keys.create\",\n      \"virtual_keys.update\",\n      \"virtual_keys.delete\",\n      \"virtual_keys.read\",\n      \"virtual_keys.list\",\n      \"virtual_keys.copy\"\n    ]\n  }'\n"
      - lang: javascript
        label: Self-Hosted
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n    baseUrl: \"SELF_HOSTED_CONTROL_PLANE_URL\"\n})\n\nconst apiKey = await portkey.admin.apiKeys.create({\n    name: \"API_KEY_NAME_0909\",\n    type: \"organisation\",\n    subType: \"service\",\n    workspaceId: \"WORKSPACE_ID\",\n    scopes: [\n        \"logs.export\",\n        \"logs.list\",\n        \"logs.view\",\n        \"configs.create\",\n        \"configs.update\",\n        \"configs.delete\",\n        \"configs.read\",\n        \"configs.list\",\n        \"virtual_keys.create\",\n        \"virtual_keys.update\",\n        \"virtual_keys.delete\",\n        \"virtual_keys.read\",\n        \"virtual_keys.list\",\n        \"virtual_keys.copy\"\n    ]\n})\nconsole.log(apiKey);\n"
      - lang: python
        label: Self-Hosted
        source: "from portkey import Portkey\n\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n    base_url=\"SELF_HOSTED_CONTROL_PLANE_URL\"\n)\n\napi_key = portkey.admin.api_keys.create(\n    name=\"API_KEY_NAME_0909\",\n    type=\"organisation\",\n    sub_type=\"service\",\n    workspace_id=\"WORKSPACE_ID\",\n    scopes=[\n        \"logs.export\",\n        \"logs.list\",\n        \"logs.view\",\n        \"configs.create\",\n        \"configs.update\",\n        \"configs.delete\",\n        \"configs.read\",\n        \"configs.list\",\n        \"virtual_keys.create\",\n        \"virtual_keys.update\",\n        \"virtual_keys.delete\",\n        \"virtual_keys.read\",\n        \"virtual_keys.list\",\n        \"virtual_keys.copy\"\n    ]\n)\nprint(api_key)\n"
      - lang: python
        label: User API Key
        source: "from portkey_ai import Portkey\n\n# Initialize the Portkey client\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n)\n\n# Create a user API key (requires user_id)\napi_key = portkey.api_keys.create(\n    name=\"User API Key\",\n    type=\"workspace\",\n    sub_type=\"user\",\n    workspace_id=\"WORKSPACE_ID\",\n    user_id=\"USER_ID\",  # Required for user API keys\n    scopes=[\n        \"completions.write\",\n        \"logs.view\"\n    ]\n)\n\nprint(api_key)\n"
      - lang: javascript
        label: User API Key
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst apiKey = await portkey.apiKeys.create({\n    name: \"User API Key\",\n    type: \"workspace\",\n    \"sub-type\": \"user\",\n    workspace_id: \"WORKSPACE_ID\",\n    user_id: \"USER_ID\",  // Required for user API keys\n    \"scopes\": [\n        \"completions.write\",\n        \"logs.view\"\n    ]\n})\nconsole.log(apiKey);\n"
      - lang: curl
        label: User API Key
        source: "curl -X POST https://api.portkey.ai/v1/api-keys/workspace/user\n  -H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\":\"User API Key\",\n    \"type\":\"workspace\",\n    \"sub-type\":\"user\",\n    \"workspace_id\":\"WORKSPACE_ID\",\n    \"user_id\":\"USER_ID\",\n    \"scopes\":[\n      \"completions.write\",\n      \"logs.view\"\n    ]\n  }'\n"
  /api-keys:
    servers:
    - url: https://api.portkey.ai/v1
    - url: https://SELF_HOSTED_CONTROL_PLANE_URL
    get:
      tags:
      - Api-Keys
      summary: Get All
      parameters:
      - name: page_size
        in: query
        schema:
          type: integer
        example: '1'
      - name: current_page
        in: query
        schema:
          type: integer
        example: '0'
      - name: workspace_id
        in: query
        schema:
          type: string
        example: ws-shared-123
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyObjectList'
      x-code-samples:
      - lang: python
        label: Default
        source: "from portkey_ai import Portkey\n\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\"\n)\n\napi_keys = portkey.api_keys.list(\n    workspace_id=\"WORKSPACE_SLUG\"\n)\n\nprint(api_keys)\n"
      - lang: javascript
        label: Default
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\"\n})\n\nconst apiKey=await portkey.apiKeys.list({\n    workspaceId:\"WORKSPACE_SLUG\"\n})\n\nconsole.log(apiKey);\n"
      - lang: curl
        label: Default
        source: "curl -X GET \"https://api.portkey.ai/v1/api-keys?workspace_id=WORKSPACE_SLUG\"\n  -H \"x-portkey-api-key: PORTKEY_API_KEY\"\n"
      - lang: curl
        label: Self-Hosted
        source: "curl -X GET \"SELF_HOSTED_CONTROL_PLANE_URL/api-keys?workspace_id=WORKSPACE_SLUG\"\n  -H \"x-portkey-api-key: PORTKEY_API_KEY\"\n"
      - lang: python
        label: Self-Hosted
        source: "from portkey_ai import Portkey\n\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n    base_url=\"SELF_HOSTED_CONTROL_PLANE_URL\"\n)\n\napi_keys = portkey.api_keys.list(\n    workspace_id=\"WORKSPACE_SLUG\"\n)\n\nprint(api_keys)\n"
      - lang: javascript
        label: Self-Hosted
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n    baseUrl: \"SELF_HOSTED_CONTROL_PLANE_URL\"\n})\n\nconst apiKey=await portkey.apiKeys.list({\n    workspaceId:\"WORKSPACE_SLUG\"\n})\n\nconsole.log(apiKey);\n"
  /api-keys/{id}:
    servers:
    - url: https://api.portkey.ai/v1
      description: Portkey API Public Endpoint
    - url: SELF_HOSTED_CONTROL_PLANE_URL
      description: Self-Hosted Control Plane URL
    put:
      tags:
      - Api-Keys
      summary: Update API Keys
      description: 'Updates an existing API key. The API key type (user vs service) and associated user_id cannot be changed after creation.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateApiKeyObject'
            examples:
              update_api_key:
                summary: Update key metadata and limits
                value:
                  name: API_KEY_NAME_0909
                  rate_limits:
                  - type: requests
                    unit: rpm
                    value: 100
              reset_usage:
                summary: Reset accumulated usage for this key
                value:
                  reset_usage: true
              set_rotation_policy:
                summary: Set automatic monthly rotation on an existing key
                value:
                  rotation_policy:
                    rotation_period: monthly
                    key_transition_period_ms: 3600000
              update_usage_limits:
                summary: Update usage limits and alert emails
                value:
                  usage_limits:
                    type: cost
                    credit_limit: 100
                    alert_threshold: 80
                    periodic_reset: monthly
                  alert_emails:
                  - admin@example.com
      parameters:
      - name: id
        in: path
        schema:
          type: string
          format: uuid
        required: true
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example: {}
      x-code-samples:
      - lang: python
        label: Default
        source: "from portkey_ai import Portkey\n\n# Initialize the Portkey client\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n)\n\n# Update the API key\nupdated_api_key = portkey.api_keys.update(\n    id=\"API_KEY_ID\",\n    name=\"API_KEY_NAME_0909\",\n    rate_limits=[\n        {\n            \"type\": \"requests\",\n            \"unit\": \"rpm\",\n            \"value\": 100\n        }\n    ],\n    scopes=[\n        \"organisation_users.create\", \"organisation_users.read\", \"organisation_users.update\",\n        \"organisation_users.delete\", \"organisation_users.list\",\n        \"organisation_service_api_keys.create\", \"organisation_service_api_keys.update\",\n        \"organisation_service_api_keys.read\", \"organisation_service_api_keys.delete\",\n        \"organisation_service_api_keys.list\", \"workspaces.delete\", \"workspaces.create\",\n        \"workspaces.read\", \"workspaces.update\", \"workspaces.list\", \"logs.export\",\n        \"logs.list\", \"logs.view\", \"configs.create\", \"configs.update\", \"configs.delete\",\n        \"configs.read\", \"configs.list\", \"virtual_keys.create\", \"virtual_keys.update\",\n        \"virtual_keys.delete\", \"virtual_keys.duplicate\", \"virtual_keys.read\",\n        \"virtual_keys.list\", \"virtual_keys.copy\", \"workspace_service_api_keys.create\",\n        \"workspace_service_api_keys.delete\", \"workspace_service_api_keys.update\",\n        \"workspace_service_api_keys.read\", \"workspace_service_api_keys.list\",\n        \"workspace_user_api_keys.create\", \"workspace_user_api_keys.delete\",\n        \"workspace_user_api_keys.update\", \"workspace_user_api_keys.read\",\n        \"workspace_user_api_keys.list\", \"workspace_users.create\", \"workspace_users.read\",\n        \"workspace_users.update\", \"workspace_users.delete\", \"workspace_users.list\",\n        \"analytics.view\"\n    ]\n)\n\nprint(updated_api_key)\n"
      - lang: javascript
        label: Default
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst apiKey=await portkey.apiKeys.update({\n    id:\"API_KEY_ID\",\n    name:\"API_KEY_NAME_0909\",\n    rate_limits:[        {\n        \"type\": \"requests\",\n        \"unit\": \"rpm\",\n        \"value\": 100\n    }],\n    \"scopes\": [\n                \"organisation_users.create\",\n                \"organisation_users.read\",\n                \"organisation_users.update\",\n                \"organisation_users.delete\",\n                \"organisation_users.list\",\n                \"organisation_service_api_keys.create\",\n                \"organisation_service_api_keys.update\",\n                \"organisation_service_api_keys.read\",\n                \"organisation_service_api_keys.delete\",\n                \"organisation_service_api_keys.list\",\n                \"workspaces.delete\",\n                \"workspaces.create\",\n                \"workspaces.read\",\n                \"workspaces.update\",\n                \"workspaces.list\",\n                \"logs.export\",\n                \"logs.list\",\n                \"logs.view\",\n                \"configs.create\",\n                \"configs.update\",\n                \"configs.delete\",\n                \"configs.read\",\n                \"configs.list\",\n                \"virtual_keys.create\",\n                \"virtual_keys.update\",\n                \"virtual_keys.delete\",\n                \"virtual_keys.duplicate\",\n                \"virtual_keys.read\",\n                \"virtual_keys.list\",\n                \"virtual_keys.copy\",\n                \"workspace_service_api_keys.create\",\n                \"workspace_service_api_keys.delete\",\n                \"workspace_service_api_keys.update\",\n                \"workspace_service_api_keys.read\",\n                \"workspace_service_api_keys.list\",\n                \"workspace_user_api_keys.create\",\n                \"workspace_user_api_keys.delete\",\n                \"workspace_user_api_keys.update\",\n                \"workspace_user_api_keys.read\",\n                \"workspace_user_api_keys.list\",\n                \"workspace_users.create\",\n                \"workspace_users.read\",\n                \"workspace_users.update\",\n                \"workspace_users.delete\",\n                \"workspace_users.list\",\n                \"analytics.view\"\n            ],\n\n})\nconsole.log(apiKey);\n"
      - lang: curl
        label: Default
        source: "curl -X PUT \"https://api.portkey.ai/v1/api-keys/{id}\" \\\n  -H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\":\"API_KEY_NAME_0909\",\n    \"rate_limits\":[\n        {\n            \"type\": \"requests\",\n            \"unit\": \"rpm\",\n            \"value\": 100\n        }\n    ],\n    \"scopes\": [\n      \"organisation_users.create\",\n      \"organisation_users.read\",\n      \"organisation_users.update\",\n      \"organisation_users.delete\",\n      \"organisation_users.list\",\n      \"organisation_service_api_keys.create\",\n      \"organisation_service_api_keys.update\",\n      \"organisation_service_api_keys.read\",\n      \"organisation_service_api_keys.delete\",\n      \"organisation_service_api_keys.list\",\n      \"workspaces.delete\",\n      \"workspaces.create\",\n      \"workspaces.read\",\n      \"workspaces.update\",\n      \"workspaces.list\",\n      \"logs.export\",\n      \"logs.list\",\n      \"logs.view\",\n      \"configs.create\",\n      \"configs.update\",\n      \"configs.delete\",\n      \"configs.read\",\n      \"configs.list\",\n      \"virtual_keys.create\",\n      \"virtual_keys.update\",\n      \"virtual_keys.delete\",\n      \"virtual_keys.duplicate\",\n      \"virtual_keys.read\",\n      \"virtual_keys.list\",\n      \"virtual_keys.copy\",\n      \"workspace_service_api_keys.create\",\n      \"workspace_service_api_keys.delete\",\n      \"workspace_service_api_keys.update\",\n      \"workspace_service_api_keys.read\",\n      \"workspace_service_api_keys.list\",\n      \"workspace_user_api_keys.create\",\n      \"workspace_user_api_keys.delete\",\n      \"workspace_user_api_keys.update\",\n      \"workspace_user_api_keys.read\",\n      \"workspace_user_api_keys.list\",\n      \"workspace_users.create\",\n      \"workspace_users.read\",\n      \"workspace_users.update\",\n      \"workspace_users.delete\",\n      \"workspace_users.list\",\n      \"analytics.view\"\n    ]\n}'\n"
      - lang: curl
        label: Self-Hosted
        source: "curl -X PUT \"SELF_HOSTED_CONTROL_PLANE_URL/api-keys/{id}\" \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n    \"name\":\"API_KEY_NAME_0909\",\n    \"rate_limits\":[\n        {\n            \"type\": \"requests\",\n            \"unit\": \"rpm\",\n            \"value\": 100\n        }\n    ],\n    \"scopes\":[\n      \"organisation_users.create\",\n      \"organisation_users.read\",\n      \"organisation_users.update\",\n      \"organisation_users.delete\",\n      \"organisation_users.list\",\n      \"organisation_service_api_keys.create\",\n      \"organisation_service_api_keys.update\",\n      \"organisation_service_api_keys.read\",\n      \"organisation_service_api_keys.delete\",\n      \"organisation_service_api_keys.list\",\n      \"workspaces.delete\",\n      \"workspaces.create\",\n      \"workspaces.read\",\n      \"workspaces.update\",\n      \"workspaces.list\",\n      \"logs.export\",\n      \"logs.list\",\n      \"logs.view\",\n      \"configs.create\",\n      \"configs.update\",\n      \"configs.delete\",\n      \"configs.read\",\n      \"configs.list\",\n      \"virtual_keys.create\",\n      \"virtual_keys.update\",\n      \"virtual_keys.delete\",\n      \"virtual_keys.duplicate\",\n      \"virtual_keys.read\",\n      \"virtual_keys.list\",\n      \"virtual_keys.copy\",\n      \"workspace_service_api_keys.create\",\n      \"workspace_service_api_keys.delete\",\n      \"workspace_service_api_keys.update\",\n      \"workspace_service_api_keys.read\",\n      \"workspace_service_api_keys.list\",\n      \"workspace_user_api_keys.create\",\n      \"workspace_user_api_keys.delete\",\n      \"workspace_user_api_keys.update\",\n      \"workspace_user_api_keys.read\",\n      \"workspace_user_api_keys.list\",\n      \"workspace_users.create\",\n      \"workspace_users.read\",\n      \"workspace_users.update\",\n      \"workspace_users.delete\",\n      \"workspace_users.list\",\n      \"analytics.view\"\n    ]\n}'\n"
      - lang: python
        label: Self-Hosted
        source: "from portkey_ai import Portkey\n\n# Initialize the Portkey client\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n    base_url=\"SELF_HOSTED_CONTROL_PLANE_URL\"\n)\n\n# Update the API key\nupdated_api_key = portkey.api_keys.update(\n    id=\"API_KEY_ID\",\n    name=\"API_KEY_NAME_0909\",\n    rate_limits=[\n        {\n            \"type\": \"requests\",\n            \"unit\": \"rpm\",\n            \"value\": 100\n        }\n    ],\n    scopes=[\n        \"organisation_users.create\", \"organisation_users.read\", \"organisation_users.update\",\n        \"organisation_users.delete\", \"organisation_users.list\",\n        \"organisation_service_api_keys.create\", \"organisation_service_api_keys.update\",\n        \"organisation_service_api_keys.read\", \"organisation_service_api_keys.delete\",\n        \"organisation_service_api_keys.list\", \"workspaces.delete\", \"workspaces.create\",\n        \"workspaces.read\", \"workspaces.update\", \"workspaces.list\", \"logs.export\",\n        \"logs.list\", \"logs.view\", \"configs.create\", \"configs.update\", \"configs.delete\",\n        \"configs.read\", \"configs.list\", \"virtual_keys.create\", \"virtual_keys.update\",\n        \"virtual_keys.delete\", \"virtual_keys.duplicate\", \"virtual_keys.read\",\n        \"virtual_keys.list\", \"virtual_keys.copy\", \"workspace_service_api_keys.create\",\n        \"workspace_service_api_keys.delete\", \"workspace_service_api_keys.update\",\n        \"workspace_service_api_keys.read\", \"workspace_service_api_keys.list\",\n        \"workspace_user_api_keys.create\", \"workspace_user_api_keys.delete\",\n        \"workspace_user_api_keys.update\", \"workspace_user_api_keys.read\",\n        \"workspace_user_api_keys.list\", \"workspace_users.create\", \"workspace_users.read\",\n        \"workspace_users.update\", \"workspace_users.delete\", \"workspace_users.list\",\n        \"analytics.view\"\n    ]\n)\n\nprint(updated_api_key)\n"
      - lang: javascript
        label: Self-Hosted
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n    baseUrl: \"SELF_HOSTED_CONTROL_PLANE_URL\"\n})\n\nconst apiKey=await portkey.apiKeys.update({\n    id:\"API_KEY_ID\",\n    name:\"API_KEY_NAME_0909\",\n    rate_limits:[        {\n        \"type\": \"requests\",\n        \"unit\": \"rpm\",\n        \"value\": 100\n    }],\n    \"scopes\": [\n                \"organisation_users.create\",\n                \"organisation_users.read\",\n                \"organisation_users.update\",\n                \"organisation_users.delete\",\n                \"organisation_users.list\",\n                \"organisation_service_api_keys.create\",\n                \"organisation_service_api_keys.update\",\n                \"organisation_service_api_keys.read\",\n                \"organisation_service_api_keys.delete\",\n                \"organisation_service_api_keys.list\",\n                \"workspaces.delete\",\n                \"workspaces.create\",\n                \"workspaces.read\",\n                \"workspaces.update\",\n                \"workspaces.list\",\n                \"logs.export\",\n                \"logs.list\",\n                \"logs.view\",\n                \"configs.create\",\n                \"configs.update\",\n                \"configs.delete\",\n                \"configs.read\",\n                \"configs.list\",\n                \"virtual_keys.create\",\n                \"virtual_keys.update\",\n                \"virtual_keys.delete\",\n                \"virtual_keys.duplicate\",\n                \"virtual_keys.read\",\n                \"virtual_keys.list\",\n                \"virtual_keys.copy\",\n                \"workspace_service_api_keys.create\",\n                \"workspace_service_api_keys.delete\",\n                \"workspace_service_api_keys.update\",\n                \"workspace_service_api_keys.read\",\n                \"workspace_service_api_keys.list\",\n                \"workspace_user_api_keys.create\",\n                \"workspace_user_api_keys.delete\",\n                \"workspace_user_api_keys.update\",\n                \"workspace_user_api_keys.read\",\n                \"workspace_user_api_keys.list\",\n                \"workspace_users.create\",\n                \"workspace_users.read\",\n                \"workspace_users.update\",\n                \"workspace_users.delete\",\n                \"workspace_users.list\",\n                \"analytics.view\"\n            ],\n\n})\nconsole.log(apiKey);\n"
    get:
      tags:
      - Api-Keys
      summary: Get API Keys
      parameters:
      - name: id
        in: path
        schema:
          type: string
          format: uuid
        required: true
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyObject'
      x-code-samples:
      - lang: python
        label: Default
        source: "from portkey_ai import Portkey\n\n# Initialize the Portkey client\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n)\n\n# Get API keys\napi_keys = portkey.api_keys.retrieve(\n  id=\"API_KEY_ID\"\n)\n\nprint(api_keys)\n"
      - lang: javascript
        label: Default
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst apiKey=await portkey.apiKeys.retrieve({\n    id:\"API_KEY_ID\"\n})\n\nconsole.log(apiKey);\n"
      - lang: curl
        label: Default
        source: 'curl -X GET "https://api.portkey.ai/v1/api_keys/{id}" \

          -H "x-portkey-api-key: PORTKEY_API_KEY"

          '
      - lang: curl
        label: Self-Hosted
        source: 'curl -X GET "SELF_HOSTED_CONTROL_PLANE_URL/api_keys/{id}" \

          -H "x-portkey-api-key: PORTKEY_API_KEY"

          '
      - lang: python
        label: Self-Hosted
        source: "from portkey_ai import Portkey\n\n# Initialize the Portkey client\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n    base_url=\"SELF_HOSTED_CONTROL_PLANE_URL\"\n)\n\n# Get API keys\napi_keys = portkey.api_keys.retrieve(\n  id=\"API_KEY_ID\"\n)\n\nprint(api_keys)\n"
      - lang: javascript
        label: Self-Hosted
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n    baseUrl: \"SELF_HOSTED_CONTROL_PLANE_URL\"\n})\n\nconst apiKey=await portkey.apiKeys.retrieve({\n    id:\"API_KEY_ID\"\n})\n\nconsole.log(apiKey);\n"
    delete:
      tags:
      - Api-Keys
      summary: Remove an API Key
      parameters:
      - name: id
        in: path
        schema:
          type: string
          format: uuid
        required: true
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example: {}
      x-code-samples:
      - lang: python
        label: Default
        source: "from portkey_ai import Portkey\n\n# Initialize the Portkey client\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n)\n\n# Delete the API key\nresult = portkey.api_keys.delete(\n    id=\"API_KEY_ID\"\n)\n\nprint(result)\n"
      - lang: javascript
        label: Default
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst apiKey=await portkey.apiKeys.delete({\n    id:\"API_KEY_ID\"\n})\nconsole.log(apiKey);\n"
      - lang: curl
        label: Default
        source: 'curl -X DELETE "https://api.portkey.ai/v1/api_keys/{id}" \

          -H "x-portkey-api-key: PORTKEY_API_KEY"

          '
      - lang: curl
        label: Self-Hosted
        source: 'curl -X DELETE "SELF_HOSTED_CONTROL_PLANE_URL/api_keys/{id}" \

          -H "x-portkey-api-key: PORTKEY_API_KEY"

          '
      - lang: python
        label: Self-Hosted
        source: "from portkey_ai import Portkey\n\n# Initialize the Portkey client\nportkey = Portkey(\n    api_key=\"PORTKEY_API_KEY\",\n    base_url=\"SELF_HOSTED_CONTROL_PLANE_URL\"\n)\n\n# Delete the API key\nresult = portkey.api_keys.delete(\n    id=\"API_KEY_ID\"\n)\n\nprint(result)\n"
      - lang: javascript
        label: Self-Hosted
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n    baseUrl: \"SELF_HOSTED_CONTROL_PLANE_URL\"\n})\n\nconst apiKey=await portkey.apiKeys.delete({\n    id:\"API_KEY_ID\"\n})\nconsole.log(apiKey);\n"
  /api-keys/{id}/rotate:
    servers:
    - url: https://api.portkey.ai/v1
      description: Portkey API Public Endpoint
    - url: SELF_HOSTED_CONTROL_PLANE_URL
      description: Self-Hosted Control Plane URL
    post:
      tags:
      - Api-Keys
      summary: Rotate API Key
      description: 'Rotates an existing API key and returns a newly generated key value.

        The previous key remains valid during the transition period and expires at `key_transition_expires_at`.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RotateApiKeyRequest'
            examples:
              default:
                summary: Rotate with a custom transition period
                value:
                  key_transition_period_ms: 3600000
      

# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/portkey/refs/heads/main/openapi/portkey-api-keys-api-openapi.yml