DEVELOPER DOCUMENTATION

Build with Flonno.

Text, vision and tool calls through one model API. Start with a scoped key and your existing OpenAI-compatible client.

BASE URLhttps://www.flonno.com/v1

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.

cURL
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:completions allows both generation endpoints.
  • models:read allows 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 Flash 27Bqwen3.8-27b
cURL
curl 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).

FieldBehavior
modelRequired. Use a model ID available to your key, currently qwen3.8-27b.
messagesRequired. 1–100 messages; text, inline image parts and tool-call history are supported.
max_tokens / max_completion_tokensChoose one integer from 1 to 32,768. Defaults to 4,096. The budget includes reasoning tokens.
streamOptional boolean, false by default. Set true for Server-Sent Events.
reasoning_effortnone, 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_choiceClient-defined function tools. Your application validates arguments, executes tools and returns results.
Sampling & outputtemperature, 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.

cURL · SSE
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.

Python
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.

JSON · IMAGE INPUT
{
  "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.

JSON · FUNCTION TOOL
{
  "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 · MESSAGES
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

LimitPer account / request
Generation requests60 per minute across both generation endpoints
Model discovery120 per minute
Concurrent generation10 requests
Active keys20 per account
JSON request body4 MiB
Context / maximum output131,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

HTTPMeaning
400Invalid JSON, fields, model ID, message content or output limit.
401Missing, invalid, expired or revoked API key.
402Insufficient available prepaid credit.
403Missing permission, model or IP access, or a payment dispute hold.
413Request body exceeds 4 MiB.
429Rate or concurrency limit reached. Respect Retry-After.
499Client disconnected; recorded in activity logs.
502Inference service unreachable or stream interrupted.
503Service 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.

JSON · ERROR EXAMPLE
{"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.