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.

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)