n4nAI

DeepSeek R1 distilled models: API access compared

Compare API access to DeepSeek R1 distilled models across OpenRouter, Together, Fireworks, and local Ollama: pricing, latency, ergonomics, and verdicts.

n4n Team4 min read932 words

Audio narration

Coming soon — every post will get a voice note here.

DeepSeek R1 distilled models API access is fragmented: the open-weight checkpoints are served by at least four distinct providers, each with its own endpoint shape, rate limits, and cost structure. This head-to-head strips away the marketing so you can wire up the right one without guessing.

The contenders

DeepSeek released the R1 distilled weights (Llama-70B, Llama-8B, Qwen-32B, and smaller Qwen variants) but does not host them on its own paid API—the official api.deepseek.com only serves the full R1 and V3 chat models. To call a distill over HTTP you pick between:

  • OpenRouter – aggregator that resells many hosted copies behind one OpenAI-compatible API.
  • Together AI – GPU cloud that hosts the weights natively with its own and OpenAI-compatible endpoints.
  • Fireworks AI – inference optimizer with FireAttention kernels and an OpenAI-compatible route.
  • Local Ollama – self-hosted HTTP server wrapping the GGUF or safetensors weights.

A gateway like n4n.ai collapses the first three into a single OpenAI-compatible endpoint with automatic fallback when a backend is degraded, but the underlying tradeoffs remain the same.

Capabilities and model variants

All providers expose the 70B Llama distill and the 32B Qwen distill; the 8B and 14B variants are spottier. Context windows follow the base model: Llama distills advertise 128K, Qwen distills 32K–128K depending on the serving config. In practice, OpenRouter and Fireworks cap requests at 32K tokens unless you pass an explicit max_tokens under the limit.

The distills are instruction-tuned chat models, not raw reasoning engines. They accept standard messages arrays and emit a single completion. None support native tool calling as reliably as the full R1; if you need function calling, wrap them with a client-side parser.

{
  "model": "deepseek-r1-distill-llama-70b",
  "messages": [{"role": "user", "content": "Explain beam search."}],
  "max_tokens": 1024,
  "temperature": 0.3
}

Pricing and cost model

Every hosted option charges per token with no minimums. OpenRouter and Fireworks publish floating rates that track upstream GPU cost; Together uses fixed tiers. The distills run roughly 5–10x cheaper than the 671B full R1 per million tokens because they fit on a single 8-GPU node.

Local Ollama has zero per-token cost but requires you to own the hardware. A 70B distill in 4-bit needs ~40 GB VRAM; that’s a single A100 80GB or two 3090s. If you already have the box, the marginal cost is electricity.

None of the hosted providers charge for cached prompts on these models yet. n4n.ai forwards provider cache-control hints but the distill endpoints themselves don’t implement prompt caching, so you pay full price on every repeat.

Latency and throughput

Fireworks wins single-stream latency: its custom CUDA graphs cut time-to-first-token to sub-200ms on the 70B on A100. Together prioritizes batch throughput; a single request may wait 300–500ms behind a batch but sustains higher aggregate tokens/sec. OpenRouter latency depends on which backend it routes to—sometimes Fireworks, sometimes a smaller provider—so it varies request to request.

Local latency is bounded by your GPU. On a single 3090, the 70B 4-bit distill yields ~12 tokens/sec decode; fine for interactive use, terrible for bulk.

# Fireworks OpenAI-compatible call
curl https://api.fireworks.ai/inference/v1/chat/completions \
  -H "Authorization: Bearer $FW_KEY" \
  -d '{"model":"accounts/fireworks/models/deepseek-r1-distill-llama-70b","messages":[{"role":"user","content":"hi"}]}'

Ergonomics and API design

All three cloud providers mirror the OpenAI chat completions schema. You swap base_url and model string; the rest of your SDK code stays.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.together.xyz/v1",
    api_key="TOGETHER_KEY",
)
r = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-R1-Distill-Llama-70b",
    messages=[{"role": "user", "content": "Summarize RFC 7231"}],
)
print(r.choices[0].message.content)

Ollama uses a similar but non-identical REST shape:

curl http://localhost:11434/api/chat -d '{
  "model": "deepseek-r1-distill-llama-70b",
  "messages": [{"role":"user","content":"ping"}],
  "stream": false
}'

Streaming works everywhere. OpenRouter and n4n.ai honor stream: true and SSE; Together and Fireworks do too. If you need provider-specific routing (e.g., “never use provider X”), OpenRouter supports a provider object; n4n.ai honors client routing directives in the same field.

Ecosystem and tooling

LangChain and LlamaIndex have off-the-shelf ChatOpenAI wrappers that work against any of the cloud endpoints by setting openai_api_base. Ollama has first-class Python and JS libraries. Together ships its own together SDK with async support; Fireworks documents a thin openai client extension.

Model cardinality is the differentiator: OpenRouter lists four distill SKUs; Together lists two; Fireworks lists one or two. If you want to A/B the Llama vs Qwen distill without code changes, OpenRouter or a gateway is simpler.

Limits and rate limits

OpenRouter enforces a credit-based limit; new accounts get $5 and a low RPM (requests per minute) that rises as you spend. Together starts at 20 RPM on free tier, 600+ on paid. Fireworks defaults to 100 RPM but will raise on request. Ollama has no rate limit—your thermal envelope is the limit.

All cloud providers cap max_tokens per request (usually 4K–32K). None allow parallel function calls on these distills.

Side-by-side comparison

Provider Models offered (distills) API style Auth Pricing model Context cap Rate limit (default)
OpenRouter Llama-70B, Llama-8B, Qwen-32B, Qwen-14B OpenAI-compatible Bearer key Per-token, floating 32K enforced 10–60 RPM by tier
Together Llama-70B, Qwen-32B OpenAI + native Bearer key Per-token, fixed tier 32K 20 RPM free / 600 paid
Fireworks Llama-70B (sometimes Qwen) OpenAI-compatible Bearer key Per-token, floating 32K 100 RPM
Ollama Any GGUF you pull Custom REST None (local) Hardware cost Model native (128K) None

Which to choose

Prototyping a single-feature app: Use Fireworks. Lowest latency, minimal config, OpenAI-compatible. You’ll ship in an hour.

Multi-model experimentation: OpenRouter or a gateway such as n4n.ai. One key, four model strings, easy swap between Llama and Qwen distills without touching base URLs.

High-volume batch jobs: Together. Its throughput orientation and fixed pricing make cost predictable when you’re processing millions of rows overnight.

Privacy or air-gapped deployment: Ollama. Run the 32B Qwen distill on a single 24GB card; no data leaves the box. Accept the slower decode.

Production with fallback needs: A gateway that aggregates the above removes the single-provider outage risk. You get per-token metering and automatic reroute when one provider is rate-limited, at the cost of one extra hop.

Pick by deployment constraint first, then by latency. The model weights are identical; the API access layer is where the real differences live.

Tagsdeepseekdeepseek-r1distilled-modelsapi-access

Written by

n4n Team

The team building n4n — a single OpenAI-compatible API in front of 240+ models, with automatic fallback, load balancing and pay-per-token metering.

More from n4n Team →

All accessing deepseek models via gateway posts →