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