Change the base URL and the key. Same SDK, same requests, same responses. Every call comes back with input, output and cached tokens counted separately.
| Model | qwen38-27b | |
|---|---|---|
| Context | 262,144 | |
| Input | $0.30 | $0.40 |
| Cached | $0.03 | $0.04 |
| Output | $2.25 | $3.00 |
| per 1M | elsewhere |
# Drop-in for the OpenAI API. Two lines change. $ curl https://api.numn.ai/v1/chat/completions \ -H "Authorization: Bearer $NUMN_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen38-27b", "messages": [{"role":"user","content":"hi"}] }' ✓ 200 OK 613ms { "model": "qwen38-27b", "usage": { "prompt_tokens": 72, "completion_tokens": 24, "prompt_tokens_details": { "cached_tokens": 0 } } }
Most people never write any code for this. You paste a base URL and a key into your agent settings, and that is the whole integration.
Base URL https://api.numn.ai/v1 API key sk-numn-… Model qwen38-27b # or as environment variables, which is what most # agent runtimes read: OPENAI_BASE_URL=https://api.numn.ai/v1 OPENAI_API_KEY=sk-numn-…
Agent runtimes, editor extensions, CLI tools, your own code. If it lets you set a custom OpenAI-compatible endpoint, it works. Requests and responses keep their shape, so nothing downstream has to know anything changed.
Server-sent events pass straight through. Tool calls come back in the shape
your client already parses. And usage counts input, output and cached tokens
separately on every response.
Some tools expect the Anthropic shape instead. Tell us which one you run and we will tell you straight whether it works today.
Built for code and long agent runs. 262k of context, and you decide how hard it thinks on every request.
Scores from Artificial Analysis, out of 100, drawn from zero. The empty part of each bar is the rest of the scale.
Run the model61.7% on SWE-bench Pro. 73.0% on Terminal Bench 2.1. 90.3% on LiveCodeBench v6. Those are Qwen’s own figures, from real repository work rather than isolated puzzles.
262,144 tokens of context, and a release built around planning its own work and reacting to what comes back. It scores 51 on the Artificial Analysis agentic index, where the frontier sits at 57 to 59.
Thinking is on by default. Turn it off per request, or set reasoning_effort to low, medium or xhigh.
Deeper reasoning costs tokens, so you only pay for it where a task earns it.
Two lines of config. If it does not work with the SDK you already use, that is a bug and we want to hear about it.