Skip to main content
POST
/
virtual-keys
from portkey_ai import Portkey # Initialize the Portkey client portkey = Portkey( api_key="PORTKEY_API_KEY", ) # Add a new virtual key new_virtual_key = portkey.virtual_keys.create( name="openaiVKey", provider="openai", key="PROVIDER_API_KEY" ) print(new_virtual_key)
{
  "success": true,
  "data": {
    "slug": "<string>"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.portkey.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

Deprecated. Use the Integrations API to store provider credentials and the Providers API to create AI Providers in your workspace. Existing virtual keys continue to work — no code changes needed.

Azure OpenAI

Create virtual key to access your Azure OpenAI models or deployments, and manage all auth in one place.
from portkey_ai import Portkey

client = Portkey(
    api_key="<api_key>"
)

virtual_key = client.virtual_keys.create(
    name="Azure-Virtual-Default",
    provider="azure-openai",
    note="Azure Note",
    key="<api_key>",
    resourceName="<resource_name>",
    deploymentConfig=[
        {
            "apiVersion": "2024-08-01-preview",
            "deploymentName": "DeploymentName",
            "is_default": True,
        },
        {
            "apiVersion": "2024-08-01-preview",
            "deploymentName": "DeploymentNam2e",
            "is_default": False,
        },
    ],
)

print(virtual_key)
from portkey_ai import Portkey

client = Portkey(
    api_key="<api_key>"
)

virtual_key = client.virtual_keys.create(
    name="Azure-Virtual-entra",
    provider="azure-openai",
    note="azure entra",
    resourceName="<resource_name>",
    deploymentConfig=[
        {
            "deploymentName": "<deployment_name>",
            "is_default": True,
            "apiVersion": "2024-08-01-preview",
        }
    ],
    azureAuthMode="entra",
    azureEntraClientId="<client_id>",
    azureEntraClientSecret="<client_secret>",
    azureEntraTenantId="<tenantId>",
)

print(virtual_key)
from portkey_ai import Portkey

client = Portkey(
    api_key="<api_key>",
)

virtual_key = client.virtual_keys.create(
    name="Azure-Virtual-entra",
    provider="azure-openai",
    note="azure entra",
    resourceName="<resource_name>",
    deploymentConfig=[
        {
            "deploymentName": "<deployment_name>",
            "is_default": True,
            "apiVersion": "2024-08-01-preview",
        }
    ],
    azureAuthMode="managed",
    azureManagedClientId="<client-id>" # optional
)

print(virtual_key)

AWS Bedrock

Create virtual key to access your AWS Bedrock models or deployments, and manage all auth in one place.
from portkey_ai import Portkey

client = Portkey(
    api_key="<api_key>",
)

virtual_key = client.virtual_keys.create(
    name="bedrock-assumed",
    provider="bedrock",
    note="bedrock",
    awsRegion="<region>",
    awsAuthType="assumedRole",
    awsRoleArn="arn:aws:iam::<account_id>:role/<role_name>",
    awsExternalId="<external_id>",
)

print(virtual_key)

Vertex AI

Create virtual key to access any models available or hosted on Vertex AI. Docs →

Model Catalog

Manage AI providers and models centrally with budget limits, rate limits, and model provisioning.

Authorizations

x-portkey-api-key
string
header
required

Body

application/json
name
string
provider
enum<string>
Available options:
openai,
azure-openai,
ai21,
anthropic,
anyscale,
azure-openai,
bedrock,
cohere,
deepinfra,
fireworks-ai,
google,
groq,
hugging-face,
jina,
lingyi,
mistral-ai,
monsterapi,
moonshot,
nomic,
novita-ai,
open-ai,
openrouter,
palm,
perplexity-ai,
predibase,
reka-ai,
segmind,
stability-ai,
together-ai,
vertex-ai,
workers-ai,
zhipu
key
string
note
string | null
apiVersion
string | null
resourceName
string | null
deploymentName
string | null
workspace_id
string<uuid>

optional, needed when using organisation admin API keys

deploymentConfig
object[]
usage_limits
object
Example:
{
  "credit_limit": 10,
  "periodic_reset": "monthly",
  "alert_threshold": 8
}
rate_limits
object
expires_at
string<date-time>
secret_mappings
object[]

Dynamically resolve secrets from secret references at runtime. Valid target_field values are "key" or "model_config." (e.g. "model_config.awsSecretAccessKey"). Each target_field must be unique. When "key" is mapped, the key field becomes optional.

Response

Successful response

success
boolean
data
object
Last modified on April 28, 2026