Open in the interactive docs · markdown for agents: https://neuraldeep.tech/docs/start.md
Getting started
All platform APIs live at one address and take one key. Chat, embeddings, rerank and transcription are OpenAI-compatible: any OpenAI SDK works once you change base_url. Search, OCR, images, music, speech synthesis and diarization use the same key; each has its own section below.
| what | value |
|---|---|
| base URL | https://api.neuraldeep.tech/v1 |
| auth | header Authorization: Bearer sk-... |
| key | dashboard, "Keys" |
| your key's model catalog | GET /v1/models |
| model showcase and prices | /models |
curl -s https://api.neuraldeep.tech/v1/models \
-H "Authorization: Bearer $YOUR_KEY" | jq '.data[].id'
Which models your key can use. GET /v1/models returns the key's models with their capabilities (images, tools, reasoning), context window and price. One caveat: a free-plan key currently also sees paid-plan models in the list, and calling one returns 403 with the X-Window: free-model header.
- The free plan runs
qwen3.6-35b-a3b,qwen3.6-fp8and their-noreasonvariants, all embedding and rerank models, and transcription with a small daily quota. gemma-4-31b,gemma-4-31b-noreason,gpt-oss-120b,gpt-oss-20b,qwen3.8-27bandqwen3.8-27b-noreasonare available on paid plans and from the wallet, billed per token.- A key in "Wallet" mode pays for each call at showcase prices. The mode is set per key in the dashboard. If you topped up the wallet but the key stayed in "Subscription" on free, it still follows the free rules.
Error format. The model gateway (chat, embeddings, rerank, transcription) answers like OpenAI: {"error": {"message": "...", "code": "429"}}. The search, OCR, image, speech and diarization services answer {"detail": "..."}. An exhausted service quota comes with its own body, shown below. Error texts come in Russian or English: in the key owner's dashboard language, otherwise by the request's Accept-Language header, otherwise in Russian.
| code | meaning | what to do |
|---|---|---|
| 400 | bad request: broken JSON, unreadable file, input longer than the model window | fix the request, retrying will not help |
| 401 | the key is invalid or revoked, or the model is not on the key | check the key and the model name |
| 402 | the wallet has no money for a paid model or operation (X-Wallet: empty), text like "Your wallet is empty (0.00 RUB), top it up: https://hub.neuraldeep.tech/app/billing" |
top up the wallet |
| 403 | the model is not in your plan (X-Window: free-model), the account is blocked |
change the model, plan or key mode |
| 404 | no such model, task or result | check the name and id |
| 413 | the file or text exceeds the endpoint limit | split the input |
| 415, 422 | unsupported format or a parameter out of range | fix the parameter |
| 429 | rate, concurrency or quota limit, the key's daily capacity, the free transcription quota, a pause for repeated retries | wait Retry-After seconds |
| 502, 503 | the model or service is temporarily unavailable, the model is overloaded at the provider | retry after a pause or pick another model |
| 504 (transcription may return 408) | the model did not answer in time | retry, shrink the input |
We do not pass external provider errors through. If a provider refuses for its own reasons (auth, balance, its limits), you get a neutral 503 and the details go to our monitoring. Only errors about your request itself pass as is: 400, 404, 413, 415, 422.
How to check your quota. We do not publish plan volumes in the docs: they change, and a key can always ask for its own remainder. Polling these endpoints does not spend quota.
| what | endpoint |
|---|---|
| chat and embeddings: windows, RPM, concurrency, wallet | GET /v1/limits (details) |
| search and crawl | GET /v1/search/quota |
| OCR | GET /v1/ocr/quota |
| images | GET /v1/images/quota |
| music | GET /v1/music/quota |
| diarization | GET /v1/audio/diarize/quota |
| speech synthesis | X-Quota-Day-Remaining and X-Quota-Month-Remaining headers on the /v1/audio/speech response |
A successful gateway response carries x-ratelimit-api_key-remaining-requests (requests left in the current minute) and x-ratelimit-api_key-remaining-max_parallel_requests (free concurrent slots).
429 from the model gateway. The response has Retry-After (seconds), Retry-After-Ms, X-Window (which window fired) and X-RateLimit-Reset-Requests. The error text ends with Limit resets at: YYYY-MM-DD HH:MM:SS UTC. Retry after Retry-After, not earlier.
X-Window |
what happened |
|---|---|
session |
the plan's 3-hour request limit is used up (windows are fixed in UTC), a pause is running |
week |
the weekly limit is used up, it resets on Monday 00:00 UTC |
chat_rpm, model_rpm, account-rpm |
too many requests per minute: per account or to one model |
account-inflight, vector-inflight |
too many requests in flight at once |
key-rpm, key-tpm, key-parallel |
the key's own limit fired: requests or tokens per minute, concurrent requests |
daily-capacity |
the key's daily capacity is used up, it resets at 00:00 UTC |
stt-free-daily |
today's free transcription quota is used up, it resets at 00:00 UTC |
abuse |
the client retried many times in a row after a refusal, the account's requests are paused |
More, with example bodies, in limits and error codes.
429 from a service when the quota is used up. Search, OCR, images, music, speech synthesis, the PII shield, diarization and decisions answer the same way:
{"error": {"type": "quota_exceeded", "pool": "search", "scope": "day",
"used": 100, "limit": 100, "tier": "starter",
"reset_at": "2026-10-23T00:00:00+00:00",
"upgrade_url": "https://neuraldeep.tech/pricing",
"message": "The search limit is used up: 100/100 requests per day, it resets at 00:00 UTC. For more, a higher plan (https://neuraldeep.tech/en/pricing) or pay as you go from the wallet (https://hub.neuraldeep.tech/app/billing)."}}
The numbers in the example are illustrative. The message field is meant for people; a program should read the other fields. If the service is not in your plan at all (limit: 0), the text starts with "Your plan does not include…". Headers: X-Quota-Pool, X-Quota-Scope (day or month), X-Quota-Limit, X-Quota-Reset and Retry-After until the reset. Daily quotas reset at 00:00 UTC, monthly ones on the first day of the month at 00:00 UTC.
A key in Wallet mode with no money gets 402 from the services with the text "Your wallet is empty (0.00 RUB), top it up: https://hub.neuraldeep.tech/app/billing". Too many of your own tasks in the image queue give 429 with "You already have 5 of 5 tasks in the queue. Wait for them to finish." and Retry-After.
Reference sections (markdown for agents)
- Start · key, errors, quotas
- Text · chat
- Vectorization
- Reranking
- Transcription
- Image recognition
- Structured output
- Clients · agents
- Remaining limits · Limits API
- Search · Search API
- OCR · documents
- Images · Image API
- Music · Music API
- PII anonymization · PII Guard
- SpeechCore · STT
- Speech synthesis · TTS API
- Who spoke when · diarization
- Text decisions · FRIDA-Decisions, clef-flash
- Drift · overview
- Files + sandbox preview
- Your own tools, skills, MCP
- Tasks · proactive
- Memory · memory
- Isolation and security
- Agent settings
- Limits · errors
- Book · search and MCP
- Streaming
- SDK · Python / JS
- Privacy