BazaarLinkBazaarLink
Sign in
BETA

Virtual Models: one name
for your keys, compute and credits

Chain your own API keys (BYOK), your own compute (BYOC) and platform credits into a fallback route that takes over automatically. Your code calls vm/<slug>; switching models or providers never touches the code.

Create a virtual modelRead the docs

Each request walks your chain until a step answers

If a step fails (timeout, 429, 5xx, source unavailable) the next one takes over. Only the step that succeeds is billed.

How does one request travel?
Your app
model: "vm/writer"
BazaarLink virtual model
vm/writer
① BYOK
Your BYOK key
Billed to: your upstream account
② BYOC
Your GPU node
Model fee: zero
③ Platform credits
BazaarLink platform
Billed to: Platform credits
Your app sends the request as usual. No code change.

Illustrative animation. 429, 5xx, timeouts or an unavailable source move to the next step; other client errors stop; nothing is retried once output has started. Steps that use platform credits require your consent.

Your app: model: "vm/writer" → vm/writer Next step only on failure

  1. BYOK openai/gpt-6.1-sol Your own OpenAI key first
  2. BYOC qwen/qwen3.8-27b Then your own GPU
  3. Platform credits openai/gpt-6-luna BazaarLink as the safety net

Why virtual models

Swap models without code changes

Your code only says vm/<slug>. Change the main model, add a fallback or reorder in the dashboard and it applies immediately.

Spend your own quota first

BYOK keys and BYOC nodes go first; platform credits step in only when needed, so cost stays lowest.

Cross-model, cross-source fallback

Sol overloaded? Fall back to Luna. Cloud outage? Fall back to your own GPU. Every step can use a different model.

Cost per virtual model

Usage and spend are grouped by vm name, so each team or product line sees its own cost.

Works on all three APIs

/v1/chat/completions, /v1/responses and /v1/messages — keep your OpenAI and Anthropic SDKs.

Personal and organization scopes

Accounts and organizations each have their own namespace; org members share the same virtual models.

Your parameters, untouched

Temperature, reasoning effort and system prompts pass through as sent; the virtual model only decides who answers.

Falls back only when it should

Client errors such as 4xx are returned, not retried, and a stream that has started is never switched mid-way.

Start in three steps

01

Create a virtual model

Open Virtual Models in the dashboard and pick a name such as writer.

02

Order the chain

Choose a source (BYOK, BYOC or platform credits) and a model for each step, then reorder.

03

Set model to vm/<slug>

Nothing else in your code changes.

Python · OpenAI SDK
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["BAZAARLINK_API_KEY"], base_url="https://api.bazaarlink.ai/v1")
reply = client.chat.completions.create(
    model="vm/writer",
    messages=[{"role": "user", "content": "Hello"}],
)

How it differs from ordinary model fallback

Typical gateway fallbackBazaarLink virtual models
Fallback sourcesOnly the platform's own modelsYour keys, your GPUs and platform credits in one chain
OrderDecided by the platformEntirely yours, change it any time
Changing modelsEdit the model name in codeEdit the chain, code untouched
Cost attributionMixed into the total billReported per virtual model

Rules

  • 429, 5xx, timeouts or an unavailable source move to the next step; 4xx client errors are returned without retrying.
  • Once streaming has started the source is never switched, so responses are not duplicated or mixed.
  • The successful step is billed under its existing BYOK, BYOC or platform rules; failed attempts are not charged inference credits.
  • Virtual models are in Beta; features and UI may change.

Let rules handle fallback. Spend your time on product.

Your first virtual model takes about a minute.

Create a virtual model
Support
Support
Hi! How can we help you?
Send a message and we'll get back to you soon.
Virtual Models (Beta) | BazaarLink | BazaarLink