Skip to main content

EmpirioLabs AI Provider Guide

EmpirioLabs AI is a specialized AI inference and integration provider. It hosts open-source models on GPU infrastructure it manages, runs optimized endpoints for proprietary models, helps teams ship their own models, and offers on-demand GPU Cloud instances and hosted AI agents. Its model catalog spans text, image, audio, video, transcription, embedding, reranking, research and 3D models. API reference and guides are in the EmpirioLabs AI docs.

In NeuroLink, EmpirioLabs AI is a Tier-2 catalog provider: it speaks the OpenAI wire format, so its entire integration is one JSON file (src/lib/providers/catalog/empiriolabs.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. This entry was onboarded credential-free — no API key was created and no chat, streaming or tool-call request was ever sent. Everything below comes from the vendor's own public docs (docs.empiriolabs.ai) and an unauthenticated GET /v1/models call. evidence.liveMatrix is null in the catalog file until someone runs the live capability sweep with a real key (see Live verification).


Key Facts​

  • Provider id: empiriolabs
  • Protocol: OpenAI-compatible (/v1/chat/completions) — confirmed on docs.empiriolabs.ai: "Accepts the same request body as the OpenAI Chat Completions API."
  • Base URL: https://api.empiriolabs.ai/v1
  • Default model: glm-5-3 (Zhipu GLM-5.3 — marked is_featured: true on the live roster)
  • Models in catalog: 6 (curated text/chat subset of a 217-model roster that also spans vision, audio, video, image and 3D generation)
  • Streaming: documented as a supported request parameter (stream); not live-probed
  • Tool calling: model-dependent — the roster's own features field marks function_calling on 97 of 217 models, not all of them
  • Structured output: model-dependent per the vendor's docs ("json_schema means strict schema support, json_object means JSON mode only... check via GET /v1/models/{modelId}"); the default model (glm-5-3) documents json_object support, so the provider-level flag is true
  • Structured output + tools together: not declared — no combined probe was possible without a key
  • Embeddings: not supported by this integration (the vendor does list a separate embedding-model family, but NeuroLink's generic OpenAI-compatible catalog provider does not implement embed()/embedMany())
  • Billing: free-tier — pricing page: "$0 to start... No subscription needed", with several models marked "Free" at $0 input/output/cache cost. Getting-started docs also list prepaid credits as a prerequisite for non-free models, so budget for that before heavy use.
  • Key format: keys use the sk-empiriolabs- prefix (documented)

Quick Start​

1. Get an API key​

  1. Visit: https://platform.empiriolabs.ai and create an account
  2. Create an API key from the dashboard (keys use the sk-empiriolabs- prefix, up to 50 per account)
  3. Selected models (e.g. GLM 4.7 Flash) run at $0 cost; other models draw from prepaid credits topped up via the dashboard Billing page — confirm current pricing before heavy use
  4. Set EMPIRIOLABS_API_KEY in your .env file

2. Configure​

export EMPIRIOLABS_API_KEY=sk-empiriolabs-your-api-key
export EMPIRIOLABS_MODEL=glm-5-3 # optional — overrides the default model
export EMPIRIOLABS_BASE_URL=https://api.empiriolabs.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: "empiriolabs",
model: "glm-5-3",
});

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

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

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

Models​

ModelContextMax outVisionStructured output$/M in · out (cached)Notes
glm-5-3 ⭐1M131,072nojson_object$1.40 / $4.40 ($1.40)Recommended — roster is_featured: true; reasoning, function calling, web search.
glm-5-3-flash1M131,072yesjson_object$0.075 / $0.25 ($0.075)Lighter/cheaper sibling; also vision (document_understanding, video_understanding); fallback.
glm-5-21M131,072nojson_object$1.40 / $4.40 ($1.40)Prior GLM generation; fallback.
kimi-k31M131,072yesjson_schema$3.00 / $15.00 ($3.00)Moonshot Kimi K3 — multimodal, agentic coding; strict schema output; fallback.
qwen3-7-max1M65,536nojson_schema$2.50 / $7.50 ($2.50)Alibaba flagship reasoning model with code interpreter; lower max output than the GLM family; fallback.
minimax-m2-7-highspeed200K32,768nojson_object$0.30 / $1.20 ($0.03)Smallest context/output in this set; lightest/cheapest fallback.

All context, output, pricing and structured-output values above are read directly from the unauthenticated GET https://api.empiriolabs.ai/v1/models response (2026-09-28), not invented or estimated. This 6-model set is a curated subset — the full roster returned 217 ids spanning text, vision, audio, video, image and 3D-generation models; only text/chat-completions models with documented function_calling are catalogued here.

Fallback order when the default is unavailable: glm-5-3-flash → glm-5-2 → kimi-k3 → qwen3-7-max → minimax-m2-7-highspeed.


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 EmpirioLabs AI:

ProbeResult
Rosterunauthenticated GET /v1/models, HTTP 200, 217 models, 2026-09-28. No API key was created or used.
Auth rejectionNot probed (would require a key). Documented shape only: docs.empiriolabs.ai/authentication states a missing/malformed/unknown token returns 401 Unauthorized.
Wire compatibilityDocumented only: docs.empiriolabs.ai/compatibility states the endpoint "accepts the same request body as the OpenAI Chat Completions API" and lists messages, model, stream, temperature, max_tokens, response_format as supported.
Live capability sweepNot run. evidence.liveMatrix is null. No chat, streaming, tool-call or structured-output request has been sent to this vendor.

Because no live probe was possible, capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are conservatively false, and capabilities.tools is "model-dependent" rather than an unqualified true — the roster shows function_calling on 97 of 217 models, not the whole catalog. Whoever runs the live matrix next should re-check these flags against real responses, per Live verification.


Documented quirks worth knowing (not catalog quirks)​

  • Implicit system prompt: EmpirioLabs AI docs say every chat model has a built-in identity message that is prepended automatically when your request has no system/developer role message. Supplying your own system message fully replaces it (no merging). This doesn't require a named catalog quirks entry — it only changes behavior when you omit a system message — but it's worth knowing if a completion reads oddly "in character."
  • response_format is per-model: sending a structured-output format a model doesn't support returns HTTP 400 per the vendor's docs. Check GET /v1/models/{modelId} for a given model's structured_output value (json_schema, json_object, or absent) before relying on it.

Troubleshooting​

SymptomCauseFix
Invalid EmpirioLabs API keyEMPIRIOLABS_API_KEY unset or wrongCheck the key at https://platform.empiriolabs.ai
401 UnauthorizedToken missing, malformed, or not found (per vendor docs)Confirm the header is Authorization: Bearer sk-empiriolabs-...
402 Payment Required (documented, not live-verified)Account has insufficient prepaid creditsTop up credits via the dashboard Billing page, or pick a $0 free model
429 Too Many RequestsRate limit exceeded (new accounts: 50 RPM / 2,000,000 TPM)Retry with exponential backoff, or email support@empiriolabs.ai for higher limits
HTTP 400 on response_formatThe chosen model doesn't support the requested structured-output modeCheck GET /v1/models/{modelId} for that model's structured_output value

See also​