above.dev Provider Guide
above.dev 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/above-dev.json) rather than hand-written code.
That file is the source of truth for everything on this page.
Verification status: docs- and roster-verified, not yet live-verified. Everything below comes from above.dev's own public docs (https://above.dev/docs) and an unauthenticated
GET /v1/modelscall — no API key was used or obtained. Nogenerate()/stream()request has been made against this provider yet, so chat, streaming, tool calling and structured output are not confirmed to work end-to-end. See Verification status below before relying on this provider in production.
Key Facts
- Provider id:
above-dev - Protocol: OpenAI-compatible (
POST /v1/chat/completions, documented as an alias that delegates to the vendor's nativePOST /v1/messageswith "identical behaviour") - Base URL:
https://api.above.dev/v1 - Default model:
deepseek-v4.1-flash(above.dev's own default when no model is named — "the cheapest model in the catalog") - Models in catalog: 9
- Streaming: documented (
stream: true, SSE, dedicated docs section) - Tool calling: documented as an accepted request field, but only as a routing signal — see Tools & structured output
- Structured output: same caveat as tool calling; not declared supported here
- Embeddings: not documented
- Billing: no free tier — API keys are issued only after purchase
- Key format: prefix
sk-gw-documented; the full character set after the prefix is not specified - Rate limits: 300 requests/minute per account (account-wide, all keys)
Quick Start
1. Get an API key
- Visit: https://above.dev/pricing and purchase credit — API keys are issued only after purchase, there is no free signup
- Copy the issued key — it starts with
sk-gw-(the docs give only the prefix, not a full character-set spec) - Manage or rotate the key from https://above.dev/dashboard if it is ever compromised — a key grants full access to your credit balance
- Set
ABOVE_DEV_API_KEYin your .env file
2. Configure
export ABOVE_DEV_API_KEY=your-api-key
export ABOVE_DEV_MODEL=deepseek-v4.1-flash # optional — overrides the default model
export ABOVE_DEV_BASE_URL=https://api.above.dev/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: "above-dev",
model: "deepseek-v4.1-flash",
});
console.log(result.content);
# CLI
npx @juspay/neurolink generate "Hello" --provider above-dev
Per-request credentials work as they do for every provider:
await neurolink.generate({
input: { text: "Hello" },
provider: "above-dev",
credentials: { "above-dev": { apiKey: process.env.ABOVE_DEV_API_KEY } },
});
Models
| Model | Context | Vision | $/M in · out | Notes |
|---|---|---|---|---|
deepseek-v4.1-flash ⭐ | 1M | yes* | time-of-day (see note) | Default — the id above.dev itself routes to when no model is named. Tier T1. |
deepseek-v4-pro | 1M | no | time-of-day (see note) | Tier T2 ("agentic — multi-step, tool-capable" per the vendor's own tier table). |
glm-5.2 | 1.05M | no | $1.54 / $4.84 | Zhipu GLM 5.2. Tier T2. |
glm-5.3-flash | 1.05M | yes* | $0.165 / $0.55 | Zhipu GLM 5.3 Flash. Tier T1. |
glm-5.2-fast | 1.05M | no | $2.31 / $7.26 | Zhipu GLM 5.2 Fast. Tier T3 ("highest capability in the catalog"). |
qwen3.8-max | 1M | yes* | $2.20 / $6.60 | Alibaba Qwen 3.8 Max. Tier T3. |
mimo-v2.6-pro | 1M | no | $0.5077 / $1.0154 | MiMo V2.6 Pro. Tier T2. |
mimo-v2.6-flash | 1M | no | $0.1692 / $0.3385 | MiMo V2.6 Flash. Tier T1. |
mimo-v2.6-pro-ultraspeed | 1M | no | $5.0769 / $10.1538 | MiMo V2.6 Pro UltraSpeed. Tier T3. |
* Vision is supports_vision: true as self-reported by above.dev's own
GET /v1/models response (unauthenticated, retrieved 2026-09-28). No image
was actually sent to any model — this is vendor-stated metadata, not a
live-probed result, so models.visionModel is deliberately left unset in the
catalog entry.
Every model in the current catalog accepts up to 131,072 output tokens
(documented account-wide limit, also reported per-model as
max_completion_tokens in GET /v1/models).
Time-of-day pricing: deepseek-v4.1-flash and deepseek-v4-pro bill at
different peak/off-peak rates (peak = 01:00–04:00 and 06:00–10:00 UTC on
weekdays; everything else, including all of the weekend in Beijing time, is
off-peak). Because the catalog schema's pricingPerMTok is a single number,
not a range, these two models' pricing is omitted from the catalog entry
rather than collapsed into one number — see above.dev's pricing table
(https://above.dev/docs) for the current peak/off-peak figures. Every other
model in this roster bills a single flat rate, shown above.
Fallback order when the default is unavailable: glm-5.3-flash →
mimo-v2.6-flash → deepseek-v4-pro → glm-5.2 → mimo-v2.6-pro →
glm-5.2-fast → qwen3.8-max → mimo-v2.6-pro-ultraspeed.
Two additional model ids, glm-5.3-flash-modal and deepseek-v4.1-flash-modal,
are named in above.dev's docs as "free-tier routes" capped at 16,384 output
tokens (they share a fixed concurrency pool). Neither id appears in the
current GET /v1/models roster, so neither is represented in this catalog —
and in any case a purchased key is still required to reach them, so the
provider's overall billingPolicy remains no-free-tier.
Tools & structured output — a documented caveat
above.dev's own API reference table describes the /v1/messages request
parameters differently depending on the field:
temperature— "Passed through to the model."tool_choice— "Tool choice control. Passed through to the model."tools— "Tool definitions. Presence influences routing toward tool-capable models."response_format— "Structured output format. Presence scores toward structured-output models."
The docs never state that tools or response_format are forwarded to, or
honoured by, whichever model ends up serving the request — only that sending
them nudges above.dev's routing. No example response containing tool_calls,
a finish_reason value, or a reasoning/reasoning_content field appears
anywhere in the docs. GET /v1/models does self-report
supports_tool_calls: true and supports_structured_output: true for every
model in the roster, but that is unauthenticated, vendor-supplied metadata,
not a probed result.
Given that ambiguity and that no live request (which would require a paid key) was made:
capabilities.toolsis set to"model-dependent"rather thantrue.capabilities.structuredOutputandcapabilities.structuredOutputWithToolsare bothfalse.capabilities.thinkingisfalse—GET /v1/modelsreportssupports_reasoning: truefor every model, but the human-readable docs never document areasoning/thinkingrequest or response field, so this is not treated as a confirmed NeuroLink-facing capability.
A future pass with a real key should re-probe all of this the way
friendli.json/novita.json were probed (see docs/provider-integration/tiers/tier-2-catalog-entry.md#live-verification)
and tighten these flags with evidence.liveMatrix filled in.
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 above.dev — docs- and roster-verified only,
not yet live-verified:
| Probe | Result |
|---|---|
| Roster | unauthenticated GET https://api.above.dev/v1/models — HTTP 200, 9 models, 2026-09-28. No key used. |
| Docs cross-check | https://above.dev/docs fetched and re-read 2026-09-28 for auth header shape, endpoints, pricing, limits and error codes. |
| Auth rejection probe | Not performed — would require sending a request with a credential header, which is out of scope for a credential-free onboarding. |
| Live capability sweep | Not performed — evidence.liveMatrix is null. No generate()/stream() call has been made against above-dev yet. |
Until a live matrix run fills in evidence.liveMatrix, treat tools,
structuredOutput, structuredOutputWithTools and thinking as unproven —
the catalog entry already reflects that by declining to assert them.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
Invalid or missing above.dev API key | ABOVE_DEV_API_KEY unset, wrong, or inactive (401) | Check the key and get/rotate one at https://above.dev/pricing / https://above.dev/dashboard |
| Account balance insufficient (402) | No purchased credit remaining | Top up at https://above.dev/pricing |
| Model not enabled for key (403) | The model is plan-restricted or in private beta for this key | Pick another catalog model, or contact above.dev to enable it |
| Rate limited (429) | More than 300 requests/minute on the account | Retry after the documented Retry-After header |
| Upstream timeout (504) | provider_timeout — the routed model did not respond in time | Retry the request |
See also
- Provider setup overview
- All providers
- Tier-2 onboarding — how this provider's JSON becomes a working integration
- Provider feature compatibility