@juspay/neurolink 12.41.9 → 12.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/README.md +2 -2
  3. package/dist/browser/neurolink.min.js +411 -411
  4. package/dist/constants/enums.d.ts +195 -0
  5. package/dist/constants/enums.js +214 -0
  6. package/dist/providers/catalog/arcee.json +212 -0
  7. package/dist/providers/catalog/baidu-qianfan.json +170 -0
  8. package/dist/providers/catalog/byteplus-modelark.json +246 -0
  9. package/dist/providers/catalog/bytez.json +87 -0
  10. package/dist/providers/catalog/dashscope.json +165 -0
  11. package/dist/providers/catalog/gradientai.json +238 -0
  12. package/dist/providers/catalog/hetzner-inference.json +83 -0
  13. package/dist/providers/catalog/inceptron.json +145 -0
  14. package/dist/providers/catalog/index.generated.d.ts +1 -1
  15. package/dist/providers/catalog/index.generated.js +57 -0
  16. package/dist/providers/catalog/lemonfox-ai.json +78 -0
  17. package/dist/providers/catalog/loader.js +3 -0
  18. package/dist/providers/catalog/meta-model-api.json +150 -0
  19. package/dist/providers/catalog/modelscope.json +146 -0
  20. package/dist/providers/catalog/parasail.json +251 -0
  21. package/dist/providers/catalog/poolside.json +79 -0
  22. package/dist/providers/catalog/provider-catalog.schema.json +5 -0
  23. package/dist/providers/catalog/reka.json +112 -0
  24. package/dist/providers/catalog/sakana-ai.json +162 -0
  25. package/dist/providers/catalog/schema.d.ts +1 -0
  26. package/dist/providers/catalog/schema.js +1 -0
  27. package/dist/providers/catalog/stackit.json +126 -0
  28. package/dist/providers/catalog/telnyx.json +181 -0
  29. package/dist/providers/catalog/thinking-machines.json +212 -0
  30. package/dist/providers/catalog/vispark.json +109 -0
  31. package/dist/providers/configuredOpenAICompat.d.ts +9 -0
  32. package/dist/providers/configuredOpenAICompat.js +14 -0
  33. package/dist/providers/openaiChatCompletionsBase.js +12 -3
  34. package/dist/types/providerCatalog.d.ts +9 -0
  35. package/dist/types/providerCatalog.generated.d.ts +2 -2
  36. package/dist/types/providers.d.ts +80 -0
  37. package/docs-site/static/search-index.json +211 -2
  38. package/package.json +2 -1
