Integrations
Twenty services built in, and any API you use
Every integration knows its provider: where money moves, which field names the model, how the key is sent. Your SDK keeps working unchanged.
Stripe
payments
Payments, customers and checkout.
PayPal
payments
Orders, captures and refunds, with OAuth handled for you.
Paddle
payments
Billing and subscriptions.
Lemon Squeezy
payments
Checkouts and store data.
OpenAI
AI
Chat, Responses, embeddings and Realtime.
Anthropic
AI
Messages and token counting.
Google Gemini
AI
Content generation and models.
Mistral
AI
Chat and embeddings.
Groq
AI
Fast chat completions.
xAI
AI
Chat and Responses.
OpenRouter
AI
One API for many models.
Resend
messaging
Transactional email.
SendGrid
messaging
Email delivery.
Postmark
messaging
Transactional email.
Mailgun
messaging
Email sending.
Twilio
messaging
SMS and messaging.
GitHub
developer
REST and GraphQL.
Cloudflare
developer
Account and zone APIs.
Vercel
developer
Projects and deployments.
AWS
cloud
S3, DynamoDB, Bedrock, SES, SQS and more, signed for you.
Any HTTPS API
Custom
Bearer, header, Basic auth or URL parameter. GraphQL too.
Connecting your app
Three ways to connect, from zero code to one line
Pick whichever fits. Paths, parameters and responses stay exactly the same in every case.
No code at all
Let the SDK read the address
The official OpenAI, Anthropic and Groq SDKs read their address from the environment. npx vallkey init adds it for you.
OPENAI_API_KEY=gk_openai_...OPENAI_BASE_URL=https://api.vallkey.com/v1No code, any SDK
Start your app with Vallkey
Requests that carry a ghost key go through Vallkey; everything else is untouched. Node.js and Python.
node -r vallkey/auto server.jsVALLKEY_AUTO=1 python app.pyOne line
Set the address in code
Every SDK that lets you change its address works, in any language. The docs have the line for each provider.
new Stripe(process.env.STRIPE_GHOST_KEY, { host: 'api.vallkey.com',})Built for each provider
Every integration knows what matters for its API
Generic proxies see bytes. Vallkey knows where the money is, which field names the model and how the key is sent.
Where money moves
Which model is used
How the key is sent
Every kind of call
Custom APIs
Not on the list? Two fields and you are done
Give Vallkey the API's address and tell it how the key is sent. The address is fixed for the life of the key, so nobody can point your real key somewhere else.
1# Before: the real key in every request2curl https://api.example.com/v2/orders \3 -H "x-api-key: $REAL_KEY"4 5# After: same path, a ghost key with rules6curl https://api.vallkey.com/v2/orders \7 -H "x-api-key: $GHOST_KEY"Protect the keys your product depends on
Protect your first key in five minutes. Free plan, no card needed.