@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
213 lines (212 loc) • 23.9 kB
JSON
{
"$schema": "./provider-catalog.schema.json",
"id": "thinking-machines",
"displayName": "Thinking Machines",
"aliases": ["tinker"],
"tier": 2,
"wire": {
"baseURL": "https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1",
"apiKeyFallbackEnvVars": ["TINKER_API_KEY"]
},
"models": {
"default": "moonshotai/Kimi-K2.6",
"fallbacks": ["Qwen/Qwen3.8-27B", "openai/gpt-oss-120b", "Qwen/Qwen3-8B"],
"defaultContextWindow": 32768,
"defaultMaxOutputTokens": 8192,
"catalog": {
"moonshotai/Kimi-K2.6": {
"contextWindow": 32768,
"pricingPerMTok": {
"input": 2.205,
"output": 5.49,
"cachedInput": 0.441
},
"vision": false,
"status": "preview",
"description": "NeuroLink default. The OpenCode tutorial (https://tinker-docs.thinkingmachines.ai/tutorials/deployment/opencode/, retrieved 2026-09-29), section \"Using a base model (no fine-tuning)\", says \"You can also point at a base model on Tinker's sampler:\" and shows a models entry keyed by this id with \"name\": \"Kimi K2.6\" and \"limit\": { \"context\": 32768, \"output\": 8192 }. The tutorial's Step 2 provider config sets options.baseURL to https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Kimi-K2.6: Context 32K, Size 1T, Active 32B, Arch MoE, Type \"Hybrid + Vision\", Tinker ID moonshotai/Kimi-K2.6, Prefill $2.205 ($0.441 cached), Sample $5.49 per million tokens. The page's Model Types section says Hybrid models \"Run in both thinking and non-thinking modes.\" It says Vision models are \"Vision-language models that accept images alongside text.\" The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under \"Recommended replacement\" for Kimi-K2.5 and Kimi-K2-Thinking. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"Qwen/Qwen3.8-27B": {
"contextWindow": 65536,
"pricingPerMTok": {
"input": 1.86,
"output": 5.595,
"cachedInput": 0.372
},
"vision": false,
"status": "preview",
"description": "Fallback. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.8-27B: Context 64K, Size 27B, Active 27B, Arch Dense, Type \"Hybrid + Vision\", Tinker ID Qwen/Qwen3.8-27B, Prefill $1.86 ($0.372 cached), Sample $5.595 per million tokens. The page's Model Types section says Hybrid models \"Run in both thinking and non-thinking modes.\" It says Vision models are \"Vision-language models that accept images alongside text.\" The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under \"Recommended replacement\" for Qwen3.6-27B. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"Qwen/Qwen3.6-35B-A3B": {
"contextWindow": 65536,
"pricingPerMTok": {
"input": 0.54,
"output": 1.335,
"cachedInput": 0.108
},
"vision": false,
"status": "preview",
"description": "Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.6-35B-A3B: Context 64K, Size 35B, Active 3B, Arch MoE, Type \"Hybrid + Vision\", Tinker ID Qwen/Qwen3.6-35B-A3B, Prefill $0.54 ($0.108 cached), Sample $1.335 per million tokens. The page's Model Types section says Hybrid models \"Run in both thinking and non-thinking modes.\" It says Vision models are \"Vision-language models that accept images alongside text.\" The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under \"Recommended replacement\" for Qwen3.5-35B-A3B and Qwen3-30B-A3B. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"Qwen/Qwen3.5-397B-A17B": {
"contextWindow": 65536,
"pricingPerMTok": {
"input": 3.0,
"output": 7.5,
"cachedInput": 0.6
},
"vision": false,
"status": "preview",
"description": "Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.5-397B-A17B: Context 64K, Size 397B, Active 17B, Arch MoE, Type \"Hybrid + Vision\", Tinker ID Qwen/Qwen3.5-397B-A17B, Prefill $3.00 ($0.60 cached), Sample $7.50 per million tokens. The page's Model Types section says Hybrid models \"Run in both thinking and non-thinking modes.\" It says Vision models are \"Vision-language models that accept images alongside text.\" The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under \"Recommended replacement\" for Qwen3-235B-A22B-Instruct-2507 and Qwen3-VL-235B-A22B-Instruct. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"Qwen/Qwen3.5-9B": {
"contextWindow": 65536,
"pricingPerMTok": {
"input": 0.66,
"output": 1.995,
"cachedInput": 0.132
},
"vision": false,
"status": "preview",
"description": "Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.5-9B: Context 64K, Size 9B, Active 9B, Arch Dense, Type \"Hybrid + Vision\", Tinker ID Qwen/Qwen3.5-9B, Prefill $0.66 ($0.132 cached), Sample $1.995 per million tokens. The page's Model Types section says Hybrid models \"Run in both thinking and non-thinking modes.\" It says Vision models are \"Vision-language models that accept images alongside text.\" The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under \"Recommended replacement\" for Llama-3.1-8B-Instruct. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"Qwen/Qwen3.5-4B": {
"contextWindow": 65536,
"pricingPerMTok": {
"input": 0.33,
"output": 1.005,
"cachedInput": 0.066
},
"vision": false,
"status": "preview",
"description": "Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3.5-4B: Context 64K, Size 4B, Active 4B, Arch Dense, Type \"Hybrid + Vision\", Tinker ID Qwen/Qwen3.5-4B, Prefill $0.33 ($0.066 cached), Sample $1.005 per million tokens. The page's Model Types section says Hybrid models \"Run in both thinking and non-thinking modes.\" It says Vision models are \"Vision-language models that accept images alongside text.\" The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists it under \"Recommended replacement\" for Qwen3-4B-Instruct-2507. contextWindow is the Context label read with K = 1024. vision is false, meaning image input through /chat/completions is not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"Qwen/Qwen3-8B": {
"contextWindow": 32768,
"pricingPerMTok": {
"input": 0.195,
"output": 0.6,
"cachedInput": 0.039
},
"vision": false,
"status": "preview",
"description": "Fallback. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Qwen3-8B: Context 32K, Size 8B, Active 8B, Arch Dense, Type \"Hybrid\", Tinker ID Qwen/Qwen3-8B, Prefill $0.195 ($0.039 cached), Sample $0.60 per million tokens. The page's Model Types section says Hybrid models \"Run in both thinking and non-thinking modes.\" The Anthropic-Compatible API page (https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/anthropic/), which documents a separate endpoint, says \"another base model name (for example Qwen/Qwen3-8B)\". contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"openai/gpt-oss-120b": {
"contextWindow": 32768,
"pricingPerMTok": {
"input": 0.33,
"output": 0.84,
"cachedInput": 0.066
},
"vision": false,
"status": "preview",
"description": "Fallback. Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row GPT-OSS-120B: Context 32K, Size 117B, Active 5B, Arch MoE, Type \"Reasoning\", Tinker ID openai/gpt-oss-120b, Prefill $0.33 ($0.066 cached), Sample $0.84 per million tokens. The page's Model Types section says Reasoning models \"Always produce chain-of-thought before their answer.\" contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"openai/gpt-oss-20b": {
"contextWindow": 32768,
"pricingPerMTok": {
"input": 0.18,
"output": 0.45,
"cachedInput": 0.036
},
"vision": false,
"status": "preview",
"description": "Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row GPT-OSS-20B: Context 32K, Size 21B, Active 3.6B, Arch MoE, Type \"Reasoning\", Tinker ID openai/gpt-oss-20b, Prefill $0.18 ($0.036 cached), Sample $0.45 per million tokens. The page's Model Types section says Reasoning models \"Always produce chain-of-thought before their answer.\" contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"deepseek-ai/DeepSeek-V3.1": {
"contextWindow": 32768,
"pricingPerMTok": {
"input": 1.695,
"output": 4.215,
"cachedInput": 0.339
},
"vision": false,
"status": "preview",
"description": "Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row DeepSeek-V3.1: Context 32K, Size 671B, Active 37B, Arch MoE, Type \"Hybrid\", Tinker ID deepseek-ai/DeepSeek-V3.1, Prefill $1.695 ($0.339 cached), Sample $4.215 per million tokens. The page's Model Types section says Hybrid models \"Run in both thinking and non-thinking modes.\" contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"zai-org/GLM-5.3:peft:262144": {
"contextWindow": 262144,
"pricingPerMTok": {
"input": 4.86,
"output": 12.15,
"cachedInput": 0.972
},
"vision": false,
"status": "preview",
"description": "Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row GLM-5.3 (256K): Context 256K, Size 753B, Active 40B, Arch MoE, Type \"Reasoning\", Tinker ID zai-org/GLM-5.3:peft:262144, Prefill $4.86 ($0.972 cached), Sample $12.15 per million tokens. The page's Model Types section says Reasoning models \"Always produce chain-of-thought before their answer.\" contextWindow 262144 matches the 256K label and the :peft:262144 suffix in the id. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
},
"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16": {
"contextWindow": 65536,
"pricingPerMTok": {
"input": 0.57,
"output": 1.44,
"cachedInput": 0.114
},
"vision": false,
"status": "preview",
"description": "Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/, retrieved 2026-09-29), Training table row Nemotron-3-Super-120B-A12B: Context 64K, Size 120B, Active 12B, Arch MoE, Type \"Hybrid\", Tinker ID nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16, Prefill $0.57 ($0.114 cached), Sample $1.44 per million tokens. The row carries the note \"Limited-time 50% discount\"; the page shows Prefill $1.14 and Sample $2.88 struck through, and pricingPerMTok holds the current figures. The page's Model Types section says Hybrid models \"Run in both thinking and non-thinking modes.\" The Model Deprecations page (https://tinker-docs.thinkingmachines.ai/tinker/model-deprecations/) lists Nemotron-3-Super-120B-A12B among the \"Recommended replacement\" entries for Llama-3.3-70B-Instruct. contextWindow is the Context label read with K = 1024. vision is false, meaning not declared by this entry. status preview follows the OpenAI-compatible page title \"OpenAI API Compatible Inference (in beta)\"; the schema requires a value and it is not a per-model vendor statement."
}
},
"topModels": [
"moonshotai/Kimi-K2.6",
"Qwen/Qwen3.8-27B",
"Qwen/Qwen3.6-35B-A3B",
"Qwen/Qwen3.5-397B-A17B",
"Qwen/Qwen3.5-9B",
"Qwen/Qwen3.5-4B",
"Qwen/Qwen3-8B",
"openai/gpt-oss-120b",
"openai/gpt-oss-20b",
"deepseek-ai/DeepSeek-V3.1",
"zai-org/GLM-5.3:peft:262144",
"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16"
]
},
"capabilities": {
"text": true,
"streaming": true,
"tools": false,
"toolsWithStreaming": false,
"structuredOutput": false,
"structuredOutputWithTools": false,
"embeddings": false,
"thinking": true
},
"errorRules": [
{
"status": 401,
"class": "authentication",
"message": "Thinking Machines answered HTTP 401. Check {apiKeyEnvVar}. Get a key at {setupUrl}"
}
],
"setup": {
"url": "https://tinker.thinkingmachines.ai/keys",
"apiKeyFormat": null,
"billingPolicy": "no-free-tier",
"instructions": [
"1. Visit: https://tinker.thinkingmachines.ai/keys — the Quickstart (https://tinker-docs.thinkingmachines.ai/tinker/quickstart/) says \"Or create an API key in the Tinker Console and set it as the TINKER_API_KEY environment variable.\"; an unauthenticated GET of that URL redirects to a page titled \"Sign in\" (sign-in was not attempted while building this entry)",
"2. Authentication as the vendor states it: the OpenAI-compatible page (https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/openai/) says \"Authenticate with your Tinker API key, by passing the same key used for Tinker as the API key to the OpenAI client.\"; its code example reads the key from TINKER_API_KEY",
"3. Billing as the vendor states it: the Quickstart (https://tinker-docs.thinkingmachines.ai/tinker/quickstart/) says \"Set up payment info in Billing, and see Models & Pricing for current training and sampling rates.\" (the Billing link goes to https://tinker.thinkingmachines.ai/billing/), and the Models & Pricing page (https://tinker-docs.thinkingmachines.ai/tinker/models/) says \"All prices are per million tokens.\"",
"4. Set {apiKeyEnvVar} in your .env file (the vendor's examples read TINKER_API_KEY, which NeuroLink accepts as a fallback)"
],
"description": "Docs-verified only: the vendor's GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 401 with the JSON body {\"detail\":\"X-Api-Key token is empty\"}), so the twelve model ids come from the Training table on https://tinker-docs.thinkingmachines.ai/tinker/models/ (retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1: the OpenAI-compatible page (https://tinker-docs.thinkingmachines.ai/tinker/compatible-apis/openai/, titled \"OpenAI API Compatible Inference (in beta)\") says \"The new interface exposes an OpenAI-compatible HTTP API.\", gives that base URL, says \"We support both /completions and /chat/completions endpoints.\" and says \"Currently, OpenAI-compatible inference is meant for testing and internal use with low internal traffic, rather than large, high-throughput, user-facing deployments.\" The same page says \"Use a Tinker sampler weight path as the model name.\" and shows a sampler weight path that begins with tinker://. moonshotai/Kimi-K2.6 is the catalog id that the OpenCode tutorial (https://tinker-docs.thinkingmachines.ai/tutorials/deployment/opencode/) shows as a models entry under the \"Using a base model (no fine-tuning)\" heading; the other eleven catalog ids are Tinker IDs from the Models & Pricing Training table. A tinker:// path passed as the model is an id outside the catalog. Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 (content-type application/json) with the body {\"detail\":\"X-Api-Key token is empty\"}; /chat/completions answered HTTP 405 with header allow: POST and the body {\"detail\":\"Method Not Allowed\"}; the base URL itself answered HTTP 404 with the body {\"detail\":\"Not Found\"}. No POST request was sent. errorRules holds one rule, for the 401 status observed on /models. pricingPerMTok input is the Prefill figure, output is the Sample figure and cachedInput is the cached Prefill figure of each Training-table row; the page's Pricing Terms define Prefill as \"Processing input/prompt tokens when sampling\" and Sample as \"Generating output tokens\". models.defaultContextWindow (32768) is the figure in the OpenCode tutorial's Config fields table (https://tinker-docs.thinkingmachines.ai/tutorials/deployment/opencode/): \"Max input tokens (32768 for most Tinker models)\"; models.defaultMaxOutputTokens (8192) is the \"output\" figure in both example configs of that tutorial, whose Config fields table describes limit.output as \"Max output tokens\"; the catalog rows do not set maxOutputTokens, so the default applies to them. capabilities.text is true because the page documents /chat/completions; capabilities.streaming is true because the page describes streaming on /chat/completions (\"In streaming mode, reasoning_content and content arrive on separate SSE events\"); capabilities.thinking is true because the page documents the separate_reasoning flag and the reasoning_effort parameter on /chat/completions (\"Not all models support this parameter.\"). capabilities.tools, toolsWithStreaming, structuredOutput and structuredOutputWithTools are false, meaning not declared by this entry: with tools false the provider's supportsTools() answers false and no tools array is sent, and no POST request exercising these was sent. capabilities.embeddings is false, not declared. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. apiKeyFormat is null so NeuroLink's key-format check is not applied. Verification level: docs-verified, not yet live-verified."
},
"evidence": {
"rosterVerified": {
"date": "2026-09-29",
"status": 401,
"method": "docs-only — unauthenticated GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/models answers 401 without a key, so model ids are taken from https://tinker-docs.thinkingmachines.ai/tinker/models/ (retrieved 2026-09-29); roster not verified"
},
"authProbe": {
"date": "2026-09-29",
"status": 401,
"method": "unauthenticated GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/models with no credentials — HTTP 401, content-type application/json, JSON body {\"detail\":\"X-Api-Key token is empty\"}; the body has no code field, so no code is recorded; the same day an unauthenticated GET https://tinker.thinkingmachines.dev/services/tinker-prod/oai/api/v1/chat/completions answered HTTP 405 with header allow: POST and JSON body {\"detail\":\"Method Not Allowed\"}; credential-free, no key used, no POST request sent"
},
"billingProbe": {
"date": "2026-09-29",
"method": "public page https://tinker-docs.thinkingmachines.ai/tinker/quickstart/ — Billing section: \"Set up payment info in Billing, and see Models & Pricing for current training and sampling rates.\"; credential-free, no signup performed"
},
"liveMatrix": null,
"addedInPR": "https://github.com/juspay/neurolink/pull/1862"
}
}