Skip to content

Migration guide · 5 minutes

OpenRouter → QuickSilver Pro

Two lines of code. 75% lower on Claude Opus 5.5 and Sonnet 5.5, ~20% lower on Qwen 3.7 Plus and MiniMax M3. GLM-5.3 matches its selected OpenRouter endpoint; GPT-6.1 Sol is at list. For the comparative analysis, see /vs/openrouter.

Code changes
base_url · API key · model IDs
Model IDs to rename
17 mappings
Then
test your core flows end-to-end
  1. In your OpenAI SDK init, swap the base_url.

    diff
    - base_url="https://openrouter.ai/api/v1"
    + base_url="https://api.quicksilverpro.io/v1"
  2. Drop the provider/ prefix. The Qwen models also drop the trailing -a3b MoE-config suffix.

    OpenRouterQuickSilver Pro
    deepseek/deepseek-v4-flash-0731deepseek-v4-flash
    deepseek/deepseek-v4-prodeepseek-v4-pro
    qwen/qwen3.7-maxqwen3.7-max
    qwen/qwen3.7-plusqwen3.7-plus
    qwen/qwen3.7-flashqwen3.7-flash
    qwen/qwen3.6-plusqwen3.6-plus
    qwen/qwen3.6-35b-a3bqwen3.6-35b
    moonshotai/kimi-k2.6kimi-k2.6
    moonshotai/kimi-k2.7-codekimi-k2.7-code
    moonshotai/kimi-k3kimi-k3
    z-ai/glm-5.3glm-5.3
    z-ai/glm-5.3-flashglm-5.3-flash
    openai/gpt-oss-120bgpt-oss-120b
    qwen/qwen3.8-27bqwen3.8-27b
    qwen/qwen3.8-flashqwen3.8-flash-next
    qwen/qwen3.8-omni-flashqwen3.8-omni-flash
    z-ai/glm-5.2glm-5.2

Full before/after

Before · OpenRouter
from openai import OpenAI

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=os.environ["OPENROUTER_KEY"],
)

r = client.chat.completions.create(
    model="deepseek/deepseek-v4-flash-0731",
    messages=[{"role": "user", "content": "Hi"}],
)
After · QuickSilver Pro
from openai import OpenAI

client = OpenAI(
    base_url="https://api.quicksilverpro.io/v1",
    api_key=os.environ["QSP_KEY"],
)

r = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "Hi"}],
)
from openai import OpenAI

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=os.environ["OPENROUTER_KEY"],
)

r = client.chat.completions.create(
    model="deepseek/deepseek-v4-flash-0731",
    messages=[{"role": "user", "content": "Hi"}],
)

Common migration pitfalls

  • Cache-hit ratio drops temporarily

    OpenRouter's cache lives across upstream providers; when you switch to QSP your cache starts cold. For the first day or two, observed cost may be a few % higher than list-price math suggests. Cache fills within 24-48h of your normal traffic pattern.

  • Model version drift

    The undated OpenRouter DeepSeek ID serves an older build. QSP pins V4 Flash to the official 0731 revision; re-run evals if they were tuned to the older output style.

  • Don't migrate models you don't use on QSP

    QSP's catalog spans open weights (Qwen3.8, GLM-5.3, DeepSeek V4.1, Kimi K3, MiniMax M3) and the closed frontier (GPT-6.1 Sol, Claude Opus 5.5 and Sonnet 5.5, Gemini 3.8, Grok 4.7) — so Claude and GPT workloads move over too, on the same key. If your setup also uses Llama, Mistral, or the long tail of community models, keep calling OpenRouter for those. Many teams run both SDKs side-by-side.

  • Rate limits work differently

    OpenRouter silently smooths across upstreams. QSP enforces per-key throughput caps (default 600 req/min, 1M tok/min, 8 parallel). For bursty workloads, enable retry-on-429 in your client and ask for a higher limit if needed.

Start saving in 5 minutes

First top-up matched 100%, up to $50 in bonus credits, added on your next top-up. Keep your OpenAI SDK unchanged — only the URL and key change.