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>"
  }
}

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 →

Learn More About Virtual Keys

Securely store your provider auth in Portkey vault and democratize and streamline access to Gen AI.

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>

Response

Successful response

success
boolean
data
object
I