Direct Provider Keys
Layer direct Anthropic, OpenAI, or Google keys on top of OpenRouter to save ~5%.
Direct provider keys are optional. OpenRouter is still required — it covers every model Ticket0 uses and acts as the automatic fallback when a direct-provider call fails. Adding direct keys alongside OpenRouter bypasses OpenRouter's ~5% markup for calls that can use the direct provider, while keeping OpenRouter as a reliability safety net.
See Setting up your OpenRouter key if you haven't added OpenRouter yet.
Ticket0 accepts direct keys from:
- Anthropic — Claude models
- OpenAI — GPT and embedding models
- Google — Gemini models
When to add direct keys
| Scenario | Add direct keys? |
|---|---|
| You have a negotiated rate or credits with a provider | Yes — you'll save money on the calls that hit that provider |
| You're subject to data residency rules that need a specific provider's region | Yes — routing through OpenRouter adds an extra hop |
| You want to minimise your AI bill | Yes — skip OpenRouter's markup for all three providers |
| You just want something that works end to end | No — OpenRouter alone is enough |
Adding an Anthropic key
- Get a key from console.anthropic.com → API Keys
- In Ticket0, go to AI Agent → API Keys
- Paste your key into the Anthropic API key field
- Click Test to verify, then Save
Adding an OpenAI key
- Get a key from platform.openai.com → API keys
- In Ticket0, go to AI Agent → API Keys
- Paste your key into the OpenAI API key field
- Click Test, then Save
Adding a Google key
- Get a key from aistudio.google.com → Get API key
- In Ticket0, go to AI Agent → API Keys
- Paste your key into the Google API key field
- Click Test, then Save
How routing works with direct keys
Ticket0 picks the model for each task internally (fast/cheap for classification, higher-quality for drafts, a dedicated embedding model for the KB, etc.). You don't configure providers per task — Ticket0 looks at which model is needed, checks whether a direct key is configured for that model's provider, and decides:
- Direct key configured for the required provider → call the provider directly. If the call fails (outage, rate limit, transient network error), automatically retry the same request via OpenRouter.
- No direct key for that provider → call via OpenRouter.
You end up paying the cheaper direct rate when things are healthy, and you still get an answer back when a provider has a bad day.
If you remove your OpenRouter key, the automatic fallback goes away — direct-provider outages will surface to operators as AI errors. Keep OpenRouter configured even if all three direct keys are set.