Skip to main content

Novita AI Provider Guide

Novita AI 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/novita.json) rather than hand-written code. That file is the source of truth for everything on this page.


Key Facts​

  • Provider id: novita
  • Protocol: OpenAI-compatible (/chat/completions)
  • Base URL: https://api.novita.ai/openai/v1
  • Default model: zai-org/glm-5.3-flash
  • Models in catalog: 5
  • Streaming: supported
  • Tool calling: supported (native)
  • Structured output: supported, including together with tool calling in the same request — Novita is verified to accept tools and response_format at once, unlike several sibling catalog providers.
  • Embeddings: not supported
  • Billing: free-tier
  • Key format: keys match ^sk_[A-Za-z0-9_-]+$

Quick Start​

1. Get an API key​

  1. Visit: https://novita.ai/settings/key-management and sign in
  2. Generate an API key (it will start with sk_)
  3. Set NOVITA_API_KEY in your .env file

2. Configure​

export NOVITA_API_KEY=sk_your-api-key
export NOVITA_MODEL=zai-org/glm-5.3-flash # optional — overrides the default model
export NOVITA_BASE_URL=https://api.novita.ai/openai/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: "novita",
model: "zai-org/glm-5.3-flash",
});

console.log(result.content);
# CLI
npx @juspay/neurolink generate "Hello" --provider novita

Per-request credentials work as they do for every provider:

await neurolink.generate({
input: { text: "Hello" },
provider: "novita",
credentials: { novita: { apiKey: process.env.NOVITA_API_KEY } },
});

Models​

ModelContextVision$/M in · outNotes
zai-org/glm-5.3-flash ⭐128Kno$0.075 / $0.25 (cached $0.015)Recommended default and test model; reasoning model — check finish_reason before trusting a short response.
meta-llama/llama-3.3-70b-instruct128Kno—Plain instruct chat model; fallback.
deepseek/deepseek-v3-0324128Kno—Non-reasoning DeepSeek chat model; fallback.
qwen/qwen-2.5-72b-instruct128Kno—Plain instruct chat model; fallback.
google/gemma-3-27b-it128Kno—Non-reasoning instruct model; fallback.

Context window shown is the catalog default of 128,000 tokens; the default max output is 4,096 tokens — noticeably smaller than most catalog providers, so raise maxTokens explicitly for longer completions or reasoning-heavy prompts on the default model.

Fallback order when the default is unavailable: meta-llama/llama-3.3-70b-instruct → deepseek/deepseek-v3-0324 → qwen/qwen-2.5-72b-instruct → google/gemma-3-27b-it.


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 records for Novita AI:

ProbeResult
Rosterauthenticated GET /openai/v1/models, HTTP 200, 2026-09-05
Auth rejectionHTTP 401 (FAILED_TO_AUTH), 2026-09-05
Live capability sweep2026-09-05, probed against the default model. Chat, streaming, and a real structured tool call all passed. response_format: json_object succeeded both alone and combined with tools in the same request — confirmed at the SDK level, which is why structuredOutputWithTools is true for this provider, unlike Friendli or Morph.

Troubleshooting​

SymptomCauseFix
FAILED_TO_AUTHNOVITA_API_KEY unset, wrong, or not sk_-prefixedRotate the key at https://novita.ai/settings/key-management
MODEL_NOT_FOUNDThe roster changed since 2026-09-05Pick a current id from https://novita.ai/models or the authenticated /openai/v1/models roster
Truncated or empty content on the default modelzai-org/glm-5.3-flash is a reasoning model and the catalog default max output is only 4,096 tokensRaise maxTokens for longer or reasoning-heavy completions

See also​