@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
113 lines (112 loc) • 11.7 kB
JSON
{
"$schema": "./provider-catalog.schema.json",
"id": "reka",
"displayName": "Reka AI",
"aliases": [],
"tier": 2,
"wire": {
"baseURL": "https://api.reka.ai/v1"
},
"models": {
"default": "reka-flash",
"fallbacks": ["reka-edge"],
"defaultContextWindow": 16384,
"defaultMaxOutputTokens": 4096,
"catalog": {
"reka-flash": {
"pricingPerMTok": {
"input": 0.8,
"output": 2
},
"vision": true,
"status": "production",
"description": "NeuroLink default. Listed as reka-flash in the baseline model table on https://docs.reka.ai/chat/models.md (intro: \"Our baseline models always available for public access are:\") and named as the model in the code examples on https://docs.reka.ai/chat/overview.md, https://docs.reka.ai/chat/function-calling.md and https://docs.reka.ai/chat/api-reference/create.md (retrieved 2026-09-29). https://docs.reka.ai/pricing.md has a row named \"Reka Flash\" described as \"Fast and cost-efficient model for most tasks\" with $0.80 under \"Input Tokens (per 1M)\" and $2.00 under \"Output Tokens (per 1M)\"; https://docs.reka.ai/chat/models.md ends with \"For full listing of models and pricing, see the Reka API Pricing page\". https://docs.reka.ai/chat/function-calling.md says \"Currently, only Reka Flash supports function calling.\" Vision is true: the first curl example on https://docs.reka.ai/overview.md sends an image_url content part to model \"reka-flash\", and the Quickstart's \"First request\" example (https://docs.reka.ai/quickstart.md) carries the comment '# or \"reka-flash\"' beside an image_url request. No context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply."
},
"reka-edge": {
"pricingPerMTok": {
"input": 0.1,
"output": 0.1
},
"vision": true,
"status": "production",
"description": "Listed as \"reka-edge (or reka-edge-2603)\" in the baseline model table on https://docs.reka.ai/chat/models.md and on https://docs.reka.ai/quickstart.md (retrieved 2026-09-29). The Quickstart's \"First request\" example sends an image_url content part to model \"reka-edge\", and the example response on https://docs.reka.ai/chat/api-reference/get.md lists the id \"reka-edge\". https://docs.reka.ai/pricing.md has a row named \"Reka Edge\" described as \"Compact model ideal for on-device execution\" with $0.10 under \"Input Tokens (per 1M)\" and $0.10 under \"Output Tokens (per 1M)\". https://docs.reka.ai/chat/function-calling.md says \"Currently, only Reka Flash supports function calling.\" No context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply."
},
"reka-edge-2603": {
"pricingPerMTok": {
"input": 0.1,
"output": 0.1
},
"vision": true,
"status": "production",
"description": "Named in the same table row as reka-edge, \"reka-edge (or reka-edge-2603)\", on https://docs.reka.ai/chat/models.md and https://docs.reka.ai/quickstart.md, and shown as {\"id\": \"reka-edge-2603\"} in the example output of GET https://api.reka.ai/v1/models on https://docs.reka.ai/chat/models.md, which says \"All of these model IDs can be used as values for the Chat API's model parameter\" (retrieved 2026-09-29). Vision and prices are those of the row's reka-edge example and its \"Reka Edge\" pricing row (https://docs.reka.ai/quickstart.md, https://docs.reka.ai/pricing.md). No context window or maximum output figure is set for this model; models.defaultContextWindow and models.defaultMaxOutputTokens apply."
}
},
"topModels": ["reka-flash", "reka-edge", "reka-edge-2603"]
},
"capabilities": {
"text": true,
"streaming": true,
"tools": "model-dependent",
"toolsWithStreaming": false,
"structuredOutput": false,
"structuredOutputWithTools": false,
"embeddings": false,
"thinking": false
},
"errorRules": [
{
"status": 401,
"class": "authentication",
"message": "Reka rejected the API key (HTTP 401; https://docs.reka.ai/errors.md lists 401 as authentication_error with the client action \"Ensure that you're using a valid Reka API key\"). Check {apiKeyEnvVar}. Get one at {setupUrl}"
},
{
"status": 429,
"class": "rate-limit",
"message": "Reka rate limit (HTTP 429; https://docs.reka.ai/errors.md lists 429 as rate_limit_error with the client action \"Wait until your rate limit is restored and retry, or upgrade your API tier for higher limits\")."
},
{
"pattern": "P001|Insufficient Balance",
"class": "provider",
"message": "Reka reported an insufficient balance (https://docs.reka.ai/resources/faqs.md: \"If your balance hits $0, you'll see P001: Insufficient Balance.\"). The same page says \"Add credits to your account before making requests.\""
},
{
"status": 500,
"class": "provider",
"message": "Reka returned HTTP 500 (https://docs.reka.ai/errors.md lists 500 as server_error with the client action \"Retry with backoff. If this persists, contact Reka at contact@reka.ai\")."
}
],
"quirks": {
"authHeaderStyle": "x-api-key"
},
"setup": {
"url": "https://platform.reka.ai/sign-up",
"apiKeyFormat": null,
"billingPolicy": "free-tier",
"instructions": [
"1. Visit: https://platform.reka.ai/sign-up (the \"Start for free\" and \"Get started\" links on https://platform.reka.ai/pricing point to /sign-up). The Quickstart (https://docs.reka.ai/quickstart.md) says \"Create a free account on the Reka Platform to access your API key.\" and the FAQ (https://docs.reka.ai/resources/faqs.md) answers \"How do I get an API key?\" with \"Go to Platform, > API Keys to generate or copy your key.\"",
"2. Billing as the vendor states it: https://docs.reka.ai/pricing.md says \"Get started with no upfront costs.\"; the FAQ (https://docs.reka.ai/resources/faqs.md) answers \"Do I need to pre-pay?\" with \"Yes. Add credits to your account before making requests.\" and says the balance error reads \"P001: Insufficient Balance\" when the balance hits $0",
"3. Authentication: the vendor's REST examples send the header X-Api-Key (https://docs.reka.ai/chat/overview.md) and the OpenAPI file https://docs.reka.ai/openapi/api-reference.yaml declares one security scheme, an apiKey in the header X-Api-Key; the OpenAI Python SDK examples pass api_key=\"YOUR_API_KEY\" to the client (https://docs.reka.ai/quickstart.md)",
"4. Set {apiKeyEnvVar} in your .env file"
],
"description": "Docs-verified only: the vendor's GET https://api.reka.ai/v1/models needs a key (it answers HTTP 401 without one), so the three model ids come from https://docs.reka.ai/chat/models.md and the roster has not been checked; the entry is not yet live-verified. Endpoint https://api.reka.ai/v1: the Quickstart (https://docs.reka.ai/quickstart.md) says \"our API is fully OpenAI-compatible\" and shows the OpenAI Python SDK with base_url \"https://api.reka.ai/v1\"; https://docs.reka.ai/chat/overview.md shows POST https://api.reka.ai/v1/chat/completions with a messages array and reads the reply from response.choices[0].message.content. Unauthenticated GETs made 2026-09-29: /models answered HTTP 401 with the JSON body {\"error\":{\"message\":\"Unauthorized\",\"type\":\"authentication_error\",\"code\":null,\"param\":null}}; /chat/completions answered HTTP 405 with header allow: POST and the body {\"detail\":\"Method Not Allowed\"}. No POST request was sent. errorRules carry the statuses https://docs.reka.ai/errors.md lists (401 authentication_error, 429 rate_limit_error, 500 server_error) plus a pattern rule on the FAQ's \"P001: Insufficient Balance\" text. capabilities.streaming is true because https://docs.reka.ai/chat/overview.md says \"The Chat API supports streaming\". capabilities.tools is model-dependent because https://docs.reka.ai/chat/function-calling.md documents the tools parameter and tool_calls and says \"Currently, only Reka Flash supports function calling.\" capabilities.structuredOutput is false: the ChatRequest on https://docs.reka.ai/chat/api-reference/create.md lists messages, model, frequency_penalty, max_tokens, presence_penalty, seed, stop, stream, temperature, tool_choice, tools, top_k and top_p. capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are false because no request combining them was sent. capabilities.embeddings and capabilities.thinking are false. models.defaultContextWindow (16384) and models.defaultMaxOutputTokens (4096) are placeholders the vendor does not publish; the Chat API reference describes max_tokens as \"limited by the model's context length. Defaults to 1024.\" Each model's status field holds production, a placeholder for a value the catalog schema requires; it is not a vendor statement. billingPolicy holds free-tier, one of the three values the catalog schema allows (free-tier, free-with-card, no-free-tier). The vendor wording behind it: on https://platform.reka.ai/pricing the Pay as you go tile has a \"Start for free\" link to /sign-up and the page carries the text \"Free credits used\"; https://docs.reka.ai/pricing.md says \"Get started with no upfront costs.\"; https://docs.reka.ai/resources/faqs.md answers \"Do I need to pre-pay?\" with \"Yes. Add credits to your account before making requests.\" apiKeyFormat is null, so NeuroLink's key-format check is not applied."
},
"evidence": {
"rosterVerified": {
"date": "2026-09-29",
"status": 401,
"method": "docs-only — unauthenticated GET https://api.reka.ai/v1/models answers 401 without a key, so model ids are taken from https://docs.reka.ai/chat/models.md (retrieved 2026-09-29); roster not verified"
},
"authProbe": {
"date": "2026-09-29",
"status": 401,
"code": "authentication_error",
"method": "unauthenticated GET https://api.reka.ai/v1/models with no credentials — HTTP 401, JSON body {\"error\":{\"message\":\"Unauthorized\",\"type\":\"authentication_error\",\"code\":null,\"param\":null}}; code records the body's error.type because error.code is null; the same day an unauthenticated GET https://api.reka.ai/v1/chat/completions answered HTTP 405 with header allow: POST and JSON body {\"detail\":\"Method Not Allowed\"}; credential-free, no key used"
},
"billingProbe": {
"date": "2026-09-29",
"method": "public pages https://docs.reka.ai/resources/faqs.md (\"Do I need to pre-pay?\" answered \"Yes. Add credits to your account before making requests.\"), https://docs.reka.ai/quickstart.md (\"Create a free account on the Reka Platform to access your API key.\"), https://docs.reka.ai/pricing.md (\"Get started with no upfront costs.\") and https://platform.reka.ai/pricing (a \"Start for free\" link and the text \"Free credits used\"); credential-free, no signup performed"
},
"liveMatrix": null,
"addedInPR": "https://github.com/juspay/neurolink/pull/1862"
}
}