01 / QUICK START
Your first completion
Create an account, add prepaid credit, then create a key with chat:completions and model access. Keep the secret in your server environment.
export FLONNO_API_KEY="YOUR_FLONNO_KEY"
curl https://www.flonno.com/v1/chat/completions \
-H "Authorization: Bearer $FLONNO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"qwen3.8-27b","messages":[{"role":"user","content":"Hello!"}],"max_tokens":256,"reasoning_effort":"none"}'Read the answer from choices[0].message.content. Responses may also contain reasoning or tool calls. Token usage is reported in usage when available. Examples on this page never run API requests automatically.
Authentication
Send Authorization: Bearer YOUR_FLONNO_KEY. The secret is shown once when created; Flonno stores a one-way hash. Keep keys out of browser bundles and public repositories.
chat:completionsallows both generation endpoints.models:readallows model discovery.
Keys can be scoped to models, restricted to IPv4/IPv6 addresses or CIDR ranges, expired, and revoked in the dashboard. Changes apply to subsequent requests. Dashboard management routes require an account session.
GET /v1/models
Returns models permitted for your key. The current catalog is:
qwen3.8-27bcurl https://www.flonno.com/v1/models \
-H "Authorization: Bearer $FLONNO_API_KEY"The response has {"object":"list","data":[{"id":"qwen3.8-27b","object":"model","created":0,"owned_by":"flonno"}]}. This endpoint does not report prices or infrastructure locations. See current pricing.
POST /v1/chat/completions
Send JSON with model and messages. The combined input and output must fit the 131,072-token context window. One completion per request is supported (n must be 1 if supplied).
| Field | Behavior |
|---|---|
model | Required. Use a model ID available to your key, currently qwen3.8-27b. |
messages | Required. 1–100 messages; text, inline image parts and tool-call history are supported. |
max_tokens / max_completion_tokens | Choose one integer from 1 to 32,768. Defaults to 4,096. The budget includes reasoning tokens. |
stream | Optional boolean, false by default. Set true for Server-Sent Events. |
reasoning_effort | none, low, medium or xhigh. Default: medium. high/max map to xhigh; minimal maps to low. This is not a fixed reasoning-token cap. |
tools / tool_choice | Client-defined function tools. Your application validates arguments, executes tools and returns results. |
Sampling & output | temperature, top_p, top_k, min_p, seed, stop, presence_penalty, frequency_penalty, repetition_penalty and response_format are forwarded; model support determines behavior. |
Arbitrary inference-server controls are removed, and content persistence is disabled. Flonno supports the documented Chat Completions subset; it does not implement every OpenAI API endpoint.
Streaming
Set stream: true and consume the complete SSE response. Text arrives in choices[0].delta.content; tool arguments may arrive in fragments. The OpenAI-style stream ends with data: [DONE]. Final usage is included when reported by inference.
export FLONNO_API_KEY="YOUR_FLONNO_KEY"
curl --no-buffer https://www.flonno.com/v1/chat/completions \
-H "Authorization: Bearer $FLONNO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"qwen3.8-27b","messages":[{"role":"user","content":"Hello!"}],"max_tokens":256,"reasoning_effort":"none","stream":true}'API responses use Cache-Control: no-store, no-transform. Disconnecting cancels the upstream call. The gateway timeout is 900 seconds; configure your client timeout for your workload. Incomplete streams must be treated as failed requests.
Use the Python OpenAI SDK
Install with pip install openai, then set FLONNO_API_KEY in your environment.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["FLONNO_API_KEY"],
base_url="https://www.flonno.com/v1",
max_retries=0,
timeout=120.0,
)
response = client.chat.completions.create(
model="qwen3.8-27b",
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=256,
extra_body={"reasoning_effort": "none"},
)
print(response.choices[0].message.content)For streaming, add stream=True and iterate over all chunks. For Node.js, n8n, Postman and LiteLLM examples, see integrations.
Image inputs and tool calls
Images are accepted in user messages as inline PNG, JPEG or WebP base64 data URLs: at most four per request, 2 MiB each, within the 4 MiB JSON body limit. Remote image URLs, audio and image generation are not supported.
{
"model": "qwen3.8-27b",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe this image."
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,<BASE64_IMAGE>"
}
}
]
}
],
"max_tokens": 1024
}Define function tools with a JSON Schema in tools. If the response contains message.tool_calls, validate each call, execute it in your application and append its result with role: "tool" and the matching tool_call_id. Send the conversation again for the final answer. Flonno does not execute your tools.
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
}POST /v1/messages
An Anthropic Messages compatibility adapter uses the same Flonno model, permissions, billing and rate limits. Authenticate with x-api-key or a Bearer token. This endpoint serves Qwen; it does not provide Claude models.
curl https://www.flonno.com/v1/messages \
-H "x-api-key: $FLONNO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"qwen3.8-27b","max_tokens":256,"system":"Be concise.","messages":[{"role":"user","content":"Hello!"}]}'max_tokens is required (1–32,768). Text, inline images, client-defined tools, tool results, temperature, top_p and stop_sequences are supported. Read text and tool_use blocks from content. stream: true returns Anthropic-style SSE ending in message_stop.
Server-hosted Anthropic tools and signed thinking history are not supported. The adapter uses medium reasoning internally and returns visible text and tool blocks. This is a compatibility subset, not the complete Anthropic API.
Limits and prepaid billing
| Limit | Per account / request |
|---|---|
| Generation requests | 60 per minute across both generation endpoints |
| Model discovery | 120 per minute |
| Concurrent generation | 10 requests |
| Active keys | 20 per account |
| JSON request body | 4 MiB |
| Context / maximum output | 131,072 / 32,768 tokens |
Limits are shared across your keys. Requests reserve prepaid credit for the input allowance and output budget, then settle against reported usage at current input/output rates. Image requests initially reserve the full context input allowance. Missing usage and interrupted requests may remain reserved for reconciliation. RAM-cache hits do not imply a billing discount.
Inspect charges and reservations in Billing. Retrying generation can incur another charge; handle errors and interrupted responses before retrying.
Errors
| HTTP | Meaning |
|---|---|
400 | Invalid JSON, fields, model ID, message content or output limit. |
401 | Missing, invalid, expired or revoked API key. |
402 | Insufficient available prepaid credit. |
403 | Missing permission, model or IP access, or a payment dispute hold. |
413 | Request body exceeds 4 MiB. |
429 | Rate or concurrency limit reached. Respect Retry-After. |
499 | Client disconnected; recorded in activity logs. |
502 | Inference service unreachable or stream interrupted. |
503 | Service configuration or a dependency is unavailable. |
Gateway errors use an error object with message and type. The Messages adapter translates errors to its response format. Completed inference errors may be passed through. Check the status before parsing an answer.
{"error":{"message":"Missing or invalid API key.","type":"authentication_error"}}Request content stays out of durable storage
Flonno does not log or durably store API prompts, uploaded request media, tool content, reasoning or completions, and does not use them for training. This applies automatically to all keys, for streaming and non-streaming requests.
Prefix and prepared-media caches may reuse content in GPU or host RAM until eviction or runtime restart, with no fixed expiry. Request metadata—including model, time, IP, status, duration and token counts—is separate and retained for 30 days. Account and payment records are retained separately. Your client may save conversation history.
Read the privacy notice for recipients and infrastructure boundaries. Contact jonas@flonno.com for integration questions.
Updated October 12, 2026 · Describes the current Flonno API.
