Docs

Quickstart

Three steps: get a key, send a request, read the reply.

  1. Open the Novion Console, sign in, and create an API key under API keys. Copy it — it's shown once.
  2. Save it as an environment variable: export NOVION_API_KEY=nv-sk-…
  3. Send your first request:
curl https://api.novion.currentflo.com/v1/chat/completions \
  -H "Authorization: Bearer $NOVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"novion-core","messages":[{"role":"user","content":"Hello, Novion"}]}'

Base URL: https://api.novion.currentflo.com/v1

Authentication

Send your key on every request, either way:

Authorization: Bearer nv-sk-…
# or
x-api-key: nv-sk-…
Keep keys secret. Novion stores only a hash, so a lost key can't be shown again — revoke it in the Console and make a new one.

Models

IDNameGood for
novion-coreNovion CoreFast everyday chat, tools and simple tasks (default)
gypsy-xGypsy XReasoning, research, comparisons
novamindNovaMindPeople, psychology, communication
nql-liteNQL LiteCode
moonshotMoonshotScenarios and forecasts

Details on the Models page.

Chat completions

POST /v1/chat/completions — OpenAI format. system messages are supported inside messages.

{
  "model": "gypsy-x",
  "messages": [
    {"role": "system", "content": "Answer in 3 bullets."},
    {"role": "user", "content": "Compare solar leasing vs buying"}
  ],
  "max_tokens": 600,
  "temperature": 0.6
}

Response:

{
  "id": "chatcmpl-…", "object": "chat.completion", "model": "gypsy-x",
  "choices": [{"index": 0, "message": {"role": "assistant", "content": "…"}, "finish_reason": "stop"}],
  "usage": {"prompt_tokens": 42, "completion_tokens": 180, "total_tokens": 222},
  "novion": {"engine": "…", "latency_ms": 1840}
}

Messages

POST /v1/messages — Anthropic format, with a top-level system.

{
  "model": "nql-lite",
  "max_tokens": 1024,
  "system": "You write Cloudflare Workers.",
  "messages": [{"role": "user", "content": "Write a hello-world Worker"}]
}

Returns {"type": "message", "content": [{"type": "text", "text": "…"}], "usage": {…}}.

List models

curl https://api.novion.currentflo.com/v1/models -H "Authorization: Bearer $NOVION_API_KEY"

Errors & limits

StatusMeaningWhat to do
400Bad request (unknown model, empty messages, too long, stream: true)Fix the request body.
401Missing, wrong or revoked keyCheck the key in the Console.
429Daily limit reached for this keyWait for midnight UTC or use another key.
502The model is busy or over its limitRetry in a moment.

SDKs

Python · OpenAI SDK

from openai import OpenAI
client = OpenAI(base_url="https://api.novion.currentflo.com/v1", api_key=NOVION_API_KEY)
r = client.chat.completions.create(model="novion-core", messages=[{"role": "user", "content": "Hi"}])
print(r.choices[0].message.content)

Python · Anthropic SDK

import anthropic
client = anthropic.Anthropic(base_url="https://api.novion.currentflo.com", api_key=NOVION_API_KEY)
r = client.messages.create(model="moonshot", max_tokens=800, messages=[{"role": "user", "content": "3 scenarios for my week"}])
print(r.content[0].text)

JavaScript · fetch

const r = await fetch("https://api.novion.currentflo.com/v1/chat/completions", {
  method: "POST",
  headers: { "Authorization": "Bearer " + process.env.NOVION_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ model: "novion-core", messages: [{ role: "user", content: "Hi" }] })
});
console.log((await r.json()).choices[0].message.content);