API Documentation
Integrate multi-model AI search with verification into your product
Authentication
All API requests require a session token. Get one by logging in:
POST /api/auth/login
Content-Type: application/json
{
"email": "you@example.com",
"password": "your-password"
}
→ Sets session cookie (httpOnly)
→ Or use: Authorization: Bearer {token}
Search
POST /api/search
Send a query to multiple AI models with web search. Returns NDJSON stream.
Request Body
| Parameter | Type | Description |
|---|---|---|
| query required | string | Search query (max 500 chars) |
| models | string[] | Models: openai, gemini, perplexity, grok, claude (default: all) |
| mode | string | lite (Lite), standard (Standard), deep (Deep). Default: standard |
| moderatorModel | string | Moderator: grok (default), openai, gemini, perplexity, claude, deepseek, llama |
| images | array | Up to 3 images: [{mimeType, data(base64)}] |
Credit Cost
| Mode | Formula | Example (5 models) |
|---|---|---|
| Lite (minimal) | 1 × model count | 5 credits |
| Standard (basic) | models + 2 | 7 credits |
| Deep (advanced) | models × 2 + 3 | 13 credits |
Response (NDJSON stream)
{"type":"answer","modelId":"openai","modelName":"ChatGPT","text":"..."}
{"type":"answer","modelId":"gemini","modelName":"Gemini","text":"..."}
{"type":"error","modelId":"grok","modelName":"Grok","message":"..."}
{"type":"confidence","score":4,"total":5,"label":"high"}
{"type":"summary","text":"...","moderatorName":"Grok"}
{"type":"complete","queryId":42}
Example (curl)
curl -X POST https://neuroverdict.com/api/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"query": "React vs Vue для SEO",
"models": ["openai", "gemini", "perplexity"],
"mode": "standard"
}'
Query Classification
GET /api/search/classify?q={query}
Analyze query complexity and get suggested model count.
GET /api/search/classify?q=столица+Бразилии
→ {"complexity":"simple","suggestedModels":2,"reason":"factual"}
Balance & Plans
GET /api/payments/balance — Credit balance
GET /api/payments/plans — List available plans (public)
GET /api/payments/subscription — Current subscription
Query History
GET /api/history — List past searches
GET /api/history/:id — Get result with model responses
POST /api/history/:id/share — Generate public share link
GET /api/history/shared/:token — Get shared result (no auth)
Rate Limits
| Endpoint | Limit |
|---|---|
| /api/search | 20 requests/min |
| /api/auth/* | 15 requests/15 min |
| /api/* (other) | 60 requests/min |
Error Codes
| Code | Description |
|---|---|
| 400 | Invalid request (missing query, too long, invalid mode) |
| 401 | Not authenticated |
| 402 | Insufficient credits |
| 429 | Rate limit exceeded or concurrent search in progress |
| 500 | Server error |
10 free credits on signup