Overview
Nadoo AI provides an OpenAI-compatible Chat Completion API. You can integrate with any existing OpenAI SDK or HTTP client — the AI model, workflow, and knowledge base configured for each application are applied automatically.application_id can be either an app UUID or an Access Token (for public URLs).Chat Completion API
Uses the same request/response format as OpenAI’s/v1/chat/completions.
Request
Request Body
| Parameter | Type | Default | Description |
|---|---|---|---|
model | string | "gpt-3.5-turbo" | Model ID (overridden by app config) |
messages | array | required | Array of conversation messages |
stream | boolean | false | Enable SSE streaming |
temperature | float | 0.7 | Generation temperature (0-2) |
top_p | float | 1.0 | Nucleus sampling (0-1) |
max_tokens | integer | null | Maximum tokens to generate |
stop | array | null | Stop sequences |
tools | array | null | Function calling tool definitions |
tool_choice | string/object | null | Tool selection strategy |
metadata | object | null | Request metadata |
Message Format
- Text
- Multimodal (Image)
- Audio
- File Attachments
Response (Non-streaming)
Response (Streaming)
When"stream": true, tokens are delivered in real time via Server-Sent Events:
Authentication
| Method | Header | Use Case |
|---|---|---|
| JWT Bearer | Authorization: Bearer {token} | Authenticated users |
| API Key | X-API-Key: {key} | Server-to-server integration |
| Access Token | Included in URL path | Public chatbot URLs |
- JWT Bearer
- API Key
- Access Token (Public)
Client Integration
Fully compatible with the OpenAI SDK — just change thebase_url.
- Python (OpenAI SDK)
- JavaScript (fetch)
- cURL
Behavior by App Type
The same Chat Completion endpoint is used for all app types, but the internal processing differs:Chat App
Chat App
Conversations are handled directly by the configured AI model. If a knowledge base is linked, RAG is applied automatically.
- Based on system prompt + conversation history
- Linked tools/plugins are activated automatically
- Supports multimodal input (images, audio, files)
Workflow App
Workflow App
Messages are routed into the workflow graph and processed through the node chain.
- Start node → AI Agent → Condition → Search Knowledge, etc.
- Node execution status SSE events are emitted during streaming
- Use
start_node_inputsto pass custom field values to the start node
Channel App
Channel App
Apps connected to external messaging channels (Slack, Discord, etc.). Typically invoked automatically via channel webhooks, but can also be called directly via the Chat Completion API.
Session Management
Use theX-Session-Id header to maintain conversation context. Sending the same session ID preserves the conversation history across requests.
Rate Limits
| Scope | Limit |
|---|---|
| Chat Completion | 20 requests/min (burst: 5) |
| IP-based (global) | 300 requests/min |
| User-based (authenticated) | 600 requests/min |
429 with a Retry-After header.
Management API (Internal)
The internal REST API used for platform management is available via FastAPI’s Swagger UI. This API is consumed by the frontend. For external integrations, use the Chat Completion API above.Swagger UI
Available in development mode when
DEBUG=true. Browse and test all endpoints.ReDoc
Human-readable API documentation with schemas and examples.
Swagger UI is only enabled when
DEBUG=true. It is disabled in production for security.Related
Authentication
JWT, API Key, and Cookie authentication details
SSE Events
19 real-time streaming event types
Error Handling
Error codes and response format