Migration
Keep your SDK and your code. Change base_url. Open-weight models served from EU regions on hardware AxForge owns, with zero prompt retention. And an honest section on when OpenAI is still the better choice.
The switch
# pip install openai · the key is read from AXFORGE_API_KEY
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.axforge.ai/v1", # was: api.openai.com
api_key=os.environ["AXFORGE_API_KEY"],
)
r = client.chat.completions.create(
model="qwen3.8-27b-nvfp4", # was: a GPT model name
messages=[{"role": "user", "content": "Hello from Stockholm"}],
)
print(r.choices[0].message.content, r.usage)
// npm i openai · the key is read from AXFORGE_API_KEY
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.axforge.ai/v1", // was: api.openai.com
apiKey: process.env.AXFORGE_API_KEY,
});
const r = await client.chat.completions.create({
model: "qwen3.8-27b-nvfp4", // was: a GPT model name
messages: [{ role: "user", content: "Hello from Stockholm" }],
});
console.log(r.choices[0].message.content, r.usage);
# your API key, from API Keys
export AXFORGE_API_KEY="YOUR_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","messages":[{"role":"user","content":"Summarize DORA in one paragraph."}]}'
# your API key, from API Keys
$env:AXFORGE_API_KEY = "YOUR_KEY"
$call = @{
Method = "Post"
Uri = "https://api.axforge.ai/v1/chat/completions"
Headers = @{ Authorization = "Bearer $env:AXFORGE_API_KEY" }
ContentType = "application/json"
Body = '{"model":"qwen3.8-27b-nvfp4","messages":[{"role":"user","content":"Summarize DORA in one paragraph."}]}'
}
(Invoke-RestMethod @call).choices[0].message.content
REM your API key, from API Keys
set AXFORGE_API_KEY=YOUR_KEY
curl.exe https://api.axforge.ai/v1/chat/completions ^
-H "Authorization: Bearer %AXFORGE_API_KEY%" ^
-H "Content-Type: application/json" ^
-d "{\"model\":\"qwen3.8-27b-nvfp4\",\"messages\":[{\"role\":\"user\",\"content\":\"Summarize DORA in one paragraph.\"}]}"
Compatibility
| Surface | On AxForge |
|---|---|
| Chat completions | Same API shape: Qwen3.8 27B, 262,144-token context |
| Streaming | Same, with usage reporting in streaming and non-streaming modes |
| Tool calls | Same shape |
| Embeddings | Same shape: Qwen3 Embedding, 1024-dim vectors |
| Images | Generation endpoint: ERNIE Image Turbo, €0.05 / image; editing via FLUX.2 Klein |
| Audio | Transcription (Whisper) and speech (Piper) |
No spin
| Difference | The honest version |
|---|---|
| Models | Open-weight models, not GPT. Qwen3.8 27B is available now; further open-weight models are available as managed deployments. Run your own evals. The switch is one line of code. |
| Model menu | Smaller and curated. OpenAI's catalogue and feature surface are far larger. |
| Hosting | EU regions on named hardware: NVIDIA DGX Spark (GB10) systems AxForge owns in Sweden. TLS 1.3 terminates in the EU. The console shows the region and machine your key runs on, and every response carries the model identity. |
| Data handling | Zero prompt retention: prompts and completions processed in memory, never written to disk, logged, retained or used to train. Metadata only (token counts, timestamps, status). |
| Pricing | Published: Qwen3.8 27B at €0.32 / 1M input · €2.00 / 1M output (launch pricing); image generation €0.05 / image, editing €0.06 / edit; the rest is on the price list. Run it against your current bill. |
| Access | Create an account and start using the API. Your key is in the console. 3M free tokens every 30 days with every new account. |
Credibility
If your workload needs frontier-model quality (the hardest reasoning, coding or multimodal tasks), OpenAI's latest models will beat a 27B open-weight model, and pretending otherwise would waste your evaluation time. The same goes if you depend on OpenAI-specific features, its much larger model menu and ecosystem, or instant scale at frontier-provider volume. In those cases, stay.
Choose AxForge when the binding constraints are different: prompts that must be processed in the EU, a retention posture you can defend in writing, and knowing exactly which machine serves you. That is what we build: GDPR compliant EU infrastructure. Qwen3.8 27B handles a wide range of production chat, extraction and tool-use workloads at a published price.
Data & privacy
Prompts and completions are processed in memory in Sweden: not written to disk, not logged, not retained, and never used to train anything. We keep only request metadata (token counts, timestamps, status) for billing and operations. The full policy is at axforge.ai/privacy.
FAQ
Yes. Chat completions, streaming, tool calls and usage reporting follow the
OpenAI API shape, so the official SDKs work by changing base_url
to https://api.axforge.ai/v1 and swapping the model name.
There are no GPT models here. The served chat model today is
Qwen3.8 27B
(qwen3.8-27b-nvfp4), an open-weight model; further open-weight
models are available as managed deployments. Most teams find the
switch takes an afternoon. Run your own evals and see.
Our prices are published and aggressively low: Qwen3.8 27B at €0.32 in / €2.00 out per million tokens. Run them against your current bill.
Frontier-model quality on the hardest tasks and a much larger model menu and ecosystem. What you gain: EU hosting on named hardware, zero prompt retention, and transparent serving, with instant account creation, same as you're used to.
EU regions on hardware AxForge owns: serverless inference in Stockholm, Sweden
(eu-se-1) on NVIDIA DGX Spark (GB10) systems; dedicated GPU rentals
in Málaga, Spain (eu-es-1). Prompts are
processed in memory, never stored, logged or used to train; only billing
metadata is kept. See the privacy policy.
When frontier quality is the binding constraint, when you depend on OpenAI-specific features or ecosystem, or when you need instant scale at frontier-provider volume. If EU residency, zero retention and hardware transparency matter more, that is what we are built for.
Related