RedRouter vs OpenRouter: when to use each for security work
If you already pay OpenRouter per token, keep it. It has far more models, and the stock versions of the models RedRouter builds on cost less there. RedRouter is a narrow addition: four open-weight models modified to reduce refusals, one key, prepaid credit. Switching a request over means changing base_url and the model ID.
Facts about OpenRouter below come from its public models API, read on October 27, 2026. Prices change often, so check both sites before you decide.
Side by side
| OpenRouter | RedRouter | |
|---|---|---|
| Models | 463 listed in its models API | 4, listed below |
| Stock GLM 5.3, Qwen 3.8 27B, DeepSeek V4.1 Flash | Yes | No, only modified versions |
| Modified low-refusal versions of those models | Not found in its models API | Yes, all four |
| API formats | Chat Completions, Anthropic Messages and Responses (docs) | OpenAI-compatible Chat Completions and Anthropic Messages |
| Model fallback | Optional models list tried in order; provider fallback on by default (allow_fallbacks) (docs) | None. Each request stays on the model you named |
| Billing | Prepaid credit by card, AliPay or USDC, with a fee on credit purchases (FAQ) | Prepaid credit by card or USDC, or a monthly plan |
| Request content retention | Prompt logging is opt-in; a zdr flag routes only to zero-retention endpoints (docs) | Encrypted, up to 30 days by default; none with Zero Data Retention (+20%) |
OpenRouter rows read from its documentation on October 27, 2026.
Prices for the same base models
OpenRouter list prices, USD per million tokens, from its models API on October 27, 2026:
| OpenRouter model | Input | Output | Context |
|---|---|---|---|
z-ai/glm-5.3-flash | $0.0345 | $0.0823 | 1,048,576 |
z-ai/glm-5.3 | $0.0699 | $1.40 | 1,048,576 |
qwen/qwen3.8-27b | $0.20 | $2.50 | 1,000,000 |
deepseek/deepseek-v4.1-flash-1017 | $0.15 | $0.60 | 1,048,576 |
RedRouter's current prices for its modified versions:
| Model | ID | Input / 1M | Cached input / 1M | Output / 1M |
|---|---|---|---|---|
| GLM 5.3 Flash RR | glm-5.3-flash-rr | $0.20 | $0.08 | $0.80 |
| GLM 5.3 RR (experimental) | glm-5.3-rr | $1.40 | $0.35 | $2.50 |
| Qwen 3.8 27B RR | qwen3.8-27b-rr | $0.55 | $0.08 | $2.40 |
| DeepSeek V4.1 Flash RR | deepseek-v4.1-flash-rr | $1.15 | $0.115 | $2.30 |
| DeepSeek V4.1 Flash (1017) | deepseek-v4.1-flash-1017 | $0.15 | $0.005 | $0.57 |
| DeepSeek V4.1 Flash (0910) | deepseek-v4.1-flash-0910 | $0.04 | $0.008 | $0.15 |
| GLM 5.3 Flash | glm-5.3-flash | $0.06 | $0.035 | $0.23 |
| GLM 5.3 | glm-5.3 | $0.08 | $0.08 | $1.60 |
| Qwen 3.8 27B | qwen3.8-27b | $0.04 | $0.005 | $0.35 |
The stock models are cheaper on OpenRouter, in some cases by several times. RedRouter's price covers a different checkpoint, not the same model.
Who should not switch
- You need images, documents or audio. RedRouter is text only.
- You need more than 8,192 output tokens in one response.
- You want automatic failover between providers. RedRouter never substitutes a model.
- Your work runs fine on stock models today.
RedRouter is for authorized security work: pentesters, red teams, and the people building security tools and agents, who hit refusals from mainstream models on tasks they are allowed to do. If that is not you, OpenRouter's stock models are cheaper and broader.
Using both
Keep OpenRouter as your default and call RedRouter only for the requests that need a modified model. With the OpenAI SDK that is two clients:
import os
from openai import OpenAI
openrouter = OpenAI(base_url="https://openrouter.ai/api/v1", api_key=os.environ["OPENROUTER_API_KEY"])
redrouter = OpenAI(base_url="https://redrouter.org/v1", api_key=os.environ["REDROUTER_API_KEY"])
response = redrouter.chat.completions.create(
model="glm-5.3-flash-rr",
max_tokens=4096,
messages=[{"role": "user", "content": "Summarize the findings in this scan report: 22/tcp open ssh OpenSSH 8.2p1; 80/tcp open http nginx 1.18.0; 8080/tcp open http-proxy Jenkins 2.346"}],
)
print(response.choices[0].message.content)
RedRouter rejects request fields it does not support with a 400, instead of ignoring them. If code written for OpenRouter sends OpenRouter-specific fields such as provider or models, remove them for RedRouter requests.
Run on October 27, 2026. the RedRouter call returned a scan summary (trimmed):
# Scan Report Summary
**Open Ports: 3**
| Port | Service | Product | Version |
|------|---------|---------|---------|
| 22 | SSH | OpenSSH | 8.2p1 |
| 80 | HTTP | nginx | 1.18.0 |
| 8080 | HTTP Proxy | Jenkins | 2.346 |
## Key Observations
- **SSH (22)** — OpenSSH 8.2p1 is running, typical for Ubuntu 20.04 LTS. This version is relatively old (April 2020) and has some known CVEs; consider updating.
- **HTTP (80)** — nginx 1.18.0 serves web traffic. This is also a 2020-era release and is past end of mainline support.
[Response trimmed here.]
Constructing the OpenRouter client needs OPENROUTER_API_KEY set, but it makes no request until you call it.
Moving a workload over
- Create a RedRouter key and add credit (quickstart).
- Change
base_urltohttps://redrouter.org/v1and the API key. - Change the model ID to one of the four above.
- Remove OpenRouter-only request fields.
RedRouter's terms apply to every request, including the ban on testing systems you do not own or are not authorized to test.