Inco Provider Guide
Inco 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/inco.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 was built from Inco's own published documentation (
https://platform.inco.ai/docs) and an unauthenticatedGET https://api.inco.ai/v1/models— no API key was used or obtained. Capabilities that can only be proven with a working key (tool calling, structured output, vision replies, the exact 401/404/429 error bodies) are left conservative (false) or undocumented until a live capability sweep runs. See Live verification below.
Key Facts
- Provider id:
inco - Protocol: OpenAI-compatible (
POST /v1/chat/completions); the vendor's docs also describe an Anthropic-SDK-shaped path at the host root (https://api.inco.ai), not used by this entry - Base URL:
https://api.inco.ai/v1 - Default model:
glm-5.3(editorial pick — Inco's docs name no recommended/default model; chosen for its documentedreasoning_effortsupport and mid-range price among the roster) - Models in catalog: 10
- Streaming: supported (SSE, per vendor docs)
- Tool calling: not documented by the vendor — left
falseuntil proven - Structured output: not documented by the vendor — left
falseuntil proven - Embeddings: not documented
- Billing: no free tier — strictly prepaid, pay-per-token; a zero balance
returns HTTP 402 (
credit_balance_exhausted) until you top up - Key format:
sk-inco-... - Access: currently waitlist-gated — sign-up is not self-serve
Quick Start
1. Get an API key
- Visit: https://platform.inco.ai/waitlist and request access — Inco is currently waitlist-gated, not open signup; existing users sign in at https://platform.inco.ai/sign-in
- Once approved, create an API key on the dashboard's Keys page
(https://platform.inco.ai/keys) — it is shown in full only once and
starts with
sk-inco- - Add prepaid credit before use: billing is strictly pay-per-token with no
free tier, and a zero balance returns HTTP 402
(
credit_balance_exhausted) until you top up - Set
INCO_API_KEYin your .env file
2. Configure
export INCO_API_KEY=your-api-key
export INCO_MODEL=glm-5.3 # optional — overrides the default model
export INCO_BASE_URL=https://api.inco.ai/v1 # optional — self-hosted or proxy
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: "inco",
model: "glm-5.3",
});
console.log(result.content);
# CLI
npx @juspay/neurolink generate "Hello" --provider inco
Per-request credentials work as they do for every provider:
await neurolink.generate({
input: { text: "Hello" },
provider: "inco",
credentials: { inco: { apiKey: process.env.INCO_API_KEY } },
});
Models
| Model | Context | Vision | $/M in · out (cached) | Notes |
|---|---|---|---|---|
glm-5.3 ⭐ | 1M | no | $1.40 / $4.40 ($0.26) | Default (editorial pick). Standard tier, 744B params, exposes reasoning_effort. |
deepseek-v4.1-flash | 1M | no | $0.30 / $1.20 ($0.006) | Standard tier, 552B params, reasoning_effort. Fallback. |
kimi-k3 | 1M | no | $3.00 / $15.00 ($0.30) | Standard tier, 2.8T params (MoE), reasoning_effort. Fallback. |
glm-5.3-flash | 1M | no | $0.15 / $0.50 ($0.03) | Standard tier, 320B params. Fallback. |
minimax-m3 | 1M | yes | $0.30 / $1.20 ($0.06) | Standard tier, 428B params, reasoning_effort. Vision per the catalog's modalities field — not live-probed. Fallback. |
glm-5.3:fast | 1M | no | $2.80 / $8.80 ($0.52) | Fast-tier sibling of the default; ~2x price for lower latency. Fallback. |
kimi-k3:fast | 1M | no | $6.00 / $30.00 ($0.60) | Fast-tier sibling of kimi-k3. Fallback. |
deepseek-v4.1-flash:fast | 1M | yes | $0.60 / $2.40 ($0.012) | Fast-tier sibling; vision per modalities (the non-fast id has no modalities field) — not live-probed. Fallback. |
glm-5.3-flash:fast | 1M | yes | $0.15 / $0.50 ($0.03) | Fast-tier sibling; vision per modalities (the non-fast id has no modalities field) — not live-probed. Fallback. |
minimax-m3:fast | 1M | yes | $0.60 / $2.40 ($0.12) | Fast-tier sibling of minimax-m3, same vision claim. Fallback. |
Context window shown is the documented context_length of 1,048,576 tokens
for every model (from the live, unauthenticated GET /v1/models response,
2026-09-28). Inco's catalog does not publish a separate per-request output
token ceiling, so defaultMaxOutputTokens uses a conservative generic
default (4,096) rather than an invented vendor number.
Vision is read directly from the live catalog's own modalities field
(input: ["text","image"]), which four of the ten ids carry and six do not —
this is vendor-reported metadata, not a probed capability; no image request
has actually been sent to Inco.
Fallback order when the default is unavailable: deepseek-v4.1-flash →
kimi-k3 → glm-5.3-flash → minimax-m3 → glm-5.3:fast → kimi-k3:fast →
deepseek-v4.1-flash:fast → glm-5.3-flash:fast → minimax-m3:fast.
Live verification still needed
Tier-2 onboarding normally requires an authenticated roster probe, an auth
rejection probe, and a live capability sweep
(docs/provider-integration/tiers/tier-2-catalog-entry.md). This entry was
built credential-free — no signup, no key, no POST request to Inco — so
none of that could run yet:
| Probe | Result |
|---|---|
| Roster | Done. Unauthenticated GET /v1/models, HTTP 200, 2026-09-28, 10 models — matches the vendor docs' claim that the catalog "can be fetched without a key." |
| Docs cross-check | Done. https://platform.inco.ai/docs confirms the OpenAI Chat Completions wire shape, Authorization: Bearer sk-inco-... auth, and the documented error code values (invalid_api_key, key_expired, model_not_found, rate_limit_exceeded, spend_limit_exceeded, credit_balance_exhausted) used to build errorRules — no literal JSON error bodies were shown on the page, only the code table. |
| Auth rejection (live) | Not run. Would require a POST /v1/chat/completions with a missing/bad key — out of scope for a credential-free pass. |
| Billing (live) | Not run. Billing policy (no-free-tier, prepaid, HTTP 402 on empty balance) is taken from the docs' own wording, not a live probe. |
| Tool calling | Not documented, not probed. capabilities.tools is false until the vendor's docs or a live probe show function calling. |
| Structured output | Not documented, not probed. capabilities.structuredOutput and structuredOutputWithTools are false — no combined (or even single) probe was possible without a key. |
| Vision | Vendor-reported metadata only. Four ids carry a modalities field naming image input; no image request has been sent. |
| Live capability matrix | Not run. evidence.liveMatrix is null. Once a key is obtained (waitlist approval), run npx tsx test/continuous-test-suite-provider-matrix.ts --provider=inco and record the result there. |
Anyone picking this up with a working key should re-run the roster probe
(rosters drift), then follow the four-step live-verification checklist in
tiers/tier-2-catalog-entry.md before flipping any capability flag from
false to true.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
Invalid Inco API key | INCO_API_KEY unset, wrong, or expired | Check the key on the dashboard's Keys page (https://platform.inco.ai/keys) |
| Model not found | The roster changed since 2026-09-28, or the id is mistyped | Pick a current id from the unauthenticated GET /v1/models roster |
| HTTP 402 on every request | Prepaid balance is empty (credit_balance_exhausted) — no free tier | Top up credit on the dashboard before retrying |
HTTP 429, spend_limit_exceeded | Your account's monthly spending cap was hit | Raise the cap on the Limits page, or wait for the next billing cycle |
HTTP 429, rate_limit_exceeded | Per-minute request limit hit | Back off and retry; check the x-inco-ratelimit-scope response header (quota vs upstream) |
| Can't sign up | Access is currently gated by a waitlist, not open signup | Join the waitlist at https://platform.inco.ai/waitlist |
See also
- Provider setup overview
- All providers
- Tier-2 onboarding — how this provider's JSON becomes a working integration
- Provider feature compatibility