API docs

unfiltered.sh speaks the OpenAI Chat Completions API. If a tool lets you set a base URL and an API key, it works with unfiltered.sh.

Quick start

  1. Create an account, add credit with SOL or USDC, and buy a seat (a slot plus a speed).
  2. Copy the API key shown after purchase. It is shown once.
  3. Call the API during your slot with these settings:
Base URL
https://api.unfiltered.sh/v1
Model
deepseek-v4.1-flash
Auth
Authorization: Bearer YOUR_API_KEY
Endpoints
POST /v1/chat/completions, GET /v1/models

Models

Use the model id in the model field of each request. GET /v1/models lists what your seat can use.

ModelModel idContextFeaturesStatus
DeepSeek V4.1 Flashdeepseek-v4.1-flashPublished at launch50–250 tok/s; one Ultra seat up to 450 tok/sAt launch
GLM-5.3Announced at launchTBALarger model for harder tasksComing soon

DeepSeek V4.1 Flash is a community "abliterated" build of an open-weight mixture-of-experts model (refusal behaviour removed). We did not train it.

Examples

curl

curl https://api.unfiltered.sh/v1/chat/completions \
  -H "Authorization: Bearer $UNFILTERED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Explain how a TLS handshake works."}],
    "stream": true
  }'

Python

Uses the official openai package (pip install openai).

import os
from openai import OpenAI

client = OpenAI(base_url="https://api.unfiltered.sh/v1", api_key=os.environ["UNFILTERED_API_KEY"])

stream = client.chat.completions.create(
    model="deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Write a haiku about GPUs."}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

JavaScript

Plain fetch, no SDK needed (Node 18+ or a browser backend; never put your key in public front-end code).

const res = await fetch("https://api.unfiltered.sh/v1/chat/completions", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.UNFILTERED_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "deepseek-v4.1-flash",
    messages: [{ role: "user", content: "Summarise the CAP theorem in 3 lines." }],
  }),
});
const data = await res.json();
console.log(data.choices[0].message.content);

With the openai npm package: new OpenAI({ baseURL: "https://api.unfiltered.sh/v1", apiKey }), then the same calls as above.

Limits

Errors

Errors use the OpenAI shape: {"error": {"message", "type", "code"}}.

HTTPcodeMeaning
401invalid_api_keyMissing or unknown key.
403block_not_started / block_endedOutside your slot window.
403seat_inactive / block_cancelledSeat disabled, or slot cancelled (credit is returned).
429concurrency_limitAnother request on this seat is still running.
429rate_limit / block_token_capFair-use guard reached.
400invalid_request / policy_violationMalformed request, or blocked by the AUP.

Use it with coding agents

Any agent that supports an "OpenAI-compatible" provider works. Use the base URL, your seat key and the model id above. Because a seat runs one request at a time, turn off parallel sub-agents or set concurrency to 1.

Freedom agent coming soon

Our own coding app, built on T3 Code, with unfiltered.sh built in: log in with your account number, pick a seat, start coding. No setup.

Aider

export OPENAI_API_BASE=https://api.unfiltered.sh/v1
export OPENAI_API_KEY=YOUR_API_KEY
aider --model openai/deepseek-v4.1-flash

Cline, Roo Code, Kilo Code (VS Code)

Settings → API Provider: OpenAI Compatible. Base URL https://api.unfiltered.sh/v1, API key = your seat key, Model ID deepseek-v4.1-flash.

Continue

models:
  - name: unfiltered.sh
    provider: openai
    model: deepseek-v4.1-flash
    apiBase: https://api.unfiltered.sh/v1
    apiKey: YOUR_API_KEY

Anything else

Set the environment variables OPENAI_BASE_URL=https://api.unfiltered.sh/v1 and OPENAI_API_KEY=YOUR_API_KEY; most tools built on the OpenAI SDKs pick them up.