Providers
The providers Solwyn wraps — OpenAI, Anthropic, Google Gemini, Amazon Bedrock, Together AI, and any OpenAI-compatible endpoint — and where to find each one's details.
Solwyn wraps the client you already use. The provider is auto-detected from the client you pass to Solwyn() — by client type, base_url host, the Azure client class, or a conventional local port — so budgets, per-agent attribution, failover, and the cost dashboard all see the real provider. Pick yours below for the sync and async examples, the token fields it reports, and its model support.
OpenAI
Wrap OpenAI() — chat, embeddings, images, audio, and Sora video, with the full token breakdown including reasoning and audio.
Anthropic
Wrap Anthropic() — messages API with prompt-cache creation and read normalization.
Google Gemini
Wrap genai.Client() — generate_content plus embeddings, Imagen, TTS, and Veo video, with thinking-token normalization.
Amazon Bedrock
Wrap boto3 bedrock-runtime — the Converse API, region-aware pricing, cache and service tiers.
Together AI
Wrap Together() — native sync and async chat, embeddings, images, and audio, with streaming usage and cached-token billing.
OpenAI-compatible
Point OpenAI(base_url=...) at xAI, DeepSeek, Mistral, Groq, Z.AI, Together, Azure OpenAI, OpenRouter, Ollama, vLLM, and more.
What each provider is priced for
This is the canonical provider × modality matrix: which modalities Solwyn Cloud prices for each provider it bills. Provider pages link here rather than restating it.
| Provider | text | embedding | image | audio | video |
|---|---|---|---|---|---|
| OpenAI | ✓ | ✓ | ✓ | ✓ | ✓ (Sora) |
| ✓ | ✓ | ✓ | ✓ | ✓ (Veo) | |
| Anthropic | ✓ | — | — | — | — |
| Bedrock | ✓ | — | — | — | — |
| Together | ✓ | ✓ | ✓ | ✓ | — |
| Groq | ✓ | — | — | ✓ | — |
| Mistral | ✓ | ✓ | — | — | — |
| Qwen | ✓ | ✓ | — | — | — |
| Fireworks | ✓ | ✓ | — | — | — |
| Perplexity | ✓ | ✓ | — | — | — |
| xAI | ✓ | — | — | — | — |
| DeepSeek | ✓ | — | — | — | — |
| OpenRouter | ✓ (allowlist) | — | — | — | — |
| Z.AI | ✓ | — | — | — | — |
What a "—" means. A dash is a decision, not a gap. When a call names a modality outside a provider's billed set, the Cloud API treats the model as deliberately unbilled — the pre-flight check answers with a structured 422, the SDK resolves it through the standard fail-open path, and the call proceeds. Never blocked for being unpriceable, never a fabricated $0. Two other lanes are distinct from this: an unknown model on a native or hosted provider fails loud — rejected rather than guessed at — while the local providers (ollama, vllm, lmstudio) and the generic openai_compatible catch-all have no price book at all, so any model there is recorded unpriced at $0 by design, visible in the dashboard's honesty lane. And one exception sits in front of all of this, in the SDK itself: when the wrapped client's adapter serves no seam for a surface at all — videos.create off OpenAI, embeddings.create on Anthropic — the call fails loud with UnsupportedSurfaceError before any budget check is made.
Footnotes to the matrix:
- Video is Sora and Veo only, priced per second on a resolution-gridded card, and it settles at initiation — a deliberate, conservative over-count flagged
is_estimated. - Bedrock bills every Anthropic model plus Amazon's Nova family, and nothing else. Other vendors and families fail loud as unknown models until a verified rate card lands; a model behind an opaque ARN the Cloud API cannot resolve is recorded unpriced.
- OpenRouter is billed from a pinned allowlist of model ids, not its full catalog.
- Local providers are never costed — recorded unpriced for visibility, an honesty lane rather than a $0 invoice line.
Configuring failover across providers? See Provider Failover. For the full list of provider identifiers, see the ProviderName table in SolwynConfig.