---
title: "Create a routing key (optionally wired)"
method: POST
path: "/v1/organizations/routing-keys"
---

# Create a routing key (optionally wired)

`POST /v1/organizations/routing-keys`

## Request

- Base URL: `https://api.proxyllm.ai`
- URL: `https://api.proxyllm.ai/v1/organizations/routing-keys`
- Auth: HTTP bearer

Returns raw_key (pllm_) exactly once. Pass mode and a providers array to wire the provider chain in the same call; omit providers to create bare and wire later via PATCH.

## Request body

- object
  - `label` string
  - `mode` 'fallback' | 'classifier'
  - `monthly_budget_usd` number
  - `providers` ProviderLane[]
    - `provider` string, required: codex, bridge, or an API-key provider (openai, anthropic, openrouter, gemini, deepseek, xai, groq, mistral, together, fireworks, cerebras, perplexity, cohere).
    - `model` string, nullable
    - `credential_id` string, nullable: Required for API-key providers.
    - `codex_session_id` string, nullable: Required when provider is codex.
    - `bridge_instance_id` string, nullable: Required when provider is bridge.

## Response `200`

routing_key plus one-time raw_key.

## Other responses

- `400`: Invalid config or a referenced lane is not yours.
- `402`: No active membership. The body carries code=payment_required, a payment block (checkout_url, price_usd, account_expires_at), and a message written to be relayed to the account's human operator. Poll GET /v1/organizations/me until plan is "pro".

---

[API](https://skmtc.dev/proxyllm/apis/proxyllm-api.md) · [All operations](https://skmtc.dev/proxyllm/apis/proxyllm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/proxyllm/apis/proxyllm-api/revisions/35d93083b555?raw)
