Skip to main content

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 unauthenticated GET 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 documented reasoning_effort support 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 false until proven
  • Structured output: not documented by the vendor — left false until 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​

  1. 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
  2. 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-
  3. 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
  4. Set INCO_API_KEY in 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​

ModelContextVision$/M in · out (cached)Notes
glm-5.3 ⭐1Mno$1.40 / $4.40 ($0.26)Default (editorial pick). Standard tier, 744B params, exposes reasoning_effort.
deepseek-v4.1-flash1Mno$0.30 / $1.20 ($0.006)Standard tier, 552B params, reasoning_effort. Fallback.
kimi-k31Mno$3.00 / $15.00 ($0.30)Standard tier, 2.8T params (MoE), reasoning_effort. Fallback.
glm-5.3-flash1Mno$0.15 / $0.50 ($0.03)Standard tier, 320B params. Fallback.
minimax-m31Myes$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:fast1Mno$2.80 / $8.80 ($0.52)Fast-tier sibling of the default; ~2x price for lower latency. Fallback.
kimi-k3:fast1Mno$6.00 / $30.00 ($0.60)Fast-tier sibling of kimi-k3. Fallback.
deepseek-v4.1-flash:fast1Myes$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:fast1Myes$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:fast1Myes$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:

ProbeResult
RosterDone. 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-checkDone. 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 callingNot documented, not probed. capabilities.tools is false until the vendor's docs or a live probe show function calling.
Structured outputNot documented, not probed. capabilities.structuredOutput and structuredOutputWithTools are false — no combined (or even single) probe was possible without a key.
VisionVendor-reported metadata only. Four ids carry a modalities field naming image input; no image request has been sent.
Live capability matrixNot 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​

SymptomCauseFix
Invalid Inco API keyINCO_API_KEY unset, wrong, or expiredCheck the key on the dashboard's Keys page (https://platform.inco.ai/keys)
Model not foundThe roster changed since 2026-09-28, or the id is mistypedPick a current id from the unauthenticated GET /v1/models roster
HTTP 402 on every requestPrepaid balance is empty (credit_balance_exhausted) — no free tierTop up credit on the dashboard before retrying
HTTP 429, spend_limit_exceededYour account's monthly spending cap was hitRaise the cap on the Limits page, or wait for the next billing cycle
HTTP 429, rate_limit_exceededPer-minute request limit hitBack off and retry; check the x-inco-ratelimit-scope response header (quota vs upstream)
Can't sign upAccess is currently gated by a waitlist, not open signupJoin the waitlist at https://platform.inco.ai/waitlist

See also​