Quickstart
Everything on AxForge speaks the OpenAI API shape. If you have used the OpenAI SDK, you already know this API — the only changes are the base URL, your key, and the model name. Three steps to your first streamed token.
1. Create an AxForge account
Create an account. Your API key is created with it. Every new account currently includes 5M serverless tokens/month at launch.
2. Copy your API key from the console
Your key is on the API keys page of the console. It is pinned to eu-se-1 · Stockholm, and all inference for the key runs in that region.
3. Send your first request
Point the SDK you already use at https://api.axforge.ai/v1:
# pip install openai — the official SDK, unchanged
from openai import OpenAI
client = OpenAI(
base_url="https://api.axforge.ai/v1",
api_key="YOUR_AXFORGE_KEY",
)
$ curl https://api.axforge.ai/v1/chat/completions \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"qwen3.8-27b-nvfp4","max_tokens":60,
"messages":[{"role":"user","content":"Say hello from Stockholm in one sentence."}]}'
# Windows PowerShell cannot pass inline JSON to curl.exe — not with single quotes,
# not escaped, not from a variable. This is its own client, and it has no such problem.
PS> $key = "YOUR_AXFORGE_KEY"
PS> $body = @{ model = 'qwen3.8-27b-nvfp4'; max_tokens = 60; messages = @(@{ role = 'user'; content = 'Say hello from Stockholm in one sentence.' }) } | ConvertTo-Json -Depth 5
PS> $r = Invoke-RestMethod -Uri https://api.axforge.ai/v1/chat/completions -Method Post -Headers @{ Authorization = "Bearer $key" } -ContentType 'application/json' -Body $body
PS> $r.choices[0].message.content
REM cmd does not strip single quotes, so the inner ones are escaped instead.
C:\> curl -s https://api.axforge.ai/v1/chat/completions -H "Authorization: Bearer %AXFORGE_API_KEY%" -H "Content-Type: application/json" -d "{\"model\":\"qwen3.8-27b-nvfp4\",\"max_tokens\":60,\"messages\":[{\"role\":\"user\",\"content\":\"Say hello from Stockholm in one sentence.\"}]}"
Every one of these was run on the system it names before it was printed here.
In PowerShell 7 (pwsh) the bash line works too; in Windows
PowerShell 5.1 — the one that opens by default — it cannot. $PSVersionTable.PSVersion
tells you which you are in.
What comes back — the standard shape, with the tokens you were billed for in usage (this is a real answer, recorded 2026-09-18; the ids and the wording will differ):
{
"id": "chatcmpl-a76c352750b8914a",
"object": "chat.completion",
"model": "qwen3.8-27b-nvfp4",
"choices": [{ "index": 0, "finish_reason": "stop",
"message": { "role": "assistant", "content": "Hello from Stockholm!" } }],
"usage": { "prompt_tokens": 20, "completion_tokens": 5, "total_tokens": 25 }
}
No answer? Run the self-test — one click in the console tells you which step failed and how to fix it — and the errors & limits page lists every status the API returns.
Stream a completion
r = client.chat.completions.create(
model="qwen3.8-27b-nvfp4",
stream=True,
messages=[{"role": "user", "content": "Hello from Stockholm"}],
)
for chunk in r:
print(chunk.choices[0].delta.content or "", end="")
Streaming sends one chat.completion.chunk per token as server-sent events — the first two look like this, and the last one carries usage:
data: {"object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant","content":""}}]}
data: {"object":"chat.completion.chunk","choices":[{"delta":{"content":"Hello"}}]}
The model is Qwen3.8 27B at €0.29 / 1M input tokens and €1.77 / 1M output tokens (launch pricing), with a 262,144-token context. Streaming responses include usage.
Everything else behind the same key
| Capability | Endpoint | Model name |
|---|---|---|
| Chat, tools, vision | /v1/chat/completions | qwen3.8-27b-nvfp4 |
| Embeddings (1024-dim) | /v1/embeddings | qwen3-embed |
| Image generation | /v1/images/generations | ernie-image-turbo |
| Image editing | /v1/images/edits | flux2-klein-4b |
| Speech to text | /v1/audio/transcriptions | whisper |
| Text to speech | /v1/audio/speech | piper |
| Music generation | /v1/audio/music | minimax-music3 |
Each has its own page in these docs with request and response shapes and practical guidance — and a product page on Serverless Models.
Zero retention, verifiable
Prompts and completions are processed in memory in the EU — never written to disk, logged, retained, or used for training. Only request metadata (token counts, timestamps, status) is kept for billing. The commitment in full: axforge.ai/privacy; the data-residency evidence is in the Trust Centre.