Documentation
OpenAI- and Anthropic-compatible. Point your base URL at Daaeonyx and your existing code just works.
Quickstart
Two changes to your existing OpenAI setup: the base URL and your API key. Grab your key from your dashboard, then make your first call.
https://api.daaeonyxai.com/v1Authentication
Every request needs your API key in one of two headers — Authorization: Bearer for OpenAI clients, or x-api-key for Anthropic clients (Claude Code).
curl https://api.daaeonyxai.com/v1/chat/completions \
-H "Authorization: Bearer $DAAEONYX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-flagship",
"messages": [{"role": "user", "content": "Hello"}]
}'from openai import OpenAI
client = OpenAI(
api_key="$DAAEONYX_API_KEY",
base_url="https://api.daaeonyxai.com/v1",
)
resp = client.chat.completions.create(
model="qwen-flagship",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)Replace $DAAEONYX_API_KEY with your key from the dashboard.
Models
One plan, every model. Pass the model id in the model field. The two chat ids are the same engine (Qwen 3.6, 256K context) — the only difference is whether it reasons before answering.
qwen-flagshipChat — general use, code, agents. Direct answer.qwen-flagship-deepChat with explicit step-by-step reasoning (returns reasoning_content).qwen3-asrSpeech → text (transcription).qwen3-ttsText → speech (9 voices).z-image-turboText → image.Chat
The core endpoint, fully OpenAI-compatible — in curl or any OpenAI SDK.
curl https://api.daaeonyxai.com/v1/chat/completions \
-H "Authorization: Bearer $DAAEONYX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-flagship",
"messages": [{"role": "user", "content": "Hello"}]
}'Reasoning
qwen-flagship answers directly (best for code agents, where thinking would waste context). For multi-step reasoning use qwen-flagship-deep and raise max_tokens.
resp = client.chat.completions.create(
model="qwen-flagship-deep",
messages=[{"role": "user", "content": "Prove sqrt(2) is irrational."}],
max_tokens=2000, # reasoning consumes tokens
)
print(resp.choices[0].message.reasoning_content) # the chain of thought
print(resp.choices[0].message.content) # the final answerIf you use a reasoning model with max_tokens too low, it can spend the whole budget thinking and return empty content. Raise max_tokens, or use qwen-flagship.
Streaming
Set stream: true for a token-by-token response.
stream = client.chat.completions.create(
model="qwen-flagship",
messages=[{"role": "user", "content": "Tell a short story."}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Anthropic / Claude Code
Daaeonyx also speaks the Anthropic Messages API — it works with Claude Code. Use the x-api-key header.
curl https://api.daaeonyxai.com/v1/messages \
-H "x-api-key: $DAAEONYX_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-flagship",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'Voice
Text-to-speech (qwen3-tts) and speech-to-text (qwen3-asr). Voices: aiden, dylan, eric, ono_anna, ryan, serena, sohee, uncle_fu, vivian.
curl https://api.daaeonyxai.com/v1/audio/speech \
-H "Authorization: Bearer $DAAEONYX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "qwen3-tts", "voice": "ryan", "input": "Hello from Daaeonyx."}' \
--output speech.wavcurl https://api.daaeonyxai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $DAAEONYX_API_KEY" \
-F "file=@audio.wav" -F "model=qwen3-asr"Images
Generate images with z-image-turbo. The response carries the image as base64 (b64_json) — decode and save it.
img = client.images.generate(
model="z-image-turbo",
prompt="an astronaut cat over Earth, watercolor",
n=1,
)
import base64
with open("cat.png", "wb") as f:
f.write(base64.b64decode(img.data[0].b64_json))Limits & errors
Unlimited usage — no token quota, no spend cap. The only limits are rate, to keep the service stable for everyone:
- 3 concurrent requests
- 100 requests / minute
- 2.5M tokens / minute
Common errors
401missing API key — send the Authorization (or x-api-key) header.403invalid or revoked key — check you copied the full key, no spaces.429too many requests — back off and retry.Emptycontent — a reasoning model with max_tokens too low. Raise it, or use qwen-flagship.