Portkey Integrations API

Create, List, Retrieve, Update, and Delete your Portkey Integrations.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/portkey-integrations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

portkey-integrations-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Portkey Analytics > Graphs Integrations 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: Integrations
  description: Create, List, Retrieve, Update, and Delete your Portkey Integrations.
paths:
  /integrations:
    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:
      summary: List All Integrations
      tags:
      - Integrations
      parameters:
      - in: query
        name: current_page
        schema:
          type: integer
        description: Current page, defaults to 0
      - in: query
        name: page_size
        schema:
          type: integer
        description: Page size, default to 100
      - in: query
        name: workspace_id
        schema:
          type: string
        description: Filter integrations accessible by a specific workspace. When using workspace API keys, this value will be enforced based on the API key details
      - in: query
        name: type
        schema:
          type: string
          enum:
          - workspace
          - organisation
          - all
          default: all
        description: For type=workspace, the API will only return Workpace-Scoped integrations. For type=organisation, the API will only return Global (organisation level) integrations. For type=all, both types of integrations will be returned.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    enum:
                    - list
                  total:
                    type: integer
                    description: Total number of integrations
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/IntegrationList'
      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 integrations\nintegrations = portkey.integrations.list()\n\nprint(integrations)\n"
      - lang: javascript
        label: Default
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst integrations = await portkey.integrations.list({})\nconsole.log(integrations);\n"
      - lang: curl
        label: Default
        source: 'curl -X GET https://api.portkey.ai/v1/integrations \

          -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# List integrations\nintegrations = portkey.integrations.list()\n\nprint(integrations)\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 integrations = await portkey.integrations.list({})\nconsole.log(integrations);\n"
      - lang: curl
        label: Self-Hosted
        source: 'curl -X GET SELF_HOSTED_CONTROL_PLANE_URL/integrations \

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

          '
    post:
      summary: Create a Integration
      tags:
      - Integrations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateIntegrationRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: UUID
                  slug:
                    type: string
      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 new integration\nintegration = portkey.integrations.create(\n    name=\"openai-production\",\n    ai_provider_id=\"openai\",\n    key=\"sk-...\"\n)\n\nprint(integration)\n"
      - lang: javascript
        label: Default
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst integration = await portkey.integrations.create({\n    name:\"openai-production\",\n    ai_provider_id:\"openai\",\n    key:\"sk-...\",\n})\nconsole.log(integration);\n"
      - lang: curl
        label: Default
        source: "curl -X POST https://api.portkey.ai/v1/integrations \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n    \"name\": \"openai-production\",\n    \"ai_provider_id\": \"openai\",\n    \"key\": \"sk-...\"\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 new integration\nintegration = portkey.integrations.create(\n    name=\"openai-production\",\n    ai_provider_id=\"openai\",\n    key=\"sk-...\"\n)\n\nprint(integration)\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 integration = await portkey.integrations.create({\n    name: \"openai-production\",\n    ai_provider_id: \"openai\",\n    key: \"sk-...\",\n})\nconsole.log(integration);\n"
      - lang: curl
        label: Self-Hosted
        source: "curl -X POST SELF_HOSTED_CONTROL_PLANE_URL/integrations \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n    \"name\": \"openai-production\",\n    \"ai_provider_id\": \"openai\",\n    \"key\": \"sk-...\"\n}'\n"
  /integrations/{slug}:
    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:
      summary: Get a Integration
      tags:
      - Integrations
      parameters:
      - in: path
        name: slug
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationDetailResponse'
      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 a specific virtual key\nvirtual_key = portkey.virtual_keys.retrieve(\n    slug='VIRTUAL_KEY_SLUG'\n)\n\nprint(virtual_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 vKey=await portkey.virtualKeys.retrieve({\n    slug:'VIRTUAL_KEY_SLUG'\n})\nconsole.log(vKey);\n"
      - lang: curl
        label: Default
        source: 'curl -X GET https://api.portkey.ai/v1/virtual-keys/VIRTUAL_KEY_SLUG \

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

          '
      - lang: curl
        label: Self-Hosted
        source: 'curl -X GET SELF_HOSTED_CONTROL_PLANE_URL/virtual-keys/VIRTUAL_KEY_SLUG \

          -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 a specific virtual key\nvirtual_key = portkey.virtual_keys.retrieve(\n    slug='VIRTUAL_KEY_SLUG'\n)\n\nprint(virtual_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 vKey=await portkey.virtualKeys.retrieve({\n    slug:'VIRTUAL_KEY_SLUG'\n})\nconsole.log(vKey);\n"
    put:
      summary: Update a Integration
      tags:
      - Integrations
      parameters:
      - in: path
        name: slug
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIntegrationRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
      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 a specific integration\nintegration = portkey.integrations.update(\n    slug=\"INTEGRATION_SLUG',\n    name=\"updated-name\",\n    note=\"hello\"\n)\n\nprint(integration)\n"
      - lang: javascript
        label: Default
        source: "import { Portkey } from \"portkey-ai\";\n\nconst portkey = new Portkey({\n    apiKey: \"PORTKEY_API_KEY\",\n})\n\nconst integration = await portkey.integrations.update({\n    slug:\"INTEGRATION_SLUG\",\n    name:\"updated-name\",\n    note:\"hello\"\n})\nconsole.log(integration);\n"
      - lang: curl
        label: Default
        source: "curl -X PUT \"https://api.portkey.ai/v1/integrations/INTEGRATION_SLUG\" \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n    \"name\": \"updated-name\",\n    \"note\": \"hello\"\n}'\n"
      - lang: curl
        label: Self-Hosted
        source: "curl -X PUT \"SELF_HOSTED_CONTROL_PLANE_URL/integrations/INTEGRATION_SLUG\" \\\n-H \"x-portkey-api-key: PORTKEY_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n    \"name\": \"updated-name\",\n    \"note\": \"hello\"\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 a specific integration\nintegration = portkey.integrations.update(\n    slug=\"INTEGRATION_SLUG',\n    name=\"updated-name\",\n    note=\"hello\"\n)\n\nprint(integration)\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 integration = await portkey.integrations.update({\n    slug:'INTEGRATION_SLUG',\n    name:\"updated-name\",\n    note:\"hello\"\n})\nconsole.log(integration);\n"
    delete:
      summary: Delete a Integration
      tags:
      - Integrations
      parameters:
      - in: path
        name: slug
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
      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 a specific integration\nresult = portkey.integrations.delete(\n    slug=\"INTEGRATION_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 result=await portkey.integrations.delete({\n    slug:'INTEGRATION_SLUG',\n})\nconsole.log(result);\n"
      - lang: curl
        label: Default
        source: 'curl -X DELETE https://api.portkey.ai/v1/integrations/INTEGRATION_SLUG

          '
      - lang: curl
        label: Self-Hosted
        source: 'curl -X DELETE https://SELF_HOSTED_CONTROL_PLANE_URL/integrations/INTEGRATION_SLUG

          '
      - 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 a specific integration\nresult = portkey.integrations.delete(\n    slug=\"INTEGRATION_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 result=await portkey.integrations.delete({\n    slug:\"INTEGRATION_SLUG\",\n})\nconsole.log(result);\n"
components:
  schemas:
    AzureAIConfiguration:
      type: object
      required:
      - azure_foundry_url
      - azure_auth_mode
      properties:
        azure_auth_mode:
          type: string
          enum:
          - default
          - entra
          - managed
          description: Authentication mode for Azure AI
        azure_foundry_url:
          type: string
          description: Azure AI Foundry URL
        azure_api_version:
          type: string
          maxLength: 30
          description: Azure API version
        azure_deployment_name:
          type: string
          description: Azure deployment name
        azure_entra_tenant_id:
          type: string
          description: Azure AD tenant ID (required for entra auth)
        azure_entra_client_id:
          type: string
          description: Azure AD client ID (required for entra auth)
        azure_entra_client_secret:
          type: string
          description: Azure AD client secret (required for entra auth)
        azure_managed_client_id:
          type: string
          description: Managed identity client ID (optional for managed auth)
    AzureDeploymentConfig:
      type: object
      required:
      - azure_api_version
      - azure_deployment_name
      - azure_model_slug
      properties:
        alias:
          type: string
          description: Alias for the deployment
        azure_api_version:
          type: string
          maxLength: 30
          description: Azure API version
        azure_deployment_name:
          type: string
          description: Azure deployment name
        is_default:
          type: boolean
          default: false
          description: Whether this is the default deployment
        azure_model_slug:
          type: string
          description: Azure model slug
    SecretMapping:
      type: object
      required:
      - target_field
      - secret_reference_id
      properties:
        target_field:
          type: string
          description: 'The field on the entity to populate from the secret reference. Must be unique within the array.

            - **Integrations**: `key` or `configurations.<field>` (e.g. `configurations.aws_secret_access_key`)

            - **Virtual Keys**: `key` or `model_config.<field>` (e.g. `model_config.awsSecretAccessKey`)

            '
          example: key
        secret_reference_id:
          type: string
          description: UUID or slug of the secret reference. Must belong to the same organisation and be accessible by the workspace.
          example: my-aws-secret
        secret_key:
          type: string
          nullable: true
          description: Override the secret_key defined on the secret reference. Use to pick a specific key from a multi-value secret.
    GlobalWorkspaceAccess:
      type: object
      required:
      - enabled
      properties:
        enabled:
          type: boolean
          description: Whether global workspace access is enabled. When enabled, the integration will be enabled for all workspaces that are created in future.
        usage_limits:
          type: array
          nullable: true
          maxItems: 1
          items:
            $ref: '#/components/schemas/UsageLimits'
        rate_limits:
          type: array
          nullable: true
          maxItems: 1
          items:
            $ref: '#/components/schemas/RateLimits'
    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
    SageMakerConfiguration:
      allOf:
      - $ref: '#/components/schemas/BedrockConfiguration'
      - type: object
        properties:
          amzn_sagemaker_custom_attributes:
            type: string
            description: Custom attributes for SageMaker
          amzn_sagemaker_target_model:
            type: string
            description: Target model for SageMaker
          amzn_sagemaker_target_variant:
            type: string
            description: Target variant for SageMaker
          amzn_sagemaker_target_container_hostname:
            type: string
            description: Target container hostname
          amzn_sagemaker_inference_id:
            type: string
            description: Inference ID
          amzn_sagemaker_enable_explanations:
            type: string
            description: Enable explanations
          amzn_sagemaker_inference_component:
            type: string
            description: Inference component
          amzn_sagemaker_session_id:
            type: string
            description: Session ID
          amzn_sagemaker_model_name:
            type: string
            description: Model name
    UpdateIntegrationRequest:
      type: object
      properties:
        name:
          type: string
          description: Human-readable name for the integration
          example: Production OpenAI
        key:
          type: string
          description: API key for the provider (if required)
          example: sk-...
        description:
          type: string
          description: Optional description of the integration
          example: Production OpenAI integration for customer-facing applications
        configurations:
          type: object
          description: Provider-specific configuration object
          oneOf:
          - $ref: '#/components/schemas/OpenAIConfiguration'
            title: OpenAI
          - $ref: '#/components/schemas/AzureOpenAIConfiguration'
            title: Azure OpenAI
          - $ref: '#/components/schemas/BedrockConfiguration'
            title: AWS Bedrock
          - $ref: '#/components/schemas/VertexAIConfiguration'
            title: Vertex AI
          - $ref: '#/components/schemas/AzureAIConfiguration'
            title: Azure AI
          - $ref: '#/components/schemas/WorkersAIConfiguration'
            title: Workers AI
          - $ref: '#/components/schemas/SageMakerConfiguration'
            title: AWS Sagemaker
          - $ref: '#/components/schemas/HuggingFaceConfiguration'
            title: Hugginface
          - $ref: '#/components/schemas/CortexConfiguration'
            title: Cortex
          - $ref: '#/components/schemas/CustomHostConfiguration'
            title: Custom Base URL
        secret_mappings:
          type: array
          items:
            $ref: '#/components/schemas/SecretMapping'
          description: Dynamically resolve secrets from secret references at runtime. Valid target_field values are "key" or "configurations.<field>" (e.g. "configurations.aws_secret_access_key", "configurations.azure_entra_client_secret"). Each target_field must be unique.
    AzureOpenAIConfiguration:
      type: object
      required:
      - azure_resource_name
      - azure_deployment_config
      - azure_auth_mode
      properties:
        azure_auth_mode:
          type: string
          enum:
          - default
          - entra
          - managed
          description: Authentication mode for Azure
        azure_resource_name:
          type: string
          description: Azure OpenAI resource name
        azure_deployment_config:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/AzureDeploymentConfig'
        azure_entra_tenant_id:
          type: string
          description: Azure AD tenant ID (required for entra auth)
        azure_entra_client_id:
          type: string
          description: Azure AD client ID (required for entra auth)
        azure_entra_client_secret:
          type: string
          description: Azure AD client secret (required for entra auth)
        azure_managed_client_id:
          type: string
          description: Managed identity client ID (optional for managed auth)
    BedrockConfiguration:
      type: object
      required:
      - aws_auth_type
      - aws_region
      properties:
        aws_auth_type:
          type: string
          enum:
          - accessKey
          - assumedRole
          description: AWS authentication type
        aws_region:
          type: string
          description: AWS region
        aws_access_key_id:
          type: string
          description: AWS access key ID (required for accessKey auth)
        aws_secret_access_key:
          type: string
          description: AWS secret access key (required for accessKey auth)
        aws_role_arn:
          type: string
          description: AWS role ARN (required for assumedRole auth)
        aws_external_id:
          type: string
          nullable: true
          description: AWS external ID (optional for assumedRole auth)
    CreateIntegrationRequest:
      type: object
      required:
      - name
      - ai_provider_id
      properties:
        name:
          type: string
          description: Human-readable name for the integration
          example: Production OpenAI
        slug:
          type: string
          pattern: ^[a-zA-Z0-9_-]+$
          description: URL-friendly identifier (auto-generated if not provided)
          example: production-openai
        ai_provider_id:
          type: string
          description: ID of the base AI provider
          example: openai
        key:
          type: string
          description: API key for the provider (if required)
          example: sk-...
        description:
          type: string
          description: Optional description of the integration
          example: Production OpenAI integration for customer-facing applications
        workspace_id:
          type: string
          description: Workspace ID (for workspace-scoped integrations)
          example: ws-my-team-1234
        configurations:
          type: object
          description: Provider-specific configuration object
          oneOf:
          - $ref: '#/components/schemas/OpenAIConfiguration'
            title: OpenAI
          - $ref: '#/components/schemas/AzureOpenAIConfiguration'
            title: Azure OpenAI
          - $ref: '#/components/schemas/BedrockConfiguration'
            title: AWS Bedrock
          - $ref: '#/components/schemas/VertexAIConfiguration'
            title: Vertex AI
          - $ref: '#/components/schemas/AzureAIConfiguration'
            title: Azure AI
          - $ref: '#/components/schemas/WorkersAIConfiguration'
            title: Workers AI
          - $ref: '#/components/schemas/SageMakerConfiguration'
            title: AWS Sagemaker
          - $ref: '#/components/schemas/HuggingFaceConfiguration'
            title: Hugginface
          - $ref: '#/components/schemas/CortexConfiguration'
            title: Cortex
          - $ref: '#/components/schemas/CustomHostConfiguration'
            title: Custom Base URL
        create_default_provider:
          type: boolean
          default: true
          description: Whether to automatically create a default provider when creating a workspace-scoped integration. Defaults to true.
        default_provider_slug:
          type: string
          pattern: ^[a-zA-Z0-9_-]+$
          maxLength: 255
          description: Custom slug for the auto-created default provider. Only applicable for workspace-scoped integrations. If the slug already exists in the workspace, the request will fail with a validation error.
        secret_mappings:
          type: array
          items:
            $ref: '#/components/schemas/SecretMapping'
          description: Dynamically resolve secrets from secret references at runtime. Valid target_field values are "key" or "configurations.<field>" (e.g. "configurations.aws_secret_access_key", "configurations.azure_entra_client_secret"). Each target_field must be unique. When "key" is mapped, the key body field can be omitted.
    OpenAIConfiguration:
      type: object
      properties:
        openai_organization:
          type: string
          description: OpenAI organization ID
        openai_project:
          type: string
          description: OpenAI project ID
    CustomHostConfiguration:
      type: object
      properties:
        custom_host:
          type: string
          description: Custom host URL (can be used along with other provider specific configuration fields)
        custom_headers:
          type: object
          additionalProperties:
            type: string
          description: Custom headers to send with requests (can be used along with other provider specific configuration fields)
    CortexConfiguration:
      type: object
      required:
      - snowflake_account
      properties:
        snowflake_account:
          type: string
          description: Snowflake account identifier
    HuggingFaceConfiguration:
      type: object
      properties:
        huggingface_base_url:
          type: string
          description: Custom Hugging Face base URL
    IntegrationList:
      type: object
      properties:
        id:
          type: string
          format: UUID
        organisation_id:
          type: string
          format: UUID
        ai_provider_id:
          type: string
        name:
          type: string
        status:
          type: string
          enum:
          - active
          - archived
        created_at:
          type: string
          format: date-time
        last_updated_at:
          type: string
          format: date-time
          nullable: true
        slug:
          type: string
        description:
          type: string
        object:
          type: string
          enum:
          - integration
    IntegrationDetailResponse:
      allOf:
      - $ref: '#/components/schemas/IntegrationList'
      - type: object
        properties:
          masked_key:
            type: string
            description: Masked API key
          configurations:
            type: object
            description: 'Provider-specific configuration object


              **⚠️ Security Note - Response Masking:**

              When retrieving integration details, sensitive fields are automatically masked:

              - Sensitive fields get a `masked_` prefix (e.g., `client_secret` → `masked_client_secret`)

              - Non-sensitive fields (IDs, URLs, regions, etc.) remain unchanged

              '
            oneOf:
            - $ref: '#/components/schemas/OpenAIConfiguration'
              title: OpenAI
            - $ref: '#/components/schemas/AzureOpenAIConfiguration'
              title: Azure OpenAI
            - $ref: '#/components/schemas/BedrockConfiguration'
              title: AWS Bedrock
            - $ref: '#/components/schemas/VertexAIConfiguration'
              title: Vertex AI
            - $ref: '#/components/schemas/AzureAIConfiguration'
              title: Azure AI
            - $ref: '#/components/schemas/WorkersAIConfiguration'
              title: Workers AI
            - $ref: '#/components/schemas/SageMakerConfiguration'
              title: AWS Sagemaker
            - $ref: '#/components/schemas/HuggingFaceConfiguration'
              title: Hugginface
            - $ref: '#/components/schemas/CortexConfiguration'
              title: Cortex
            - $ref: '#/components/schemas/CustomHostConfiguration'
              title: Custom Base URL
          global_workspace_access_settings:
            type: object
            nullable: true
            $ref: '#/components/schemas/GlobalWorkspaceAccess'
            description: Global workspace access configuration
          allow_all_models:
            type: boolean
            description: Whether new models will be enabled by default
          workspace_count:
            type: integer
            description: Number of workspaces with access to this integration
          secret_mappings:
            type: array
            items:
              $ref: '#/components/schemas/SecretMapping'
            description: Secret reference mappings for this integration. Valid target_field values are "key" or "configurations.<field>".
    WorkersAIConfiguration:
      type: object
      required:
      - workers_ai_account_id
      properties:
        workers_ai_account_id:
          type: string
          description: Cloudflare Workers AI account ID
    VertexAIConfiguration:
      type: object
      required:
      - vertex_auth_type
      - vertex_region
      properties:
        vertex_auth_type:
          type: string
          enum:
          - basic
          - serviceAccount
          description: Vertex AI authentication type
        vertex_region:
          type: string
          description: GCP region
        vertex_project_id:
          type: string
          description: GCP project ID (required for basic auth)
        vertex_service_account_json:
          type: object
          description: Service account JSON (required for serviceAccount auth)
  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:
  ControlP

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