An OpenAI–compatible edge for chat, reasoning, search & tools.
Point any OpenAI SDK, CLI or frontend at Cubix and go. Free models with tool calling, live web search, thinking mode and SSE streaming — no configuration, no surprises.
or x-api-key
per minute / key
SSE streaming
# request POST https://your-deployment/v1/chat/completions authorization: Bearer YOUR_KEY { "model": "deepseek-v4-flash:free", "messages": [{ "role": "user", "content": "hi" }] } # response · application/json { "id": "cmpl-01", "choices": [{ "message": { "role": "assistant", "content": "Hey. What do you want to know?" } }] }
1 Keys are issued by the admin.
Works out of the box with opencode, SillyTavern, LibreChat, OpenWebUI, Cherry Studio and any OpenAI SDK — just change the base URL.
/v1/chat/completionsChat completions · streaming supported/v1/modelsList available models/v1/conversationsCreate a named conversation → id/v1/conversations/<id>/messagesContinue a conversation · statefulEvery request requires a key, passed with either header:
Authorization: Bearer <key>x-api-key: <key>- Limit of
15 messages/minper key1
Select by name — no extra flags. Unknown names fall back to the default model.
deepseek-v4-flash:freeDefault · fast general chatdeepseek-v4-flash-thinking:freeReasoning · returns reasoning_contentdeepseek-v4-flash-searchLive web search with citationsdeepseek-v4-flash-all:freeThinking + web search combined# basic completion curl -X POST https://your-deployment/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_KEY" -d '{ "model": "deepseek-v4-flash:free", "messages": [{"role": "user", "content": "Explain quantum computing"}] }'
{
"id": "cmpl-01",
"object": "chat.completion",
"model": "deepseek-v4-flash:free",
"choices": [{
"index": 0,
"message": { "role": "assistant", "content": "Quantum computing is..." },
"finish_reason": "stop"
}],
"usage": { "prompt_tokens": 12, "completion_tokens": 87, "total_tokens": 99 }
}
"stream": true to receive server-sent events — a series of data: {...} chunks terminated by data: [DONE].data: {"id":"cmpl-01","choices":[{"delta":{"content":"Hel"}}]} data: {"id":"cmpl-01","choices":[{"delta":{"content":"lo!"}}]} data: [DONE]
Standard function format. The model replies with message.tool_calls; return results as a tool message.
curl -X POST https://your-deployment/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_KEY" -d '{ "model": "deepseek-v4-flash:free", "messages": [{"role": "user", "content": "Whats the weather in Paris?"}], "tools": [{ "type": "function", "function": { "name": "get_weather", "description": "Get current weather for a city", "parameters": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"] } } }] }'
{
"choices": [{
"message": {
"role": "assistant",
"tool_calls": [{
"id": "call_01",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{ "city": "Paris" }"
}
}]
},
"finish_reason": "tool_calls"
}]
}
- Feed results back as
{"role":"tool","tool_call_id":...,"content":...} tool_choice:auto/none/required/ forced function- Multi-step loops and streaming tool calls are supported
Create a conversation once, keep talking inside it. Memory persists per id.
# 1. create a conversation curl -X POST https://your-deployment/v1/conversations -H "Authorization: Bearer YOUR_KEY" -d '{"name": "yo"}' # -> {"conversation_id": "<id>", "name": "yo"} # 2. talk inside it curl -X POST https://your-deployment/v1/conversations/<id>/messages -H "Authorization: Bearer YOUR_KEY" -d '{"content": "Remember my favorite number is 42"}'
conversation_id, same memory. Without an explicit id one is derived automatically, so multi-turn CLIs just work.Accepted body fields for /v1/chat/completions and the conversation endpoints.
| Field | Type | Default | Purpose |
|---|---|---|---|
| model | string | deepseek-v4-flash:free | See Models above |
| messages | array | — | OpenAI messages (system / user / assistant / tool) |
| stream | bool | false | SSE streaming |
| tools | array | [] | OpenAI function tools |
| tool_choice | string | object | auto | auto / none / required / forced function |
| conversation_id | string | auto | Reuse a conversation for memory |
| web_search | bool | false | Force live web search + citations |
| thinking | bool | false | Force reasoning mode |
| system | string | — | System prompt (conversations endpoint) |
temperature, max_tokens, ...) are accepted and ignored — nothing errors.Errors follow the OpenAI shape: {"error":{"message","type","code"}}
| Status | Code | Meaning |
|---|---|---|
| 401 | invalid_api_key | Invalid or missing API key |
| 400 | bad_request | Malformed request |
| 404 | not_found | Resource not found |
| 429 | rate_limit_exceeded | Over 15 messages/min — slow down |
| 502 | server_error | Service temporarily unavailable, retry |
Keys are issued by the admin — join our Discord server to get yours.