@@ -0,0 +1,150 @@
1
+ {
2
+ "$schema": "./provider-catalog.schema.json",
3
+ "id": "meta-model-api",
4
+ "displayName": "Meta Model API",
5
+ "aliases": [],
6
+ "tier": 2,
7
+ "wire": {
8
+ "baseURL": "https://api.meta.ai/v1"
9
+ },
10
+ "models": {
11
+ "default": "muse-spark-1.3",
12
+ "fallbacks": ["muse-spark-1.2", "muse-spark-1.1"],
13
+ "defaultContextWindow": 1048576,
14
+ "defaultMaxOutputTokens": 16384,
15
+ "catalog": {
16
+ "muse-spark-1.3": {
17
+ "contextWindow": 1048576,
18
+ "maxOutputTokens": 131072,
19
+ "pricingPerMTok": {
20
+ "input": 1.25,
21
+ "output": 4.25,
22
+ "cachedInput": 0.15
23
+ },
24
+ "vision": true,
25
+ "status": "production",
26
+ "description": "NeuroLink default. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): \"muse-spark-1.3 is the default model in the code examples throughout these docs.\" The page describes it as \"the latest version, tuned for agentic workflows (multi-step tool, browser, and long-horizon tasks) with improved coding over 1.2.\" and says \"Recommended for new work.\" Standard tier; context window 1,048,576 tokens (\"Available Muse Spark models\" table on the Models page). Price per 1M tokens on https://dev.meta.ai/docs/pricing-rate-limits: input $1.25, output $4.25, cached input $0.15. maxOutputTokens 131072 is the output figure in the Coding agents guide (https://dev.meta.ai/docs/coding-agents) entry for this model id: \"Limits: context = 1048576, output = 131072\". vision is true: the \"Available Muse Spark models\" table on the Models page lists image among its input modalities, and the Image understanding page (https://dev.meta.ai/docs/image-understanding) says \"image understanding is fully supported\" on Chat Completions."
27
+ },
28
+ "muse-spark-1.2": {
29
+ "contextWindow": 1048576,
30
+ "pricingPerMTok": {
31
+ "input": 1.25,
32
+ "output": 4.25,
33
+ "cachedInput": 0.15
34
+ },
35
+ "vision": true,
36
+ "status": "production",
37
+ "description": "NeuroLink fallback. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): \"the previous version.\" The home page (https://dev.meta.ai/) card for Muse Spark 1.2 says \"A coding-optimized model purpose-built for agentic workflows.\" Standard tier; context window 1,048,576 tokens (\"Available Muse Spark models\" table on the Models page). Price per 1M tokens on https://dev.meta.ai/docs/pricing-rate-limits: input $1.25, output $4.25, cached input $0.15. vision is true: the \"Available Muse Spark models\" table on the Models page lists image among its input modalities."
38
+ },
39
+ "muse-spark-1.1": {
40
+ "contextWindow": 1048576,
41
+ "pricingPerMTok": {
42
+ "input": 1.25,
43
+ "output": 4.25,
44
+ "cachedInput": 0.15
45
+ },
46
+ "vision": true,
47
+ "status": "production",
48
+ "description": "NeuroLink fallback. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): \"the original version.\" The home page (https://dev.meta.ai/) card for Muse Spark 1.1 says \"Built for agentic workflows, coding, computer use & multimodal perception.\" Standard tier; context window 1,048,576 tokens (\"Available Muse Spark models\" table on the Models page). Price per 1M tokens on https://dev.meta.ai/docs/pricing-rate-limits: input $1.25, output $4.25, cached input $0.15. vision is true: the \"Available Muse Spark models\" table on the Models page lists image among its input modalities."
49
+ },
50
+ "muse-spark-1.3-contributor": {
51
+ "contextWindow": 1048576,
52
+ "pricingPerMTok": {
53
+ "input": 0.1,
54
+ "output": 0.2,
55
+ "cachedInput": 0.002
56
+ },
57
+ "vision": true,
58
+ "status": "production",
59
+ "description": "Contributor tier. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): the Contributor variant \"trades a lower price for permission to train on your prompts and completions\". The Pricing page (https://dev.meta.ai/docs/pricing-rate-limits) says \"Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models.\" Context window 1,048,576 tokens (\"Available Muse Spark models\" table on the Models page). Price per 1M tokens on the Pricing page: input $0.10, output $0.20, cached input $0.002. vision is true: the \"Available Muse Spark models\" table on the Models page lists image among its input modalities. Not in models.fallbacks."
60
+ },
61
+ "muse-spark-1.2-contributor": {
62
+ "contextWindow": 1048576,
63
+ "pricingPerMTok": {
64
+ "input": 0.1,
65
+ "output": 0.2,
66
+ "cachedInput": 0.002
67
+ },
68
+ "vision": true,
69
+ "status": "production",
70
+ "description": "Contributor tier. Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29): the Contributor variant \"trades a lower price for permission to train on your prompts and completions\". The Pricing page (https://dev.meta.ai/docs/pricing-rate-limits) says \"Heavily discounted token pricing in exchange for permission to use your prompts and completions to train future Meta models.\" Context window 1,048,576 tokens (\"Available Muse Spark models\" table on the Models page). Price per 1M tokens on the Pricing page: input $0.10, output $0.20, cached input $0.002. vision is true: the \"Available Muse Spark models\" table on the Models page lists image among its input modalities. Not in models.fallbacks."
71
+ }
72
+ },
73
+ "topModels": [
74
+ "muse-spark-1.3",
75
+ "muse-spark-1.3-contributor",
76
+ "muse-spark-1.2",
77
+ "muse-spark-1.2-contributor",
78
+ "muse-spark-1.1"
79
+ ]
80
+ },
81
+ "capabilities": {
82
+ "text": true,
83
+ "streaming": true,
84
+ "tools": true,
85
+ "toolsWithStreaming": true,
86
+ "structuredOutput": true,
87
+ "structuredOutputWithTools": false,
88
+ "embeddings": false,
89
+ "thinking": false
90
+ },
91
+ "errorRules": [
92
+ {
93
+ "status": 401,
94
+ "class": "authentication",
95
+ "message": "Meta Model API rejected the request's authentication (HTTP 401; an unauthenticated GET of /models returned error.code \"invalid_api_key\" and error.type \"authentication_error\" on 2026-09-29, and the Error handling page lists 401 Unauthorized: \"The API key was missing, invalid, or revoked.\"). Check {apiKeyEnvVar}. Create a key: {setupUrl}"
96
+ },
97
+ {
98
+ "status": 402,
99
+ "class": "provider",
100
+ "message": "Meta Model API returned HTTP 402 (the Error handling page lists 402 Payment Required: \"The request cannot be completed due to a billing issue.\", with an example body whose error.code is \"billing_not_configured\")."
101
+ },
102
+ {
103
+ "status": 403,
104
+ "class": "authentication",
105
+ "message": "Meta Model API returned HTTP 403 (the Error handling page lists 403 Forbidden: \"The API key does not have permission to access the requested resource.\")."
106
+ },
107
+ {
108
+ "status": 429,
109
+ "class": "rate-limit",
110
+ "message": "Meta Model API returned HTTP 429 (the Error handling page lists 429 Too Many Requests: \"Your team has exceeded the rate limit.\")."
111
+ },
112
+ {
113
+ "pattern": "model_not_found",
114
+ "class": "invalid-model",
115
+ "message": "Meta Model API reported model {model} as not found (the Error handling page says \"an unknown model returns model_not_found\")."
116
+ }
117
+ ],
118
+ "setup": {
119
+ "url": "https://dev.meta.ai/",
120
+ "apiKeyFormat": "^LLM\\|.+\\|.+$",
121
+ "billingPolicy": "no-free-tier",
122
+ "instructions": [
123
+ "1. Visit: https://dev.meta.ai/ — the page carries a \"Start building\" button whose link target is /api/auth/login",
124
+ "2. Create an API key: the Authentication page (https://dev.meta.ai/docs/authentication) lists the steps \"Log in and open the API keys tab.\", \"Click Create API key, give it a descriptive name, and click Create.\" and \"Copy the key right away. You only see it once.\"",
125
+ "3. Authentication is a Bearer token: the Authentication page says \"Pass the key as a Bearer token in the Authorization header:\", and the Error handling page (https://dev.meta.ai/docs/error-handling) lists \"Malformed API key (not in LLM|{id}|{secret} format)\" as a cause of HTTP 401",
126
+ "4. Billing as the vendor states it: the Pricing page (https://dev.meta.ai/docs/pricing-rate-limits) says \"You pay only for what you use.\" and the Authentication and billing page (https://dev.meta.ai/docs/muse-code/auth) says \"Meta Model API billing is usage-based: you're billed for the tokens your requests consume.\"",
127
+ "5. Set {apiKeyEnvVar} in your .env file (the vendor's examples read MODEL_API_KEY, which NeuroLink does not)"
128
+ ],
129
+ "description": "Docs-verified only: the vendor's GET https://api.meta.ai/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 401), so the five model ids come from the Models page (https://dev.meta.ai/docs/models, retrieved 2026-09-29) and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.meta.ai/v1: the Chat Completions page (https://dev.meta.ai/docs/protocols/chat-completions) says \"The endpoint is OpenAI-compatible\" and \"The response matches the OpenAI chat completions shape.\", and the Overview (https://dev.meta.ai/docs/overview) says \"Model API is drop-in compatible with the OpenAI SDK, the Anthropic SDK, and OpenAI-compatible agent CLIs.\" The catalog holds the five model ids of the \"Available Muse Spark models\" table on the Models page (Standard tier: muse-spark-1.3, muse-spark-1.2, muse-spark-1.1; Contributor tier: muse-spark-1.3-contributor, muse-spark-1.2-contributor); the Chat Completions page says \"Chat Completions serves the Muse Spark text models.\" The Models page lists muse-image-1.0, muse-voice-transcribe-1.0 and sam-3.1 in separate per-family tables; they are not in the catalog. models.fallbacks lists the Standard-tier ids; the Contributor-tier ids are in models.catalog and models.topModels. apiKeyFormat follows the Error handling page's \"LLM|{id}|{secret} format\". models.defaultContextWindow (1048576) is the context window the Overview and Models pages state for the Muse Spark models; models.defaultMaxOutputTokens (16384) is a NeuroLink placeholder the vendor does not publish. The status field of the five models holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy no-free-tier is a schema placeholder (the schema has no unknown value), not a vendor statement. Verification level: docs-verified, not yet live-verified."
130
+ },
131
+ "evidence": {
132
+ "rosterVerified": {
133
+ "date": "2026-09-29",
134
+ "status": 401,
135
+ "method": "docs-only — unauthenticated GET https://api.meta.ai/v1/models answers 401 without a key, so model ids are taken from https://dev.meta.ai/docs/models (retrieved 2026-09-29); roster not verified"
136
+ },
137
+ "authProbe": {
138
+ "date": "2026-09-29",
139
+ "status": 401,
140
+ "code": "invalid_api_key",
141
+ "method": "unauthenticated GET https://api.meta.ai/v1/models — HTTP 401, content-type application/json, JSON body {\"error\":{\"code\":\"invalid_api_key\",\"message\":\"Unauthorized\",\"param\":null,\"type\":\"authentication_error\"}}; the same day an unauthenticated GET https://api.meta.ai/v1/chat/completions answered HTTP 401 with the same body and the header allow: POST; credential-free, no key used"
142
+ },
143
+ "billingProbe": {
144
+ "date": "2026-09-29",
145
+ "method": "public pages https://dev.meta.ai/docs/pricing-rate-limits (\"You pay only for what you use.\"; in its Muse Voice Transcribe paragraph: \"ZDR is priced at parity with Standard, and platform free-tier credits apply.\") and https://dev.meta.ai/docs/muse-code/auth (\"Meta Model API billing is usage-based: you're billed for the tokens your requests consume.\"); credential-free, no signup performed"
146
+ },
147
+ "liveMatrix": null,
148
+ "addedInPR": "https://github.com/juspay/neurolink/pull/1862"
149
+ }
150
+ }
@@ -0,0 +1,146 @@
1
+ {
2
+ "$schema": "./provider-catalog.schema.json",
3
+ "id": "modelscope",
4
+ "displayName": "ModelScope",
5
+ "aliases": [],
6
+ "tier": 2,
7
+ "wire": {
8
+ "baseURL": "https://api-inference.modelscope.cn/v1"
9
+ },
10
+ "models": {
11
+ "default": "Qwen/Qwen3.5-35B-A3B",
12
+ "fallbacks": [
13
+ "Qwen/Qwen3.5-27B",
14
+ "deepseek-ai/DeepSeek-V4-Pro-0813",
15
+ "ZhipuAI/GLM-5.2"
16
+ ],
17
+ "fallbackModelName": "Qwen/Qwen3.5-27B",
18
+ "defaultContextWindow": 32768,
19
+ "defaultMaxOutputTokens": 4096,
20
+ "catalog": {
21
+ "Qwen/Qwen3.5-35B-A3B": {
22
+ "vision": true,
23
+ "status": "production",
24
+ "description": "NeuroLink default. The model id used in the intro page's OpenAI-compatible chat example (client.chat.completions.create with stream=True), in its Anthropic-compatible streaming and non-streaming examples, and in its Vision Models example, which sends a content part of type image_url (https://modelscope.cn/docs/model-service/API-Inference/intro); vision is true because that example calls this id with an image_url. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
25
+ },
26
+ "Qwen/Qwen3.5-27B": {
27
+ "vision": true,
28
+ "status": "production",
29
+ "description": "Fallback. Named in the Responses API example of the Chinese-language intro page (client.responses.create with model=\"Qwen/Qwen3.5-27B\", read from https://resouces.modelscope.cn/document/docdata/2026-9-28_15-49-CN/dist/model-service/API-Inference/intro/intro_CN.md) and in the examples of the LangChain integration page (https://modelscope.cn/docs/ecosystem-integrations/api-usage/langchain, Chinese text read from the docs site's document file). The English intro page (https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md) says \"integrated models like Qwen3.5 that support vision\". ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.5-27B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
30
+ },
31
+ "deepseek-ai/DeepSeek-V4-Pro-0813": {
32
+ "vision": false,
33
+ "status": "production",
34
+ "description": "Fallback. ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/deepseek-ai/DeepSeek-V4-Pro-0813, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
35
+ },
36
+ "ZhipuAI/GLM-5.2": {
37
+ "vision": false,
38
+ "status": "production",
39
+ "description": "Fallback. ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/ZhipuAI/GLM-5.2, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
40
+ },
41
+ "Qwen/Qwen3.5-397B-A17B": {
42
+ "vision": true,
43
+ "status": "production",
44
+ "description": "The English intro page (https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md) says \"integrated models like Qwen3.5 that support vision\". ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.5-397B-A17B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
45
+ },
46
+ "Qwen/Qwen3.5-122B-A10B": {
47
+ "vision": true,
48
+ "status": "production",
49
+ "description": "The English intro page (https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md) says \"integrated models like Qwen3.5 that support vision\". ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.5-122B-A10B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
50
+ },
51
+ "deepseek-ai/DeepSeek-V4-Flash-0731": {
52
+ "vision": false,
53
+ "status": "production",
54
+ "description": "ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/deepseek-ai/DeepSeek-V4-Flash-0731, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
55
+ },
56
+ "MiniMax/MiniMax-M3": {
57
+ "vision": true,
58
+ "status": "production",
59
+ "description": "ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/MiniMax/MiniMax-M3, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
60
+ },
61
+ "stepfun-ai/Step-3.7-Flash": {
62
+ "vision": true,
63
+ "status": "production",
64
+ "description": "ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/stepfun-ai/Step-3.7-Flash, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
65
+ },
66
+ "Qwen/Qwen3.8-27B": {
67
+ "vision": true,
68
+ "status": "production",
69
+ "description": "ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.8-27B, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
70
+ },
71
+ "mistralai/Mistral-Large-Instruct-2407": {
72
+ "vision": false,
73
+ "status": "production",
74
+ "description": "ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/mistralai/Mistral-Large-Instruct-2407, 2026-09-29) lists its task as text-generation. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
75
+ },
76
+ "Qwen/Qwen3.8-Flash-Next": {
77
+ "vision": true,
78
+ "status": "production",
79
+ "description": "ModelScope's public model API (unauthenticated GET https://www.modelscope.cn/api/v1/models/Qwen/Qwen3.8-Flash-Next, 2026-09-29) lists its task as image-text-to-text. The vision field is true on that basis. Listed on the unauthenticated GET https://api-inference.modelscope.cn/v1/models (2026-09-29, 35 models) roster."
80
+ }
81
+ },
82
+ "topModels": [
83
+ "Qwen/Qwen3.5-35B-A3B",
84
+ "Qwen/Qwen3.5-27B",
85
+ "deepseek-ai/DeepSeek-V4-Pro-0813",
86
+ "ZhipuAI/GLM-5.2",
87
+ "Qwen/Qwen3.5-397B-A17B",
88
+ "Qwen/Qwen3.5-122B-A10B",
89
+ "deepseek-ai/DeepSeek-V4-Flash-0731",
90
+ "MiniMax/MiniMax-M3",
91
+ "stepfun-ai/Step-3.7-Flash",
92
+ "Qwen/Qwen3.8-27B",
93
+ "mistralai/Mistral-Large-Instruct-2407",
94
+ "Qwen/Qwen3.8-Flash-Next"
95
+ ],
96
+ "visionModel": "Qwen/Qwen3.5-35B-A3B"
97
+ },
98
+ "capabilities": {
99
+ "text": true,
100
+ "streaming": true,
101
+ "tools": false,
102
+ "toolsWithStreaming": false,
103
+ "structuredOutput": false,
104
+ "structuredOutputWithTools": false,
105
+ "embeddings": false,
106
+ "thinking": true
107
+ },
108
+ "errorRules": [
109
+ {
110
+ "status": 401,
111
+ "class": "authentication",
112
+ "message": "Invalid or missing ModelScope access token (HTTP 401). Check {apiKeyEnvVar}. Get one at {setupUrl}"
113
+ }
114
+ ],
115
+ "setup": {
116
+ "url": "https://modelscope.cn/my/myaccesstoken",
117
+ "apiKeyFormat": null,
118
+ "billingPolicy": "free-tier",
119
+ "instructions": [
120
+ "1. Visit: https://modelscope.cn/home and register or log in with the \"Log in/Register\" button in the top right corner (https://modelscope.cn/docs/accounts/registration)",
121
+ "2. Bind an Alibaba Cloud account and complete real-name verification: \"After account registration, you must bind your Alibaba Cloud account and complete real-name verification before using API-Inference.\" (https://modelscope.cn/docs/model-service/API-Inference/intro; binding steps: https://modelscope.cn/docs/accounts/aliyun-binding-and-authorization)",
122
+ "3. Create an access token at https://modelscope.cn/my/myaccesstoken; the token guide (https://modelscope.cn/docs/accounts/token) has you specify a validity period, \"Long-term use\" or \"Short-term use\"",
123
+ "4. Free for registered users: \"API-Inference is provided free of charge to registered ModelScope users.\" (intro page); the limits page (https://modelscope.cn/docs/model-service/API-Inference/limits) states that API Inference \"implements certain limits on usage quotas and concurrency\"",
124
+ "5. Set {apiKeyEnvVar} in your .env file"
125
+ ],
126
+ "description": "OpenAI-compatible endpoint at https://api-inference.modelscope.cn/v1. The intro page (https://modelscope.cn/docs/model-service/API-Inference/intro) says \"ModelScope's API-Inference currently provides OpenAI API-compatible interfaces for large language models.\" and its example sets base_url=\"https://api-inference.modelscope.cn/v1/\". The docs text was read on 2026-09-29 from the raw document files the docs site loads (English build 2026-9-28_15-50-EN, for example https://resouces.modelscope.cn/document/docdata/2026-9-28_15-50-EN/dist/model-service/API-Inference/intro/intro_EN.md; Chinese build 2026-9-28_15-49-CN where noted), because the rendered pages at modelscope.cn are a JavaScript shell. This entry is docs- and roster-verified, not yet live-verified: the model ids come from an unauthenticated GET of https://api-inference.modelscope.cn/v1/models (HTTP 200, 35 models, 2026-09-29) and no API key was used. Each model's task was read on 2026-09-29 from an unauthenticated GET of https://www.modelscope.cn/api/v1/models/<model id> (the Data.Tasks field). capabilities.thinking is true: ModelScope's Codewhale integration page (https://modelscope.cn/docs/ecosystem-integrations/api-usage/codewhale, English build file ecosystem-integrations/api-usage/codewhale/codewhale_EN.md) says \"Qwen and GLM series models support `reasoning_content` streaming output\". models.defaultContextWindow (32,768) and models.defaultMaxOutputTokens (4,096) are placeholders. errorRules holds one 401 rule taken from an unauthenticated GET of https://api-inference.modelscope.cn/v1/tasks/abc, which answered HTTP 401 with the JSON body {\"errors\":{\"message\":\"Authentication failed, please make sure that a valid ModelScope token is supplied.\"},\"request_id\":\"...\"}."
127
+ },
128
+ "evidence": {
129
+ "rosterVerified": {
130
+ "date": "2026-09-29",
131
+ "status": 200,
132
+ "method": "unauthenticated GET https://api-inference.modelscope.cn/v1/models — 35 models; credential-free, no key used"
133
+ },
134
+ "authProbe": {
135
+ "date": "2026-09-29",
136
+ "status": 401,
137
+ "method": "unauthenticated GET https://api-inference.modelscope.cn/v1/tasks/abc (the AIGC task-polling route used in the intro page's example, not chat/completions) — JSON body {\"errors\":{\"message\":\"Authentication failed, please make sure that a valid ModelScope token is supplied.\"},\"request_id\":\"...\"}; an unauthenticated GET of https://api-inference.modelscope.cn/v1/chat/completions answered HTTP 404 with the plain-text body \"404 page not found\"; credential-free, no key used"
138
+ },
139
+ "billingProbe": {
140
+ "date": "2026-09-29",
141
+ "method": "public docs pages https://modelscope.cn/docs/model-service/API-Inference/intro (\"API-Inference is provided free of charge to registered ModelScope users.\") and https://modelscope.cn/docs/model-service/API-Inference/limits (\"free of charge\"), English text read from the docs site's document files; credential-free"
142
+ },
143
+ "liveMatrix": null,
144
+ "addedInPR": "https://github.com/juspay/neurolink/pull/1862"
145
+ }
146
+ }
@@ -0,0 +1,251 @@
1
+ {
2
+ "$schema": "./provider-catalog.schema.json",
3
+ "id": "parasail",
4
+ "displayName": "Parasail",
5
+ "aliases": [],
6
+ "tier": 2,
7
+ "wire": {
8
+ "baseURL": "https://api.parasail.io/v1"
9
+ },
10
+ "models": {
11
+ "default": "parasail-llama-33-70b-fp8",
12
+ "fallbacks": [
13
+ "parasail-llama-4-maverick-instruct-fp8",
14
+ "parasail-gpt-oss-120b",
15
+ "parasail-gpt-oss-20b",
16
+ "parasail-deepseek-v4-flash",
17
+ "parasail-deepseek-v4-pro",
18
+ "parasail-kimi-k3",
19
+ "parasail-glm-52",
20
+ "parasail-qwen3p5-35b-a3b",
21
+ "parasail-qwen25-vl-72b-instruct",
22
+ "parasail-gemma3-27b-it",
23
+ "parasail-minimax-m3"
24
+ ],
25
+ "defaultContextWindow": 128000,
26
+ "defaultMaxOutputTokens": 16384,
27
+ "catalog": {
28
+ "parasail-llama-33-70b-fp8": {
29
+ "contextWindow": 131072,
30
+ "maxOutputTokens": 16384,
31
+ "pricingPerMTok": {
32
+ "input": 0.22,
33
+ "output": 0.5,
34
+ "cachedInput": 0.11
35
+ },
36
+ "vision": false,
37
+ "status": "production",
38
+ "description": "NeuroLink default. Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"Llama 3.3 70B (FP8)\": context window 131,072, max output 16,384, quantization FP8, $0.22 input / $0.50 output / $0.11 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice. Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md): table row with Y under Guided JSON / JSON Schema, Y under Regex and Y under Choice. The Chat Completions guide (https://docs.parasail.io/parasail-docs/guides/chat-completions.md) uses model=\"parasail-llama-33-70b-fp8\" in its example."
39
+ },
40
+ "parasail-llama-4-maverick-instruct-fp8": {
41
+ "contextWindow": 524288,
42
+ "maxOutputTokens": 32768,
43
+ "pricingPerMTok": {
44
+ "input": 0.35,
45
+ "output": 1.0,
46
+ "cachedInput": 0.17
47
+ },
48
+ "vision": false,
49
+ "status": "production",
50
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"Llama 4 Maverick (FP8)\": context window 524,288, max output 32,768, quantization FP8, $0.35 input / $1.00 output / $0.17 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice. Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md): table row with Y under Guided JSON / JSON Schema, Y under Regex and Y under Choice."
51
+ },
52
+ "parasail-gpt-oss-120b": {
53
+ "contextWindow": 131072,
54
+ "maxOutputTokens": 131072,
55
+ "pricingPerMTok": {
56
+ "input": 0.1,
57
+ "output": 0.75,
58
+ "cachedInput": 0.055
59
+ },
60
+ "vision": false,
61
+ "status": "production",
62
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"gpt-oss-120b\": context window 131,072, max output 131,072, quantization FP4, $0.10 input / $0.75 output / $0.055 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice. The Model-specific Notes page (https://docs.parasail.io/parasail-docs/products/overview/model-specific-notes.md) has sections headed \"GPT-OSS reasoning control\" and \"Structured outputs with GPT-OSS\"."
63
+ },
64
+ "parasail-gpt-oss-20b": {
65
+ "contextWindow": 131072,
66
+ "maxOutputTokens": 131072,
67
+ "pricingPerMTok": {
68
+ "input": 0.03,
69
+ "output": 0.15,
70
+ "cachedInput": 0.02
71
+ },
72
+ "vision": false,
73
+ "status": "production",
74
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"gpt-oss-20b\": context window 131,072, max output 131,072, quantization FP4, $0.03 input / $0.15 output / $0.02 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice. The Model-specific Notes page (https://docs.parasail.io/parasail-docs/products/overview/model-specific-notes.md) has sections headed \"GPT-OSS reasoning control\" and \"Structured outputs with GPT-OSS\"."
75
+ },
76
+ "parasail-deepseek-v4-flash": {
77
+ "contextWindow": 1048576,
78
+ "maxOutputTokens": 1048576,
79
+ "pricingPerMTok": {
80
+ "input": 0.14,
81
+ "output": 0.28,
82
+ "cachedInput": 0.07
83
+ },
84
+ "vision": false,
85
+ "status": "production",
86
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"DeepSeek V4 Flash\": context window 1,048,576, max output 1,048,576, quantization FP8, $0.14 input / $0.28 output / $0.07 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice."
87
+ },
88
+ "parasail-deepseek-v4-pro": {
89
+ "contextWindow": 1048576,
90
+ "maxOutputTokens": 1048576,
91
+ "pricingPerMTok": {
92
+ "input": 1.74,
93
+ "output": 3.48,
94
+ "cachedInput": 0.1
95
+ },
96
+ "vision": false,
97
+ "status": "production",
98
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"DeepSeek V4 Pro\": context window 1,048,576, max output 1,048,576, quantization FP8, $1.74 input / $3.48 output / $0.10 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice."
99
+ },
100
+ "parasail-kimi-k3": {
101
+ "contextWindow": 1048576,
102
+ "maxOutputTokens": 1048576,
103
+ "pricingPerMTok": {
104
+ "input": 3.0,
105
+ "output": 15.0,
106
+ "cachedInput": 0.3
107
+ },
108
+ "vision": false,
109
+ "status": "production",
110
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"Kimi K3\": context window 1,048,576, max output 1,048,576, quantization FP4, $3.00 input / $15.00 output / $0.30 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice."
111
+ },
112
+ "parasail-glm-52": {
113
+ "contextWindow": 262144,
114
+ "maxOutputTokens": 262144,
115
+ "pricingPerMTok": {
116
+ "input": 1.4,
117
+ "output": 4.4,
118
+ "cachedInput": 0.26
119
+ },
120
+ "vision": false,
121
+ "status": "production",
122
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"GLM-5.2\": context window 262,144, max output 262,144, quantization FP4, $1.40 input / $4.40 output / $0.26 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice."
123
+ },
124
+ "parasail-qwen3p5-35b-a3b": {
125
+ "contextWindow": 262144,
126
+ "maxOutputTokens": 262144,
127
+ "pricingPerMTok": {
128
+ "input": 0.15,
129
+ "output": 1.0,
130
+ "cachedInput": 0.05
131
+ },
132
+ "vision": false,
133
+ "status": "production",
134
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"Qwen3.5 35B-A3B\": context window 262,144, max output 262,144, quantization FP8, $0.15 input / $1.00 output / $0.05 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice. The Chat Completions example in the Tool/Function Calling guide uses model=\"parasail-qwen3p5-35b-a3b\"."
135
+ },
136
+ "parasail-qwen25-vl-72b-instruct": {
137
+ "contextWindow": 128000,
138
+ "maxOutputTokens": 128000,
139
+ "pricingPerMTok": {
140
+ "input": 0.8,
141
+ "output": 1.0,
142
+ "cachedInput": 0.4
143
+ },
144
+ "vision": true,
145
+ "status": "production",
146
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"Qwen2.5-VL 72B\": context window 128,000, max output 128,000, quantization FP8, $0.80 input / $1.00 output / $0.40 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). The Multi-Modal guide (https://docs.parasail.io/parasail-docs/guides/multi-modal.md) says \"Below is an example using Qwen2.5-VL 72 B model with Parasail's serverless API.\" and sends an image_url content part with model=\"parasail-qwen25-vl-72b-instruct\", hence vision is true. The Tool/Function Calling guide says it \"also emits tool calls, but only reliably with\" tool_choice=\"required\"."
147
+ },
148
+ "parasail-gemma3-27b-it": {
149
+ "contextWindow": 131072,
150
+ "maxOutputTokens": 131072,
151
+ "pricingPerMTok": {
152
+ "input": 0.08,
153
+ "output": 0.45,
154
+ "cachedInput": 0.04
155
+ },
156
+ "vision": false,
157
+ "status": "production",
158
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"Gemma 3 27B\": context window 131,072, max output 131,072, quantization FP8, $0.08 input / $0.45 output / $0.04 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md): table row with Y under Guided JSON / JSON Schema, Y under Regex and Y under Choice. The Tool/Function Calling guide names it among models that \"don't support the tools parameter today\"."
159
+ },
160
+ "parasail-minimax-m3": {
161
+ "contextWindow": 1048576,
162
+ "maxOutputTokens": 524288,
163
+ "pricingPerMTok": {
164
+ "input": 0.3,
165
+ "output": 1.2,
166
+ "cachedInput": 0.06
167
+ },
168
+ "vision": false,
169
+ "status": "production",
170
+ "description": "Models page (https://docs.parasail.io/parasail-docs/products/overview/models.md, retrieved 2026-09-29), row \"MiniMax M3\": context window 1,048,576, max output 524,288, quantization FP8, $0.30 input / $1.20 output / $0.06 cached input per 1M tokens (the Pricing page, https://docs.parasail.io/parasail-docs/billing/pricing.md, shows the same three figures). Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md): table row with ✅ under Tools and ✅ under Tool Choice."
171
+ }
172
+ },
173
+ "topModels": [
174
+ "parasail-llama-33-70b-fp8",
175
+ "parasail-llama-4-maverick-instruct-fp8",
176
+ "parasail-gpt-oss-120b",
177
+ "parasail-gpt-oss-20b",
178
+ "parasail-deepseek-v4-flash",
179
+ "parasail-deepseek-v4-pro",
180
+ "parasail-kimi-k3",
181
+ "parasail-glm-52",
182
+ "parasail-qwen3p5-35b-a3b",
183
+ "parasail-qwen25-vl-72b-instruct",
184
+ "parasail-gemma3-27b-it",
185
+ "parasail-minimax-m3"
186
+ ],
187
+ "visionModel": "parasail-qwen25-vl-72b-instruct"
188
+ },
189
+ "capabilities": {
190
+ "text": true,
191
+ "streaming": true,
192
+ "tools": "model-dependent",
193
+ "toolsWithStreaming": false,
194
+ "structuredOutput": true,
195
+ "structuredOutputWithTools": false,
196
+ "embeddings": false,
197
+ "thinking": false
198
+ },
199
+ "errorRules": [
200
+ {
201
+ "status": 401,
202
+ "class": "authentication",
203
+ "message": "Parasail answered HTTP 401. Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 401 as \"Missing or invalid API key\". Check {apiKeyEnvVar}. Create a key: {setupUrl}"
204
+ },
205
+ {
206
+ "status": 403,
207
+ "class": "authentication",
208
+ "message": "Parasail answered HTTP 403 for model \"{model}\". Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 403 as \"API key lacks access to the requested model or resource\"."
209
+ },
210
+ {
211
+ "status": 404,
212
+ "class": "invalid-model",
213
+ "message": "Parasail answered HTTP 404 for model \"{model}\". Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 404 as \"Model or endpoint not found\"."
214
+ },
215
+ {
216
+ "status": 429,
217
+ "class": "rate-limit",
218
+ "message": "Parasail answered HTTP 429. Its Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) lists 429 as \"Rate limit or quota exceeded—back off and retry\"."
219
+ }
220
+ ],
221
+ "setup": {
222
+ "url": "https://www.saas.parasail.io/keys",
223
+ "apiKeyFormat": null,
224
+ "billingPolicy": "no-free-tier",
225
+ "instructions": [
226
+ "1. Visit: https://www.saas.parasail.io/keys — the link the Authentication page (https://docs.parasail.io/parasail-docs/api-reference/authentication.md) gives for getting an API key; sign-in was not attempted while building this entry",
227
+ "2. Create an API key and copy it when it is shown — the Authentication page steps read \"Click Create API Key.\" and \"Copy the key immediately—it's displayed only once.\"",
228
+ "3. Billing as the vendor states it: the Pricing page (https://docs.parasail.io/parasail-docs/billing/pricing.md) says \"To use models, create API keys, and access paid platform services, add a credit card. Without a card, you can still view the platform but can't use models or API keys.\"",
229
+ "4. Set {apiKeyEnvVar} in your .env file (the docs' examples use the environment variable PARASAIL_API_KEY)"
230
+ ],
231
+ "description": "Docs-verified only: the vendor's GET https://api.parasail.io/v1/models needs a key (an unauthenticated GET on 2026-09-29 answered HTTP 401), so the 12 model ids come from https://docs.parasail.io/parasail-docs/products/overview/models.md (retrieved 2026-09-29), which lists 33 rows and says \"This catalog is generated daily from the live models endpoint.\", and the roster has not been checked; the entry is not yet live-verified. OpenAI-compatible endpoint at https://api.parasail.io/v1: the Authentication page (https://docs.parasail.io/parasail-docs/api-reference/authentication.md) says \"All Parasail API requests use bearer token authentication. The API is fully OpenAI-compatible.\" and the Chat Completions reference (https://docs.parasail.io/parasail-docs/api-reference/chat-completions.md) documents POST https://api.parasail.io/v1/chat/completions with a messages array in and choices[].message.content out. Unauthenticated GETs made 2026-09-29: /models, /chat/completions and the base URL /v1 each answered HTTP 401 with content-type application/json;charset=ISO-8859-1 and the body text \"Unauthorized. No bearer token provided.\". No POST request was sent. errorRules carry the four statuses 401, 403, 404 and 429 from the Error responses table of the Chat Completions reference. models.defaultContextWindow (128000) and models.defaultMaxOutputTokens (16384) are placeholders the vendor does not publish as general values; they apply to model ids outside models.catalog and equal the Context window cell of the Qwen2.5-VL 72B row and the Max output cell of the Llama 3.3 70B (FP8) row on the Models page. Each model's status field holds production, a value the catalog schema requires; it is not a vendor statement. Each model's vision field holds false except for parasail-qwen25-vl-72b-instruct, whose true comes from the Multi-Modal guide; the false values are placeholders for a boolean the schema requires, not vendor statements. capabilities.text is true because the Chat Completions reference documents POST /v1/chat/completions. capabilities.streaming is true because that reference has a Streaming section describing stream: true with server-sent events. capabilities.tools is model-dependent because the Tool/Function Calling guide (https://docs.parasail.io/parasail-docs/guides/tool-function-calling.md) lists serverless models that return structured tool calls in a table and names other models that \"don't support the tools parameter today\". capabilities.structuredOutput is true because the Structured Output guide (https://docs.parasail.io/parasail-docs/guides/structured-output.md) documents response_format with type json_schema and guided_json, and lists models in a table with a \"Guided JSON / JSON Schema\" column. These capabilities were not exercised: no key was available. capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are false because no request combining them was sent. capabilities.embeddings is false because NeuroLink's generic catalog provider does not implement embed(); the Chat Completions reference's endpoint table lists POST /v1/embeddings. capabilities.thinking is false because the entry sets no reasoning request parameter, although the Model-specific Notes page (https://docs.parasail.io/parasail-docs/products/overview/model-specific-notes.md) documents model-specific thinking and reasoning controls. billingPolicy holds the schema value no-free-tier because the catalog schema has no unknown value; it is not a vendor statement of signup terms. The Pricing page (https://docs.parasail.io/parasail-docs/billing/pricing.md) states a card requirement, quoted in instruction 3, and the rate-limit table on https://docs.parasail.io/parasail-docs/operate-in-production/limits-and-quotas.md has a product class \"Serverless - Free\" (RPM column \"5\"). apiKeyFormat is null so NeuroLink's key-format check is not applied."
232
+ },
233
+ "evidence": {
234
+ "rosterVerified": {
235
+ "date": "2026-09-29",
236
+ "status": 401,
237
+ "method": "docs-only — unauthenticated GET https://api.parasail.io/v1/models answers 401 without a key, so model ids are taken from https://docs.parasail.io/parasail-docs/products/overview/models.md (retrieved 2026-09-29); roster not verified"
238
+ },
239
+ "authProbe": {
240
+ "date": "2026-09-29",
241
+ "status": 401,
242
+ "method": "unauthenticated GET https://api.parasail.io/v1/models with no credentials — HTTP 401, content-type application/json;charset=ISO-8859-1, body text \"Unauthorized. No bearer token provided.\" (plain text, no error code field); the same day unauthenticated GETs of https://api.parasail.io/v1/chat/completions and https://api.parasail.io/v1 answered HTTP 401 with the same body text; credential-free, no key used, no POST request sent"
243
+ },
244
+ "billingProbe": {
245
+ "date": "2026-09-29",
246
+ "method": "public pages https://docs.parasail.io/parasail-docs/billing/pricing.md (\"To use models, create API keys, and access paid platform services, add a credit card. Without a card, you can still view the platform but can't use models or API keys.\") and https://docs.parasail.io/parasail-docs/operate-in-production/limits-and-quotas.md (rate-limit table product class \"Serverless - Free\", RPM column \"5\"); credential-free, no signup performed"
247
+ },
248
+ "liveMatrix": null,
249
+ "addedInPR": "https://github.com/juspay/neurolink/pull/1862"
250
+ }
251
+ }