Back to overview
model gateway

One OpenAI-compatible API for every model and provider.

Route chat, images, embeddings, audio, and video through app.nz. Point any OpenAI or Anthropic SDK at the base URL below, keep your code, and switch models with one field. auto routing, adaptive thinking, prompt caching, automatic failover, usage metering, and one API key.

Base URL
https://app.nz/v1
Send messages, stream tokens back. OpenAI SDK drop-in: change base_url and key.
from openai import OpenAI

client = OpenAI(base_url="https://app.nz/v1", api_key="pk_live_...")

resp = client.chat.completions.create(
    model="auto",  # smart routing, or pin a model like "gpt-latest"
    messages=[{"role": "user", "content": "Write a tiny SSE server in Go."}],
    reasoning_effort="auto",  # none | low | medium | high | xhigh | auto
)
print(resp.choices[0].message.content)

Authentication

Send your key as Authorization: Bearer pk_live_.... Create one on the account page. Signed in here, same-origin calls use your session automatically.

Claude Code + Anthropic SDK

Use the site root, no /v1. The gateway translates Messages, tools, and streaming for every compatible provider model.

$env:ANTHROPIC_BASE_URL = "https://app.nz"
$env:ANTHROPIC_AUTH_TOKEN = $env:APP_API_KEY
$env:ANTHROPIC_API_KEY = ""
$env:ANTHROPIC_MODEL = "nvidia/deepseek-v4-pro"
claude

Auto routing

Send "model": "auto" and the gateway classifies the prompt, then routes to a tier and thinking depth. Or pin a model id. Stable, long Anthropic system/tool prefixes are cached automatically; explicit cache controls are preserved.

autoDefault chat. Classifies the prompt and routes to a tier.
app/auto-codeAgents, refactors, and bug fixes.
app/auto-reasoningPlanning, math, and hard reasoning (auto thinking depth).
app/auto-cheapTrivial and classification prompts on the cheapest model.
app/auto-visionPrompts that include images.
app/auto-imageImage generation with a hosted fallback.

Endpoints

Fusion

Fusion sends one prompt to a panel of models in parallel; a judge model then regenerates the strongest answer from every candidate. Any model id works, including custom OpenRouter slugs like openrouter/vendor/model. Try it on the Fusion page.

One-shot fusion
curl -X POST https://app.nz/api/tools/fusion \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Explain vector databases in two sentences",
    "models": ["app/auto-fast", "anthropic/claude-haiku-4-5", "openrouter/qwen/qwen3.7-plus"],
    "judgeModel": "app/auto"
  }'

Returns { results: [{model, output, ms, costMicros}], fused, judgeModel }.

Saved fusion space API
# Save a reusable panel once:
curl -X POST https://app.nz/api/tools/fusion/spaces \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-panel", "models": ["app/auto-fast", "gemini/gemini-2.5-flash"], "judgeModel": "app/auto"}'

# Then run it forever after at your own endpoint:
curl -X POST https://app.nz/api/fusion/SPACE_ID/run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "your prompt here"}'

Spaces: GET/POST /api/tools/fusion/spaces, DELETE /api/tools/fusion/spaces/{id}. Per-call models overrides the saved panel.

Playground

Run real requests against any model here: chat, image, embeddings, video, music, speech, transcription, and image→3D, each with a live preview and the raw JSON response. Signed in, it uses your session; otherwise paste an API key.

Send a message to try the gateway.
Loading catalogue…