Documentation
OpenAI-compatible API reference
Introduction
Noxery is an OpenAI-compatible inference API. It exposes a single endpoint for chat completions and a model listing endpoint, with per-model token limits and streaming support. Use any OpenAI SDK or a plain HTTP client.
Base URL: https://noxery.tr/v1
Quick Start
1. Create an account and generate an API key on the API Keys page.
2. Send a chat completion request:
curl https://noxery.tr/v1/chat/completions \
-H "Authorization: Bearer nox-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-sol",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Authentication
Authenticate with an API key sent as a Bearer token. Keys are created in the dashboard and are shown only once.
Authorization: Bearer nox-YOUR_API_KEY
Models
List all available models with GET /v1/models. Pass the returned id as the model value in chat requests.
curl https://noxery.tr/v1/models \
-H "Authorization: Bearer nox-YOUR_KEY"
A few available model IDs (see the Models page for the full list):
- gpt-5.6-sol
- openai/gpt-oss-20b
- openai/gpt-oss-120b
- qwen/qwen3.6-27b
- qwen/qwen3.8-27b
- qwen-max
- qwen-plus
- qwen-turbo
- qwen-flash
- qwen-plus-latest
- qwen3-max
- qwen3.8-max
Chat Completions
POST /v1/chat/completions accepts the standard OpenAI request shape:
{
"model": "gpt-5.6-sol",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
"max_completion_tokens": 1024,
"temperature": 0.7
}
Roles supported: system, user, assistant. Vision models also accept image content parts.
Streaming
Set "stream": true to receive server-sent events (SSE). Each chunk is a data: line with a chat.completion.chunk object, ending with data: [DONE].
curl -N https://noxery.tr/v1/chat/completions \
-H "Authorization: Bearer nox-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-5.6-sol", "stream": true, "messages": [{"role": "user", "content": "hi"}]}'
Rate & Token Limits
Each model has daily, weekly, and monthly token limits. When a limit is reached, the API returns 429 with rate_limit_exceeded. Limits are shown in your dashboard and on the Models page.
Requests are also subject to a per-key rate limit (requests per minute).
Errors
Errors use a normalized JSON shape:
{
"error": {
"message": "Rate limit exceeded.",
"type": "rate_limit_exceeded",
"code": 429
}
}
Common codes: 400 invalid request, 401 invalid key, 403 no permission, 404 model not found, 429 rate/token limit.
cURL
# List models
curl https://noxery.tr/v1/models -H "Authorization: Bearer nox-YOUR_KEY"
# Chat completion
curl https://noxery.tr/v1/chat/completions \
-H "Authorization: Bearer nox-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-5.6-sol", "messages": [{"role": "user", "content": "Hello"}]}'
Python
from openai import OpenAI
client = OpenAI(
api_key="nox-YOUR_KEY",
base_url="https://noxery.tr/v1",
)
resp = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
JavaScript / Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "nox-YOUR_KEY",
baseURL: "https://noxery.tr/v1",
});
const resp = await client.chat.completions.create({
model: "gpt-5.6-sol",
messages: [{ role: "user", content: "Hello" }],
});
console.log(resp.choices[0].message.content);
OpenAI SDK compatibility
Noxery is compatible with the OpenAI SDKs. Set base_url (Python) or baseURL (JS) to https://noxery.tr/v1 and use your Noxery key as the API key. Works with the official openai Python/Node packages and most OpenAI-compatible clients.
Agents
Noxery works as a custom OpenAI-compatible provider for these agents.
OpenCode
Add a custom provider to opencode.json using the OpenAI-compatible adapter. Keep the key in an environment variable.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"noxery": {
"npm": "@ai-sdk/openai-compatible",
"name": "Noxery",
"options": {
"baseURL": "https://noxery.tr/v1",
"apiKey": "{env:NOXERY_API_KEY}"
},
"models": {
"gpt-5.6-sol": { "name": "gpt-5.6-sol" }
}
}
}
}
Export NOXERY_API_KEY, then select the noxery/<model> model. Model IDs must match GET /v1/models. For the newer config format, use providers with package: "@opencode-ai/ai/providers/openai-compatible" and settings.baseURL.
Hermes Agent
Configure a custom OpenAI-compatible endpoint in ~/.hermes/config.yaml:
model:
default: gpt-5.6-sol
provider: custom
base_url: https://noxery.tr/v1
api_key: nox-YOUR_KEY
Alternatively run hermes model and choose "Custom endpoint", or set OPENAI_BASE_URL + OPENAI_API_KEY for a custom endpoint.
OpenClaw
Define a custom provider in ~/.openclaw/openclaw.json and allowlist the model:
{
"models": {
"mode": "merge",
"providers": {
"noxery": {
"baseUrl": "https://noxery.tr/v1",
"apiKey": "${NOXERY_API_KEY}",
"api": "openai-completions",
"models": [
{ "id": "gpt-5.6-sol", "name": "gpt-5.6-sol" }
]
}
}
},
"agents": {
"defaults": {
"models": {
"noxery/gpt-5.6-sol": { "alias": "gpt-5.6-sol" }
}
}
}
}
Use api: "openai-completions", include /v1 in baseUrl, and add the fully-qualified noxery/<model> entry to the allowlist.
Configuration examples
Environment variables:
export NOXERY_API_KEY="nox-..."
export NOXERY_BASE_URL="https://noxery.tr/v1"
Typical OpenAI SDK pattern with a custom base URL and API key. Replace the model ID with any model from GET /v1/models.