@juspay/neurolink
Version:
The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002
233 lines (232 loc) • 16.9 kB
JSON
{
"$schema": "./provider-catalog.schema.json",
"id": "ovhcloud",
"displayName": "OVHcloud AI Endpoints",
"aliases": [],
"tier": 2,
"wire": {
"baseURL": "https://oai.endpoints.kepler.ai.cloud.ovh.net/v1",
"envOverrides": {
"apiKey": "OVH_AI_ENDPOINTS_ACCESS_TOKEN"
}
},
"models": {
"default": "gpt-oss-120b",
"fallbacks": [
"gpt-oss-20b",
"Meta-Llama-3_3-70B-Instruct",
"Qwen3.6-27B",
"Mistral-Small-3.2-24B-Instruct-2506",
"Qwen3.5-9B"
],
"defaultContextWindow": 131072,
"defaultMaxOutputTokens": 131072,
"catalog": {
"gpt-oss-120b": {
"contextWindow": 131072,
"maxOutputTokens": 131072,
"pricingPerMTok": {
"input": 0.09,
"output": 0.47
},
"vision": false,
"status": "production",
"description": "Recommended default — OpenAI's open-weight gpt-oss-120b, the exact model OVHcloud's own getting-started guide uses for every code sample (docs.ovhcloud.com/en/guides/public-cloud/ai-machine-learning/ai-endpoints-getting-started, retrieved 2026-09-28), and the most fully documented model on the public catalog card (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/gpt-oss-120b/, retrieved 2026-09-28). That card's own \"Supported Features\" list names exactly Function calling, Reasoning and Streaming; its \"Output Formats\" list names raw_text, json_object and json_schema. The card's Python example builds the request with `Authorization: f\"Bearer {os.getenv('OVH_AI_ENDPOINTS_ACCESS_TOKEN')}\"` against https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/chat/completions, and reads a `reasoning_effort` generation parameter (low/medium/high) plus a `reasoning_content` response field — the basis for capabilities.thinking. No sign-in or API key was used to read any of this; it is all public documentation plus the unauthenticated GET on /v1/models. contextWindow and maxOutputTokens are the live, unauthenticated /v1/models response's own context_length/max_completion_tokens fields for this id (GET run 2026-09-28, HTTP 200). Pricing is that same response's per-token USD pricing (prompt/completion fields) converted to $/MTok; the EUR-denominated marketing catalog card quotes the same model at €0.08 in / €0.4 out per Mtoken, consistent with the API's USD figures at roughly current EUR/USD. No live request of any kind (chat, streaming, tool call) was made against this model — the entry is docs- and roster-verified only; see evidence.liveMatrix (null)."
},
"gpt-oss-20b": {
"contextWindow": 131072,
"maxOutputTokens": 131072,
"pricingPerMTok": {
"input": 0.05,
"output": 0.18
},
"vision": false,
"status": "production",
"description": "OpenAI's smaller open-weight gpt-oss-20b. Listed on the public catalog card (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) as a \"Reasoning LLM\" with Function calling: Yes, priced €0.04 in / €0.15 out per Mtoken — consistent with this id's per-token USD pricing on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200), which also supplies contextWindow/maxOutputTokens. Not individually probed; roster-verified fallback."
},
"Qwen3.6-27B": {
"contextWindow": 262144,
"maxOutputTokens": 262144,
"pricingPerMTok": {
"input": 0.47,
"output": 3.19
},
"vision": true,
"status": "production",
"description": "Qwen3.6-27B, listed on the public catalog card as \"Visual LLM (New)\" with Vision: Yes and Function calling: Yes (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28), priced €0.4 in / €2.7 out per Mtoken there — consistent with this id's per-token USD pricing on the live, unauthenticated GET /v1/models (2026-09-28, HTTP 200), which also supplies contextWindow/maxOutputTokens. Not individually probed; roster-verified fallback. No image-input wire format is documented, so it is not set as models.visionModel."
},
"Qwen3.8-27B": {
"contextWindow": 262144,
"maxOutputTokens": 262144,
"pricingPerMTok": {
"input": 0.47,
"output": 3.19
},
"vision": true,
"status": "production",
"description": "Qwen3.8-27B, a newer sibling of Qwen3.6-27B on the same catalog card, same \"Visual LLM (New)\" row: Vision: Yes, Function calling: Yes, €0.4 in / €2.7 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) — consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback."
},
"Qwen3.5-397B-A17B": {
"contextWindow": 262144,
"maxOutputTokens": 262144,
"pricingPerMTok": {
"input": 0.71,
"output": 4.25
},
"vision": true,
"status": "production",
"description": "Qwen3.5-397B-A17B, the largest model in this roster (397B-parameter MoE, ~17B active). Catalog card: \"Visual LLM (New)\", Vision: Yes, Function calling: Yes, €0.6 in / €3.6 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) — consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback."
},
"Qwen3.5-9B": {
"contextWindow": 262144,
"maxOutputTokens": 262144,
"pricingPerMTok": {
"input": 0.12,
"output": 0.18
},
"vision": true,
"status": "production",
"description": "Qwen3.5-9B, the smallest of the Qwen3.x \"Visual LLM (New)\" row: Vision: Yes, Function calling: Yes, €0.1 in / €0.15 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) — consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback."
},
"Meta-Llama-3_3-70B-Instruct": {
"contextWindow": 131072,
"maxOutputTokens": 131072,
"pricingPerMTok": {
"input": 0.74,
"output": 0.74
},
"vision": false,
"status": "production",
"description": "Meta Llama 3.3 70B Instruct, a plain non-reasoning chat model. Catalog card: \"LLM\" category, Vision: No, Function calling: Yes, €0.67 in / €0.67 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) — consistent with this id's per-token USD pricing on the live GET /v1/models (2026-09-28). Not individually probed; roster-verified fallback."
},
"Qwen2.5-VL-72B-Instruct": {
"contextWindow": 32768,
"maxOutputTokens": 32768,
"pricingPerMTok": {
"input": 1.01,
"output": 1.01
},
"vision": true,
"status": "production",
"description": "Qwen2.5-VL-72B-Instruct — a dedicated vision-language model (\"VL\"). Catalog card: \"Visual LLM\" category, Vision: Yes, Function calling: No, €0.91 in / €0.91 out per Mtoken (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) — the only model in this roster the vendor's own catalog explicitly marks Vision: Yes together with a specific, non-reasoning-family name, so it is set as models.visionModel. No image wire format (base64 vs. URL, content-parts shape) is documented, and no image request was sent (credential-free). Pricing/context/output-cap consistent with the live GET /v1/models (2026-09-28). Not individually probed; roster-verified."
},
"Qwen3-Coder-30B-A3B-Instruct": {
"contextWindow": 262144,
"maxOutputTokens": 262144,
"pricingPerMTok": {
"input": 0.07,
"output": 0.26
},
"vision": false,
"status": "production",
"description": "Qwen3-Coder-30B-A3B-Instruct — present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200: id, context_length=262144, max_completion_tokens=262144, USD pricing) but not yet on the public marketing catalog card (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, checked 2026-09-28 — that page lists 20 of the API's 24 live ids; this is one of the 4 not yet listed there). vision:false follows the model family naming (a code-instruct Qwen3 build, no \"VL\"/visual designation) rather than an explicit per-model vision flag; tools support is likewise not individually confirmed for this id — roster-verified only, not capability-probed."
},
"Mistral-Small-3.2-24B-Instruct-2506": {
"contextWindow": 131072,
"maxOutputTokens": 131072,
"pricingPerMTok": {
"input": 0.1,
"output": 0.31
},
"vision": false,
"status": "production",
"description": "Mistral Small 3.2 24B Instruct (2506 snapshot) — present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200) but not yet on the public marketing catalog card (checked 2026-09-28, one of the 4 live ids not yet listed there). Mistral's own upstream Small 3.2 release is text-only in its OVH deployment name (no \"VL\"/visual designation); vision:false and tools support are not individually confirmed for this id — roster-verified only."
},
"Mistral-7B-Instruct-v0.3": {
"contextWindow": 65536,
"maxOutputTokens": 65536,
"pricingPerMTok": {
"input": 0.11,
"output": 0.11
},
"vision": false,
"status": "production",
"description": "Mistral 7B Instruct v0.3 — present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200) but not on the public marketing catalog card (checked 2026-09-28). Small, plain instruct model; vision:false and tools support are not individually confirmed for this id — roster-verified fallback only."
},
"Mistral-Nemo-Instruct-2407": {
"contextWindow": 65536,
"maxOutputTokens": 65536,
"pricingPerMTok": {
"input": 0.14,
"output": 0.14
},
"vision": false,
"status": "production",
"description": "Mistral Nemo Instruct (2407 snapshot) — present on the live, unauthenticated GET /v1/models response (2026-09-28, HTTP 200) but not on the public marketing catalog card (checked 2026-09-28). Plain instruct model; vision:false and tools support are not individually confirmed for this id — roster-verified fallback only."
},
"Qwen3Guard-Gen-8B": {
"contextWindow": 32768,
"maxOutputTokens": 16384,
"pricingPerMTok": {
"input": 0,
"output": 0
},
"vision": false,
"status": "preview",
"description": "Qwen3Guard-Gen-8B — a moderation/safety classifier, not a general-purpose chat model. Catalog card: \"LLM Guard (Beta)\" category, priced Free (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28) — the live GET /v1/models response (2026-09-28) shows prompt/completion pricing of 0 for this id, confirming it. status is \"preview\" because the vendor explicitly labels it Beta. Kept out of models.fallbacks/topModels since it answers moderation prompts, not open-ended generation."
},
"Qwen3Guard-Gen-0.6B": {
"contextWindow": 32768,
"maxOutputTokens": 16384,
"pricingPerMTok": {
"input": 0,
"output": 0
},
"vision": false,
"status": "preview",
"description": "Qwen3Guard-Gen-0.6B — smaller sibling of Qwen3Guard-Gen-8B, same moderation/safety-classifier role. Catalog card: \"LLM Guard (Beta)\" category, priced Free (ovhcloud.com/en/public-cloud/ai-endpoints/catalog/, retrieved 2026-09-28); the live GET /v1/models response (2026-09-28) confirms 0 pricing for this id. status \"preview\" per the vendor's own Beta label. Kept out of models.fallbacks/topModels for the same reason as the 8B variant."
}
},
"topModels": [
"gpt-oss-120b",
"gpt-oss-20b",
"Qwen3.6-27B",
"Qwen3.8-27B",
"Qwen3.5-397B-A17B",
"Qwen3.5-9B",
"Meta-Llama-3_3-70B-Instruct",
"Qwen2.5-VL-72B-Instruct",
"Mistral-Small-3.2-24B-Instruct-2506"
],
"visionModel": "Qwen2.5-VL-72B-Instruct"
},
"capabilities": {
"text": true,
"streaming": true,
"tools": "model-dependent",
"toolsWithStreaming": false,
"structuredOutput": true,
"structuredOutputWithTools": false,
"embeddings": false,
"thinking": true
},
"errorRules": [
{
"status": 403,
"pattern": "Authentication Failed",
"class": "authentication",
"message": "Invalid or revoked OVHcloud AI Endpoints access token. Check {apiKeyEnvVar}. Get one at {setupUrl}"
}
],
"setup": {
"url": "https://www.ovhcloud.com/en/public-cloud/ai-endpoints/",
"apiKeyFormat": null,
"billingPolicy": "free-with-card",
"instructions": [
"1. Visit: https://www.ovhcloud.com/en/public-cloud/ai-endpoints/ and click Start now, which signs you in to (or creates) an OVHcloud Public Cloud manager account",
"2. In the manager, open Public Cloud > your project > AI & Machine Learning > AI Endpoints, and add a payment method to the project — OVHcloud states that projects in Discovery mode (no payment method) cannot use the service",
"3. Create an AI Endpoints API access token in that section; it is shown only once, so store it yourself, and note it can be given an expiration date and revoked",
"4. Set {apiKeyEnvVar} in your .env file (the vendor's own docs name this exact variable)"
],
"description": "OpenAI-compatible endpoint at https://oai.endpoints.kepler.ai.cloud.ovh.net/v1, documented as \"compatible with the OpenAI specifications\" (docs.ovhcloud.com/en/guides/public-cloud/ai-machine-learning/ai-endpoints-getting-started). Several models (both Qwen3Guard classifiers, stable-diffusion-xl, the four NVIDIA Riva TTS voices) are billed at €0/free, but the account itself requires a payment method on the Public Cloud project before any API key can be used — OVHcloud's own docs: \"projects in Discovery mode (without a payment method) cannot use the service.\" A very limited anonymous tier also exists (2 requests/minute per IP per model, undocumented auth shape) but is not what {apiKeyEnvVar} configures. Authenticated rate limit is documented as 400 requests/minute per project per model; over that returns HTTP 429. This catalog entry covers only the chat-completions models; OVHcloud AI Endpoints also serves speech-to-text (Whisper), text-to-speech (NVIDIA Riva), image generation (Stable Diffusion XL) and embeddings (bge-m3, bge-multilingual-gemma2, Qwen3-Embedding-8B) models on the same platform, which are out of scope for this Tier-2 chat-completions integration."
},
"evidence": {
"rosterVerified": {
"date": "2026-09-28",
"method": "unauthenticated GET https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/models — 24 models; credential-free, no key used",
"status": 200
},
"liveMatrix": null,
"addedInPR": "https://github.com/juspay/neurolink/pull/1848"
}
}