Avian Provider Guide
Avian is a Tier-2 catalog provider: OpenAI-wire-compatible with no
behavioural quirks, so its entire integration is one JSON file
(src/lib/providers/catalog/avian-io.json) rather than hand-written code.
That file is the source of truth for everything on this page.
Verification status: this entry is docs- and roster-verified, not yet live-verified. Every field below comes from Avian's own public pages and an unauthenticated
GET /v1/modelscall — no account was created and no API key was used to build it.evidence.liveMatrixisnulluntil someone runs the live capability matrix with a real key (see Verification status below).
Key Facts
- Provider id:
avian-io(aliasavian) - Protocol: OpenAI-compatible (
/chat/completions) - Base URL:
https://api.avian.io/v1 - Default model:
deepseek/deepseek-v4-pro-0813 - Models in catalog: 12 (curated from a 13-model live roster;
z-ai/glm-4.7is the one left out, only to stay inside the 12-model cap) - Streaming: supported — the docs' Streaming section documents
stream: truewith server-sent events (docs) - Tool calling:
model-dependent— the docs describe function calling with atoolsarray and a returnedtool_callsarray, but show it only ondeepseek/deepseek-v3.2. The homepage and About page say native tool calling comes "across all models", which is a marketing claim with no per-model detail behind it - Tools while streaming: not declared (
false) — the docs document tools and streaming separately, never together - Structured output: not declared (
false) — the docs' request-parameter table listsmodel,messages,temperature,max_tokens,streamandtools, and noresponse_format - Structured output + tools together: not declared (
false) — no combined probe was run without credentials - Embeddings: not declared — the docs describe only chat completions
- Thinking: not declared — the roster flags six models
reasoning: true, but the docs describe no reasoning controls or reasoning output field - Billing:
no-free-tier— prepaid credits only, see Billing below - Key format: none declared. The docs' examples show keys that start with
avian-, but nothing states that as a rule, so NeuroLink does not validate it
Quick Start
1. Get an API key
- Visit: https://avian.io/accounts/signup/ and sign up with Google or a work email and password
- Create an API key from your signed-in account — the public pages only say "Get your API key in under a minute" (https://avian.io/pricing/) and do not name the key page; the docs examples show keys that start with avian-
- Prepaid credits only: add credits before calling the API (https://avian.io/pricing/ lists $50, $100, $150 and $250 packages); the sign-up buttons say "Get Started Free" but no free credits are stated anywhere, and the docs list HTTP 402 for an insufficient credit balance (https://avian.io/docs/)
- Set
AVIAN_IO_API_KEYin your .env file (the vendor's homepage example readsAVIAN_API_KEY, which NeuroLink does not)
2. Configure
export AVIAN_IO_API_KEY=your-api-key
export AVIAN_IO_MODEL=deepseek/deepseek-v4-pro-0813 # optional — overrides the default model
export AVIAN_IO_BASE_URL=https://api.avian.io/v1 # optional — proxy or self-hosted gateway
3. Use it
import { NeuroLink } from "@juspay/neurolink";
const neurolink = new NeuroLink();
const result = await neurolink.generate({
input: { text: "Explain context windows in one paragraph." },
provider: "avian-io",
model: "deepseek/deepseek-v4-pro-0813",
});
console.log(result.content);
# CLI
npx @juspay/neurolink generate "Hello" --provider avian-io
Per-request credentials work as they do for every provider:
await neurolink.generate({
input: { text: "Hello" },
provider: "avian-io",
credentials: { avianIo: { apiKey: process.env.AVIAN_IO_API_KEY } },
});
Billing
Avian's pricing page (https://avian.io/pricing/) describes "per-token pricing
with prepaid credits", "no subscriptions, no commitments", credits that "never
expire", and credit packages of $50, $100, $150 and $250. Its docs list
HTTP 402 Payment Required as "Insufficient credit balance"
(https://avian.io/docs/). No page states free credits or a free tier, so the
entry records no-free-tier. The "Get Started Free" button on the public
pages is the sign-up call to action; it is not a stated free allowance.
Models
| Model | Context | Max output | Vision | $/M in · out (cache read) | Notes |
|---|---|---|---|---|---|
deepseek/deepseek-v4-pro-0813 ⭐ | 1,000,000 | 393,216 | no | $0.594 / $1.782 ($0.0198) | Default — the model Avian promotes with a "now live" banner on its home, docs, models, pricing and About pages. Reasoning-flagged. |
deepseek/deepseek-v4-flash | 1,000,000 | 393,216 | no | $0.0805 / $0.161 ($0.0165) | Fallback; lowest input and output price on the roster. Reasoning-flagged. |
deepseek/deepseek-v3.2 | 163,840 | 65,536 | no | $0.23 / $0.33 ($0.012) | Fallback; the model in every docs code example, labelled "(Legacy)" by the vendor. Reasoning-flagged. |
z-ai/glm-5.2 | 1,048,576 | 131,072 | no | $0.495 / $1.733 ($0.124) | Fallback; highest-numbered GLM on the roster. |
deepseek/deepseek-v4-pro | 1,000,000 | 393,216 | no | $1.305 / $2.61 ($0.10875) | Undated V4 Pro build; roster-listed only. Reasoning-flagged. |
minimax/minimax-m2.5 | 196,608 | 131,072 | no | $0.27 / $1.08 ($0.15) | Roster-listed only. |
z-ai/glm-5 | 204,800 | 131,072 | no | $0.516 / $2.322 ($0.129) | Roster-listed only. |
z-ai/glm-5.1 | 202,752 | 202,752 | no | $0.743 / $2.971 ($0.186) | Roster-listed only. |
moonshotai/kimi-k2.5 | 262,144 | 262,144 | no | $0.45 / $2.2 ($0.225) | Roster-listed only. |
moonshotai/kimi-k2.6 | 262,144 | 262,144 | no | $0.95 / $4 ($0.16) | Roster-listed only. |
xiaomi/mimo-v2.6-flash | 1,048,576 | 131,072 | no | $0.2 / $0.4 ($0.05) | Roster-listed only. Reasoning-flagged. |
xiaomi/mimo-v2.6-pro | 1,048,576 | 131,072 | no | $0.435 / $0.87 ($0.0036) | Roster-listed only. Reasoning-flagged. |
Context, max output and prices come from an unauthenticated
GET https://api.avian.io/v1/models call made 2026-09-29 (13 models, all chat
models; 12 curated into this catalog). The same prices appear on
the docs page,
the models page and
the pricing page, which also state context and
max output in rounded form (for example "1M" and "384K"). "Reasoning-flagged"
means the roster's reasoning field is true; it is not a documented
capability.
models.defaultContextWindow (163,840) and models.defaultMaxOutputTokens
(65,536) are the smallest context and max-output values on today's roster, so a
model id that is not in the catalog gets a figure no roster model falls below.
They are not a vendor-stated general cap.
Vision: every model is vision: false. The homepage and About page list
"vision analysis" among built-in capabilities "across all models", but no page
says which models accept image input in a chat message, so none is declared.
Fallback order when the default is unavailable:
deepseek/deepseek-v4-flash → deepseek/deepseek-v3.2 → z-ai/glm-5.2. The
runtime fallback model name the loader derives (fallbacks[1]) is
deepseek/deepseek-v3.2, the one model the docs' function-calling and
streaming examples use.
Verification status
Tier-2 onboarding requires evidence before a provider is accepted, and
pnpm run verify:provider-onboarding gates it in CI. This is what the
catalog currently records for Avian — docs- and roster-verified, not
live-verified:
| Probe | Result |
|---|---|
| Roster | unauthenticated GET /v1/models, HTTP 200, 13 models, 2026-09-29 — no key used |
| Billing | public pricing page describes prepaid credits with no subscription and states no free tier or free credits, 2026-09-29 |
| Auth-failure shape | the docs list HTTP 401 "Missing or invalid API key" and 402 "Insufficient credit balance" but describe the error body only as "a JSON body with a descriptive message"; the body was not probed, so errorRules match the status codes alone (401, 402) |
| Tools / structured output | function calling is documented at https://avian.io/docs/; response_format is not documented anywhere opened. Neither was exercised live, and no combined tools+schema request was sent — structuredOutputWithTools stays false |
| Live capability sweep | not run. evidence.liveMatrix is null. Before treating this provider as production-ready, run npx tsx test/continuous-test-suite-provider-matrix.ts --provider=avian-io with a real key and record the result. |
Do not treat this entry as equivalent to a live-verified Tier-2 provider
(e.g. FriendliAI, Novita AI) until that live matrix has been run and
evidence.liveMatrix is filled in.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| HTTP 402 on every request | No prepaid credit balance — Avian has no free tier | Add credits at https://avian.io/pricing/ (the package amounts are listed there) |
| HTTP 401 | Missing or invalid key, or the key was set under the wrong variable name | Set AVIAN_IO_API_KEY; the vendor's homepage example uses AVIAN_API_KEY, which NeuroLink does not read |
| Model not found | The roster changed since 2026-09-29, or a display name was used instead of an id | Use an id exactly as listed by the unauthenticated GET /v1/models; the homepage snippet's DeepSeek-V3.2 is not a roster id, the docs' deepseek/deepseek-v3.2 is |
| Structured output ignored with tools attached | structuredOutputWithTools is false on this entry — untested combination | NeuroLink omits response_format automatically whenever tools are present, before sending |
| Tool calls not returned | Tool calling on Avian is model-dependent here — only deepseek/deepseek-v3.2 has a documented example | Try deepseek/deepseek-v3.2, then report which models work so the entry can be tightened |
| Unexpected HTTP 429 | The pages say "No Rate Limits", yet the docs list 429 "Rate limit exceeded. Retry after a brief delay" | Back off briefly and retry; the vendor's own docs describe 429 as retryable |
See also
- Provider setup overview
- All providers
- Tier-2 onboarding — how this provider's JSON becomes a working integration
- Provider feature compatibility