# Quickstart


# 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`:

    Python

```
# 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.

      &larr; Overview
      Glossary &rarr;



Source: https://axforge.ai/docs/quickstart/
