openapi: 3.0.0 info: title: Portkey Analytics > Graphs Workspaces 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: Workspaces description: Create and manage workspaces. paths: /admin/workspaces: 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: - Workspaces summary: Create Workspace requestBody: content: application/json: schema: type: object properties: name: type: string description: type: string defaults: type: object properties: metadata: type: object additionalProperties: type: string users: type: array items: type: string usage_limits: type: array items: $ref: '#/components/schemas/UsageLimits' rate_limits: type: array items: $ref: '#/components/schemas/RateLimits' example: name: My Workspace description: My Description defaults: metadata: environment: production foo: bar responses: '200': description: OK headers: Content-Type: schema: type: string example: application/json content: application/json: schema: $ref: '#/components/schemas/Workspace' 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# Add a workspace\nworkspace = portkey.admin.workspaces.create(\n name='WORKSPACE_NAME_0909',\n description=\"WORKSPACE_DESCRIPTION\",\n defaults={\n \"metadata\": {\n \"environment\": \"production\",\n \"foo\": \"bar\"\n }\n }\n)\n\nprint(workspace)\n" - lang: javascript label: Default source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst workspace=await portkey.admin.workspaces.create({\n name: 'WORKSPACE_NAME_0909',\n description: \"WORKSPACE_DESCRIPTION\",\n defaults: {\n metadata: {\n environment: \"production\",\n foo: \"bar\"\n }\n }\n})\nconsole.log(workspace);\n" - lang: curl label: Default source: "curl -X POST https://api.portkey.ai/v1/admin/workspaces \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n \"name\": \"WORKSPACE_NAME_0909\",\n \"description\": \"WORKSPACE_DESCRIPTION\",\n \"defaults\": {\n \"metadata\": {\n \"environment\": \"production\",\n \"foo\": \"bar\"\n }\n }\n}'\n" - lang: curl label: Self-Hosted source: "curl -X POST SELF_HOSTED_CONTROL_PLANE_URL/admin/workspaces \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n \"name\": \"WORKSPACE_NAME_0909\",\n \"description\": \"WORKSPACE_DESCRIPTION\",\n \"defaults\": {\n \"metadata\": {\n \"environment\": \"production\",\n \"foo\": \"bar\"\n }\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# Add a workspace\nworkspace = portkey.admin.workspaces.create(\n name='WORKSPACE_NAME_0909',\n description=\"WORKSPACE_DESCRIPTION\",\n defaults={\n \"metadata\": {\n \"environment\": \"production\",\n \"foo\": \"bar\"\n }\n }\n)\n\nprint(workspace)\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 workspace = await portkey.admin.workspaces.create({\n name: 'WORKSPACE_NAME_0909',\n description: \"WORKSPACE_DESCRIPTION\",\n defaults: {\n metadata: {\n environment: \"production\",\n foo: \"bar\"\n }\n }\n})\n\nconsole.log(workspace)\n" get: tags: - Workspaces summary: Get All Workspaces parameters: - name: page_size in: query schema: type: integer example: '1' - name: current_page in: query schema: type: integer example: '0' - name: name in: query schema: type: string example: workspace description: Workspace name to filter results, case sensitive - name: exact_name in: query schema: type: string description: Workspace name filter with strict check - name: status in: query schema: type: string enum: - active - archived example: active,archived description: Workspace status to filter results, comma separated responses: '200': description: OK headers: Content-Type: schema: type: string example: application/json content: application/json: schema: $ref: '#/components/schemas/WorkspaceList' example: total: 2 object: list data: - id: test-prod-ws-12345 name: Test prod workspace description: This is a production workspace created_at: '2023-07-13 13:51:27' last_updated_at: '2023-07-13 14:51:27' object: workspace - id: test-prod-ws-12345 name: Test prod workspace description: This is a production workspace created_at: '2023-07-13 13:51:27' last_updated_at: '2023-07-13 14:51:27' object: workspace 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# List workspaces\nworkspaces = portkey.admin.workspaces.list()\n\nprint(workspaces)\n" - lang: javascript label: Default source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst workspaces=await portkey.admin.workspaces.list({})\nconsole.log(workspaces);\n" - lang: curl label: Default source: 'curl -X GET https://api.portkey.ai/v1/admin/workspaces ' - lang: curl label: Self-Hosted source: 'curl -X GET SELF_HOSTED_CONTROL_PLANE_URL/admin/workspaces ' - 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# List workspaces\nworkspaces = portkey.admin.workspaces.list()\n\nprint(workspaces)\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 workspaces=await portkey.admin.workspaces.list({})\nconsole.log(workspaces);\n" /admin/workspaces/{workspaceId}: 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: - Workspaces summary: Update Workspace requestBody: content: application/json: schema: type: object properties: name: type: string description: type: string defaults: type: object properties: metadata: type: object additionalProperties: type: string input_guardrails: type: array items: type: string output_guardrails: type: array items: type: string usage_limits: type: array items: $ref: '#/components/schemas/UsageLimits' rate_limits: type: array items: $ref: '#/components/schemas/RateLimits' example: name: My Workspace description: My Description defaults: metadata: foo: bar parameters: - name: workspaceId in: path schema: type: string 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 workspace\nworkspace = portkey.admin.workspaces.update(\n workspace_id='WORKSPACE_ID',\n name='WORKSPACE 0909',\n description='This is a test description',\n defaults={\n \"x\": \"y\"\n }\n)\n\nprint(workspace)\n" - lang: javascript label: Default source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst workspace=await portkey.admin.workspaces.update({\n workspaceId: 'WORKSPACE_ID',\n name: 'WORKSPACE 0909',\n description: 'This is a test description',\n defaults: {\n x: \"y\"\n }\n})\nconsole.log(workspace);\n" - lang: curl label: Default source: 'curl -X PUT "https://api.portkey.ai/v1/admin/workspaces/{workspaceId}" \ -H "x-portkey-api-key: PORTKEY_API_KEY" \ -H "Content-Type: application/json" \ -d ''{"name":"WORKSPACE 0909","description":"This is a test description","defaults":{"x":"y"}}'' ' - lang: curl label: Self-Hosted source: 'curl -X PUT "SELF_HOSTED_CONTROL_PLANE_URL/admin/workspaces/{workspaceId}" \ -H "x-portkey-api-key: PORTKEY_API_KEY" \ -H "Content-Type: application/json" \ -d ''{"name":"WORKSPACE 0909","description":"This is a test description","defaults":{"x":"y"}}'' ' - 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 workspace\nworkspace = portkey.admin.workspaces.update(\n workspace_id='WORKSPACE_ID',\n name='WORKSPACE 0909',\n description='This is a test description',\n defaults={\n x: \"y\"\n }\n)\n\nprint(workspace)\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 workspace=await portkey.admin.workspaces.update({\n workspaceId: 'WORKSPACE_ID',\n name: 'WORKSPACE 0909',\n description: 'This is a test description',\n defaults: {\n x: \"y\"\n }\n})\nconsole.log(workspace);\n" get: tags: - Workspaces summary: Get workspace parameters: - name: workspaceId in: path schema: type: string required: true responses: '200': description: OK headers: Content-Type: schema: type: string example: application/json content: application/json: schema: $ref: '#/components/schemas/WorkspaceWithUsers' 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 workspace details\nworkspace = portkey.admin.workspaces.retrieve(\n workspace_id='WORKSPACE_SLUG'\n)\n\nprint(workspace)\n" - lang: javascript label: Default source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst workspace=await portkey.admin.workspaces.retrieve({\n workspaceId: 'WORKSPACE_SLUG',\n})\nconsole.log(workspace);\n" - lang: curl label: Default source: 'curl -X GET "https://api.portkey.ai/v1/admin/workspaces/{workspaceId}" \ -H "x-portkey-api-key: PORTKEY_API_KEY" ' - lang: curl label: Self-Hosted source: 'curl -X GET "SELF_HOSTED_CONTROL_PLANE_URL/admin/workspaces/{workspaceId}" \ -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 baseUrl=\"SELF_HOSTED_CONTROL_PLANE_URL\"\n)\n\n# Get workspace details\nworkspace = portkey.admin.workspaces.retrieve(\n workspace_id='WORKSPACE_SLUG'\n)\n\nprint(workspace)\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 workspace=await portkey.admin.workspaces.retrieve({\n workspaceId: 'WORKSPACE_SLUG',\n})\nconsole.log(workspace);\n" delete: tags: - Workspaces summary: Delete a workspace parameters: - name: workspaceId in: path schema: type: string required: true responses: '200': description: OK 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 workspace\nresult = portkey.admin.workspaces.delete(\n workspace_id='WORKSPACE_SLUG'\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 workspace=await portkey.admin.workspaces.delete({\n workspaceId: 'WORKSPACE_SLUG',\n})\nconsole.log(workspace);\n" - lang: curl label: Default source: 'curl -X DELETE "https://api.portkey.ai/v1/admin/workspaces/{workspaceId}" \ -H "x-portkey-api-key: PORTKEY_API_KEY" ' - lang: curl label: Self-Hosted source: 'curl -X DELETE "SELF_HOSTED_CONTROL_PLANE_URL/admin/workspaces/{workspaceId}" \ -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 workspace\nresult = portkey.admin.workspaces.delete(\n workspace_id='WORKSPACE_SLUG'\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 workspace=await portkey.admin.workspaces.delete({\n workspaceId: 'WORKSPACE_SLUG',\n})\nconsole.log(workspace);\n" /scim/workspaces: servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_CONTROL_PLANE_URL description: Self-Hosted Control Plane URL get: tags: - Workspaces summary: List SCIM Group to Workspace Mappings description: 'List all mappings between SCIM groups and workspaces for the organisation. Optionally filter by workspace, SCIM group, or role. ' parameters: - name: workspace_id in: query required: false schema: type: string description: Filter mappings by workspace ID or slug. - name: scim_group_id in: query required: false schema: type: string description: Filter mappings by SCIM group ID. - name: role in: query required: false schema: type: string enum: - admin - member - manager description: Filter mappings by role. responses: '200': description: OK headers: Content-Type: schema: type: string example: application/json content: application/json: schema: type: object properties: mappings: type: array items: type: object properties: id: type: string description: Unique ID of the SCIM workspace mapping. workspace_id: type: string description: ID of the mapped workspace. scim_group: type: string description: Display name of the SCIM group. scim_group_id: type: string description: ID of the SCIM group. role: type: string enum: - admin - member - manager description: Role assigned to group members in the workspace. total_count: type: integer description: Total number of mappings returned. example: mappings: - id: d290f1ee-6c54-4b01-90e6-d701748f0851 workspace_id: ws_my-workspace scim_group: Engineering Team scim_group_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 role: member total_count: 1 x-code-samples: - lang: curl label: Default source: 'curl -X GET https://api.portkey.ai/v1/scim/workspaces \ -H "x-portkey-api-key: PORTKEY_API_KEY" ' - lang: curl label: Filter by workspace source: 'curl -X GET "https://api.portkey.ai/v1/scim/workspaces?workspace_id=ws_my-workspace" \ -H "x-portkey-api-key: PORTKEY_API_KEY" ' - lang: curl label: Self-Hosted source: 'curl -X GET SELF_HOSTED_CONTROL_PLANE_URL/scim/workspaces \ -H "x-portkey-api-key: PORTKEY_API_KEY" ' post: tags: - Workspaces summary: Create SCIM Group to Workspace Mapping description: "Create a mapping between a SCIM group and a workspace. \nYou can either reference an existing SCIM group by ID, or provide a group name \nto pre-create the SCIM group before the IdP provisions it.\n" requestBody: required: true content: application/json: schema: type: object required: - workspace_id - role properties: workspace_id: type: string description: ID or slug (ws_ prefix) of the workspace to map the SCIM group to. role: type: string enum: - admin - member - manager description: Role assigned to group members in the workspace. scim_group_id: type: string description: ID of an existing SCIM group. Required if scim_group_name is not provided. scim_group_name: type: string description: Display name for the SCIM group. If the group doesn't exist, it will be created. Required if scim_group_id is not provided. Must not match the pattern-based auto-provisioning format (e.g. ws-name-role-admin). oneOf: - required: - scim_group_id - required: - scim_group_name examples: pre_create_group: summary: Pre-create a SCIM group and map it value: scim_group_name: Engineering Team workspace_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 role: admin responses: '200': description: OK headers: Content-Type: schema: type: string example: application/json content: application/json: schema: $ref: '#/components/schemas/ScimWorkspaceMapping' x-code-samples: - lang: curl label: Default source: "curl -X POST https://api.portkey.ai/v1/scim/workspaces \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n \"scim_group_name\": \"Engineering Team\",\n \"workspace_id\": \"ws_my-workspace\",\n \"role\": \"member\"\n}'\n" - lang: curl label: With existing group source: "curl -X POST https://api.portkey.ai/v1/scim/workspaces \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n \"scim_group_id\": \"d290f1ee-6c54-4b01-90e6-d701748f0851\",\n \"workspace_id\": \"ws_my-workspace\",\n \"role\": \"admin\"\n}'\n" - lang: curl label: Self-Hosted source: "curl -X POST SELF_HOSTED_CONTROL_PLANE_URL/scim/workspaces \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n \"scim_group_name\": \"Engineering Team\",\n \"workspace_id\": \"ws_my-workspace\",\n \"role\": \"member\"\n}'\n" /scim/workspaces/{scimWorkspaceGroupId}: servers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_CONTROL_PLANE_URL description: Self-Hosted Control Plane URL delete: tags: - Workspaces summary: Delete SCIM Group to Workspace Mapping description: Remove a SCIM group to workspace mapping. This archives the mapping but does not delete the SCIM group or workspace. parameters: - name: scimWorkspaceGroupId in: path required: true schema: type: string description: ID of the SCIM workspace mapping to delete responses: '200': description: OK headers: Content-Type: schema: type: string example: application/json content: application/json: schema: type: object properties: success: type: boolean example: success: true x-code-samples: - lang: curl label: Default source: 'curl -X DELETE https://api.portkey.ai/v1/scim/workspaces/MAPPING_ID \ -H "x-portkey-api-key: PORTKEY_API_KEY" ' - lang: curl label: Self-Hosted source: 'curl -X DELETE SELF_HOSTED_CONTROL_PLANE_URL/scim/workspaces/MAPPING_ID \ -H "x-portkey-api-key: PORTKEY_API_KEY" ' components: schemas: WorkspaceWithUsers: type: object properties: id: type: string example: ws-test-a-174eb1 slug: type: string example: ws-test-a-174eb1 name: type: string example: New Workspace description: type: string nullable: true example: null created_at: type: string format: date-time example: 2024-07-30 13:27:29+00:00 last_updated_at: type: string format: date-time example: 2024-07-30 13:27:29+00:00 defaults: type: object nullable: true properties: metadata: type: object additionalProperties: type: string example: foo: bar is_default: type: integer example: 0 input_guardrails: type: array items: type: string output_guardrails: type: array items: type: string object: type: string enum: - workspace users: type: array items: type: object $ref: '#/components/schemas/WorkspaceMember' usage_limits: type: array items: $ref: '#/components/schemas/UsageLimits' rate_limits: type: array items: $ref: '#/components/schemas/RateLimits' ScimWorkspaceMapping: type: object properties: id: type: string description: Unique ID of the mapping workspace_id: type: string description: ID of the mapped workspace scim_group: type: string description: Display name of the SCIM group role: type: string enum: - admin - member - manager description: Role assigned to group members scim_group_id: type: string description: ID of the SCIM group example: id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 workspace_id: ws-12345 scim_group: Engineering Team role: member scim_group_id: d290f1ee-6c54-4b01-90e6-d701748f0851 WorkspaceList: type: object properties: total: type: integer example: 2 object: type: string enum: - list data: type: array items: $ref: '#/components/schemas/Workspace' Workspace: type: object properties: id: type: string example: ws-test-a-174eb1 slug: type: string example: ws-test-a-174eb1 name: type: string example: New Workspace description: type: string nullable: true example: null created_at: type: string format: date-time example: 2024-07-30 13:27:29+00:00 last_updated_at: type: string format: date-time example: 2024-07-30 13:27:29+00:00 defaults: type: object nullable: true properties: metadata: type: object additionalProperties: type: string example: foo: bar is_default: type: integer example: 0 object: type: string enum: - workspace usage_limits: type: array items: $ref: '#/components/schemas/UsageLimits' rate_limits: type: array items: $ref: '#/components/schemas/RateLimits' WorkspaceMember: type: object properties: object: type: string example: workspace-user enum: - workspace-user id: type: string format: uuid example: 66dc015d-0270-11f1-8eec-0e27d7367989 first_name: type: string example: John last_name: type: string example: Doe org_role: type: string example: admin enum: - admin - member - owner role: type: string example: admin enum: - admin - member - manager created_at: type: string format: date-time example: '2026-03-09T07:55:25.000Z' last_updated_at: type: string format: date-time example: '2026-03-09T07:55:25.000Z' status: type: string example: active enum: - active workspace_id: type: string format: uuid example: bf276bb9-4cef-4d87-b69b-b23a6ed6b1dd email: type: string format: email example: john.doe@example.com scopes: type: array items: type: string example: - organisations.read - organisation_users.read - workspaces.read - logs.list - logs.view - prompts.create - prompts.read - prompts.list - configs.create - configs.read - configs.list - virtual_keys.create - virtual_keys.read - virtual_keys.list - workspace_users.create - workspace_users.read - workspace_users.list - generations.create settings: type: object nullable: true example: null UsageLimits: type: object properties: credit_limit: type: integer description: Credit Limit. Used for tracking usage minimum: 1 default: null type: type: string description: Type of credit limit enum: - cost - tokens alert_threshold: type: integer description: Alert Threshold. Used for alerting when usage reaches more than this minimum: 1 default: null periodic_reset: type: string description: Reset the usage periodically. enum: - monthly - weekly nullable: true example: monthly periodic_reset_days: type: integer description: Reset the usage counter every N days (1-365). Mutually exclusive with periodic_reset. minimum: 1 maximum: 365 nullable: true example: 30 next_usage_reset_at: type: string format: date-time description: ISO 8601 datetime for the next scheduled usage reset. Auto-computed from periodic_reset or periodic_reset_days if not provided. nullable: true example: '2026-05-01T00:00:00Z' example: credit_limit: 10 periodic_reset: monthly alert_threshold: 8 RateLimits: type: object properties: type: type: string enum: - requests - tokens unit: type: string enum: - rpd - rph - rpm value: type: integer securitySchemes: Portkey-Key: type: apiKey in: header name: x-portkey-api-key Virtual-Key: type: apiKey in: header name: x-portkey-virtual-key Provider-Auth: type: http scheme: bearer Provider-Name: type: apiKey in: header name: x-portkey-provider Config: type: apiKey in: header name: x-portkey-config Custom-Host: type: apiKey in: header name: x-portkey-custom-host x-server-groups: ControlPlaneServers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_CONTROL_PLANE_URL description: Self-Hosted Control Plane URL DataPlaneServers: - url: https://api.portkey.ai/v1 description: Portkey API Public Endpoint - url: SELF_HOSTED_GATEWAY_URL description: Self-Hosted Gateway URL PublicServers: - url: https://api.portkey.ai description: Portkey Public API (no auth required) x-mint: mcp: enabled: true name: Portkey MCP description: Official MCP Server for Portkey Docs & APIs x-code-samples: navigationGroups: - id: endpoints title: Endpoints - id: assistants title: Assistants - id: legacy title: Legacy groups: - id: audio title: Audio description: 'Learn how to turn audio into text or text into audio. Related guide: [Speech to text](https://platform.openai.com/docs/guides/speech-to-text) ' navigationGroup: endpoints sections: - type: endpoint key: createSpeech path: createSpeech - type: endpoint key: createTranscription path: createTranscription - type: endpoint key: createTranslation path: createTranslation - type: object key: CreateTranscriptionResponseJson path: json-object - type: object key: CreateTranscriptionResponseVerboseJson path: verbose-json-object - id: chat title: Chat description: 'Given a list of messages comprising a conversation, the model will return a response. Related guide: [Chat Completions](https://platform.openai.com/docs/guides/text-generation) ' navigationGroup: endpoints sections: - type: endpoint key: createChatCompletion path: create - type: object key: CreateChatCompletionResponse path: object - type: object key: CreateChatCompletionStreamResponse path: streaming - id: realtime title: Realtime description: 'WebSocket proxy for provider Realtime APIs (`GET` upgrade). Use `wss://` with the same `/v1` data-plane base as other gateway routes. Related guide: [OpenAI Realtime API](https://platform.openai.com/docs/guides/realtime) ' navigationGroup: endpoints sections: - type: endpoint key: connectRealtime path: connect - id: embeddings title: Embeddings description: 'Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms. Related guide: [Embeddings](https://platform.openai.com/docs/guides/embeddings) ' navigationGroup: endpoints sections: - type: endpoint key: createEmbedding path: create - type: object key: Embedding path: object - id: rerank title: Rerank description: 'Rerank a list of documents based on their relevance to a query. Reranking improves search results by scoring documents based on semantic relevance rather than keyword matching. Supported providers: Cohere, Voyage, Jina, Pinecone, Bedrock, Azure AI. ' navigationGroup: endpoints sections: - type: endpoint key: createRerank path: create - type: object key: CreateRerankResponse path: object - id: fine-tuning title: Fine-tuning description: 'Manage fine-tuning jobs to tailor a model to your specific training data. Related guide: [Fine-tune models](https://platform.openai.com/docs/guides/fine-tuning) ' navigationGroup: endpoints sections: - type: endpoint key: createFineTuningJob path: create - type: endpoint key: listPaginatedFineTuningJobs path: list - type: endpoint key: listFineTuningEvents path: list-events - type: endpoint key: listFineTuningJobCheckpoints path: list-checkpoints - type: endpoint key: retrieveFineTuningJob path: retrieve - type: endpoint key: cancelFineTuningJob path: cancel - type: object key: FinetuneChatRequestInput path: chat-input - type: object key: FinetuneCompletionRequestInput path: completions-input - type: object key: FineTuningJob path: object - type: object key: FineTuningJobEvent path: event-object - type: object key: FineTuningJobCheckpoint path: checkpoint-object - id: batch title: Batch description: 'Create large batches of API requests for asynchronous processing. The Batch API returns completions within 24 hours for a 50% discount. Related guide: [Batch](https://platform.openai.com/docs/guides/batch) ' navigationGroup: endpoints sections: - type: endpoint key: createBatch path: create - type: endpoint key: retrieveBatch path: retrieve - type: endpoint key: cancelBatch path: cancel - type: endpoint key: listBatches path: list - type: object key: Batch path: object - type: object key: BatchRequestInput path: request-input - type: object key: BatchRequestOutput path: request-output - id: files title: Files description: 'Files are used to upload documents that can be used with features like [Assistants](https://platform.openai.com/docs/api-reference/assistants), [Fine-tuning](https://platform.openai.com/docs/api-reference/fine-tuning), and [Batch API](https://platform.openai.com/docs/guides/batch). ' navigationGroup: endpoints sections: - type: endpoint key: createFile path: create - type: endpoint key: listFiles path: list - type: endpoint key: retrieveFile path: retrieve - type: endpoint key: deleteFile path: delete - type: endpoint key: downloadFile path: retrieve-contents - type: object key: OpenAIFile path: object - id: images title: Images description: 'Given a prompt and/or an input image, the model will generate a new image. Related guide: [Image generation](https://platform.openai.com/docs/guides/images) ' navigationGroup: endpoints sections: - type: endpoint key: createImage path: create - type: endpoint key: createImageEdit path: createEdit - type: endpoint key: createImageVariation path: createVariation - type: object key: Image path: object - id: models title: Models description: 'List and describe the various models available in the API. You can refer to the [Models](https://platform.openai.com/docs/models) documentation to understand what models are available and the differences between them. ' navigationGroup: endpoints sections: - type: endpoint key: listModels path: list - type: endpoint key: retrieveModel path: retrieve - type: endpoint key: deleteModel path: delete - type: object key: Model path: object - id: moderations title: Moderations description: 'Given some input text, outputs if the model classifies it as potentially harmful across several categories. Related guide: [Moderations](https://platform.openai.com/docs/guides/moderation) ' navigationGroup: endpoints sections: - type: endpoint key: createModeration path: create - type: object key: CreateModerationResponse path: object - id: assistants title: Assistants beta: true description: 'Build assistants that can call models and use tools to perform tasks. [Get started with the Assistants API](https://platform.openai.com/docs/assistants) ' navigationGroup: assistants sections: - type: endpoint key: createAssistant path: createAssistant - type: endpoint key: listAssistants path: listAssistants - type: endpoint key: getAssistant path: getAssistant - type: endpoint key: modifyAssistant path: modifyAssistant - type: endpoint key: deleteAssistant path: deleteAssistant - type: object key: AssistantObject path: object - id: threads title: Threads beta: true description: 'Create threads that assistants can interact with. Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview) ' navigationGroup: assistants sections: - type: endpoint key: createThread path: createThread - type: endpoint key: getThread path: getThread - type: endpoint key: modifyThread path: modifyThread - type: endpoint key: deleteThread path: deleteThread - type: object key: ThreadObject path: object - id: messages title: Messages beta: true description: 'Create messages within threads Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview) ' navigationGroup: assistants sections: - type: endpoint key: createMessage path: createMessage - type: endpoint key: listMessages path: listMessages - type: endpoint key: getMessage path: getMessage - type: endpoint key: modifyMessage path: modifyMessage - type: endpoint key: deleteMessage path: deleteMessage - type: object key: MessageObject path: object - id: runs title: Runs beta: true description: 'Represents an execution run on a thread. Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview) ' navigationGroup: assistants sections: - type: endpoint key: createRun path: createRun - type: endpoint key: createThreadAndRun path: createThreadAndRun - type: endpoint key: listRuns path: listRuns - type: endpoint key: getRun path: getRun - type: endpoint key: modifyRun path: modifyRun - type: endpoint key: submitToolOuputsToRun path: submitToolOutputs - type: endpoint key: cancelRun path: cancelRun - type: object key: RunObject path: object - id: run-steps title: Run Steps beta: true description: 'Represents the steps (model and tool calls) taken during the run. Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview) ' navigationGroup: assistants sections: - type: endpoint key: listRunSteps path: listRunSteps - type: endpoint key: getRunStep path: getRunStep - type: object key: RunStepObject path: step-object - id: vector-stores title: Vector Stores beta: true description: 'Vector stores are used to store files for use by the `file_search` tool. Related guide: [File Search](https://platform.openai.com/docs/assistants/tools/file-search) ' navigationGroup: assistants sections: - type: endpoint key: createVectorStore path: create - type: endpoint key: listVectorStores path: list - type: endpoint key: getVectorStore path: retrieve - type: endpoint key: modifyVectorStore path: modify - type: endpoint key: deleteVectorStore path: delete - type: object key: VectorStoreObject path: object - id: vector-stores-files title: Vector Store Files beta: true description: 'Vector store files represent files inside a vector store. Related guide: [File Search](https://platform.openai.com/docs/assistants/tools/file-search) ' navigationGroup: assistants sections: - type: endpoint key: createVectorStoreFile path: createFile - type: endpoint key: listVectorStoreFiles path: listFiles - type: endpoint key: getVectorStoreFile path: getFile - type: endpoint key: deleteVectorStoreFile path: deleteFile - type: object key: VectorStoreFileObject path: file-object - id: vector-stores-file-batches title: Vector Store File Batches beta: true description: 'Vector store file batches represent operations to add multiple files to a vector store. Related guide: [File Search](https://platform.openai.com/docs/assistants/tools/file-search) ' navigationGroup: assistants sections: - type: endpoint key: createVectorStoreFileBatch path: createBatch - type: endpoint key: getVectorStoreFileBatch path: getBatch - type: endpoint key: cancelVectorStoreFileBatch path: cancelBatch - type: endpoint key: listFilesInVectorStoreBatch path: listBatchFiles - type: object key: VectorStoreFileBatchObject path: batch-object - id: assistants-streaming title: Streaming beta: true description: 'Stream the result of executing a Run or resuming a Run after submitting tool outputs. You can stream events from the [Create Thread and Run](https://platform.openai.com/docs/api-reference/runs/createThreadAndRun), [Create Run](https://platform.openai.com/docs/api-reference/runs/createRun), and [Submit Tool Outputs](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs) endpoints by passing `"stream": true`. The response will be a [Server-Sent events](https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events) stream. Our Node and Python SDKs provide helpful utilities to make streaming easy. Reference the [Assistants API quickstart](https://platform.openai.com/docs/assistants/overview) to learn more. ' navigationGroup: assistants sections: - type: object key: MessageDeltaObject path: message-delta-object - type: object key: RunStepDeltaObject path: run-step-delta-object - type: object key: AssistantStreamEvent path: events - id: completions title: Completions legacy: true navigationGroup: legacy description: 'Given a prompt, the model will return one or more predicted completions along with the probabilities of alternative tokens at each position. Most developer should use our [Chat Completions API](https://platform.openai.com/docs/guides/text-generation/text-generation-models) to leverage our best and newest models. ' sections: - type: endpoint key: createCompletion path: create - type: object key: CreateCompletionResponse path: object