the governed gateway

Every model through one key.Every call on the record.

Send one request format to Switchyard and we patch it through to whichever model fits the job. Sensitive data is masked before it leaves. Every key carries a budget. Every call leaves a record your risk team can actually read.

ONE KEY → EVERY ROUTE

DeepSeekyour key
Moonshotyour key
Alibabaon the board
Anthropicon the board
Baiduon the board
ByteDanceon the board

live now on the board

Switch the model field, not your credentials.

what it takes to start

1

Endpoint to integrate

0

Contracts to sign

60s

From signup to first response

100%

Of calls logged and exportable

what you actually get

Four things, all of them checkable.

Nothing below is a roadmap item. Each one is a behaviour you can verify on your first request.

PII stays off the wire

Requests pass through a masking layer before they reach any model provider. Emails, phone numbers, and card numbers are replaced on the way out and restored on the way back — the provider never sees the raw values. Turn it off per request when you do not need it.

How masking works
out →  "contact: [MASKED_EMAIL_1]"
in  ←  "contact: ada@acme.co"

A budget on every key

Set a daily or monthly spend cap per key. Requests past the cap are rejected until it resets or you raise it. A runaway job shows up before the invoice does.

Set a spend cap
key  sk-sy-…9fK2    today  $4.20 / $25.00
key  sk-sy-…mQx7    today  $0.00 / $5.00

Every call on the record

Model, tokens, latency, cost, and whether masking was applied — recorded for every call and exportable as CSV. When someone asks what your team sent to which provider last quarter, you have an answer.

See what is logged
req_8f1c2b  deepseek-v4-pro
  1,204 tok   380ms   $0.0031   masked

One request shape for every provider

Every model answers through the same OpenAI-compatible schema, streaming included. Point an existing SDK at Switchyard and change one field.

Read the docs
POST /v1/chat/completions
{ "model": "deepseek-v4-pro", … }
{ "model": "kimi-k3",        … }

built for teams that have to answer for it

Your risk team has questions. This is where the answers live.

Adding a model provider used to mean another contract, another key in someone’s .env, another path for data to leave, another line item nobody owns. Adding five means five of each. Switchyard collapses that into one controlled entrance: providers change, your controls do not.

  • One integration point to review, not one per provider
  • Sensitive fields masked before they cross your boundary
  • A per-call record you can hand to audit
Talk to us about your team

on the board

What is wired up today.

We add models as we can actually serve them. Anything not yet live is marked, not hidden.

ModelProviderContextPriceStatus
deepseek-v4-flashDeepSeek128K$0.28 input / $1.10 output / 1M tokens
deepseek-v4-flash-0731DeepSeek128K$0.28 input / $1.10 output / 1M tokens
kimi-k3Moonshot256K$0.55 input / $2.20 output / 1M tokens
deepseek-v4-proDeepSeek128K$0.55 input / $2.10 output / 1M tokensComing soon
glm-5.3-flashZhipun/aPricing on requestComing soon
View all models

getting started

Three stops from signup to your first response.

01

Open an account

No card required. New accounts start with enough credit to send real requests the same day.

02

Cut a key

Generate a key from the dashboard, set its spend cap, and drop it into any OpenAI-compatible SDK.

03

Send the request

Name the model you want. Usage, cost, and the masking flag land on your dashboard as it happens.

Python · OpenAI SDK
from openai import OpenAI

client = OpenAI(
    api_key="sk-sy-...",
    base_url="https://api.switchyardai.io/v1",
)

resp = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "Say hi in five words."}],
)
print(resp.choices[0].message.content)

Get a key. Send a request. Read the record.

Trial credit to start. No subscription to cancel later.