DeepSeek, Kimi and GLM are live — one endpoint, one bill.
Voyai

API reference

Everything is OpenAI-compatible. If a parameter works against OpenAI, it works here — unsupported ones are passed through to the upstream rather than rejected.

Endpoints

POST /chat/completionsThe main endpoint. Supports streaming, tool calling, JSON mode and reasoning models.
POST /embeddingsBilled on input tokens only — there is no output side.
GET /modelsReturns only the models this key is allowed to use, in OpenAI list format. Most clients call this on startup.

Chat completions

curl https://api.voyai.net/v1/chat/completions \
  -H "Authorization: Bearer $VOYAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V3.2",
    "messages": [{"role": "user", "content": "Hello"}],
    "stream": true
  }'

Parameters we handle specially

ParameterNote
modelUse the model ID exactly as shown on the Models page. We map it to whichever upstream account serves it.
streamWe inject stream_options.include_usage automatically so the final chunk carries exact token counts. Your bill matches what was generated.
max_tokensUsed to size the pre-authorization hold on your balance. Setting it very high on a low balance can get the request rejected even though the reply would have been short.
toolsPassed through. Tool definitions count as input tokens.

Embeddings

Billed on input tokens only — there is no output side.

curl https://api.voyai.net/v1/embeddings \
  -H "Authorization: Bearer $VOYAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "BAAI/bge-m3", "input": "hello world"}'

List models

Returns only the models this key is allowed to use, in OpenAI list format. Most clients call this on startup.

curl https://api.voyai.net/v1/models \
  -H "Authorization: Bearer $VOYAI_API_KEY"