OpenAI Compatibility
Use OpenAI SDKs and RAG frameworks with the /v1 API.
Connect the official OpenAI SDK—or software that accepts an OpenAI-compatible base URL—to the platform. Authentication, API-key restrictions, rate limits, billing, model routing, and failover are shared with the native External API.
Base URL
https://ai.lumowp.com/v1
For clients that assume an OpenRouter-style path, the equivalent alias is:
https://ai.lumowp.com/api/v1
Both base URLs use the same authentication, model catalog, routing, billing,
and response adapters. Prefer /v1 for new integrations; /api/v1 exists to
make migration and third-party client setup easier.
Use your platform API key as a Bearer token:
Authorization: Bearer your-api-key-here
Keep API keys on your server. Do not expose a pk_ key in browser JavaScript.
Supported endpoints
GET /v1/modelsGET /v1/models/{model}POST /v1/chat/completionsPOST /v1/responsesPOST /v1/embeddingsPOST /v1/images/generations
/v1/chat/completions supports text, vision content parts, streaming, custom
function tools, tool-result messages, JSON mode, strict JSON Schema, sampling
controls, and OpenAI-shaped usage/error objects. /v1/responses provides a
modern stateless interface over the same billed model gateway.
JavaScript quickstart
import OpenAI from "openai"
const client = new OpenAI({
apiKey: process.env.LUMO_AI_API_KEY,
baseURL: "https://ai.lumowp.com/v1"
})
const response = await client.responses.create({
model: "your-chat-model",
input: "Give me three practical RAG quality checks."
})
console.log(response.output_text)
Python quickstart
from openai import OpenAI
client = OpenAI(
api_key="your-api-key-here",
base_url="https://ai.lumowp.com/v1",
)
completion = client.chat.completions.create(
model="your-chat-model",
messages=[{"role": "user", "content": "Write a concise welcome message."}],
)
print(completion.choices[0].message.content)
Model capabilities
Models do not all support the same operations. Call GET /v1/models and read
each model’s additive metadata before enabling UI controls:
{
"id": "your-chat-model",
"object": "model",
"created": 1787731200,
"context_length": 128000,
"max_output_tokens": 8192,
"capabilities": {
"chat": true,
"streaming": true,
"tools": true,
"structuredOutput": true,
"imageAnalysis": true
},
"architecture": {
"input_modalities": ["text", "image"],
"output_modalities": ["text"]
},
"supported_parameters": [
"model",
"messages",
"stream",
"tools",
"response_format"
]
}
created is the stable catalog creation time rather than the time of the
discovery request. abzar_pricing contains platform-credit estimates and is
intentionally namespaced so OpenRouter-style clients do not mistake it for
upstream per-token pricing.
Tool requests are routed only to supplier routes that positively advertise tool support. Unsupported model/operation combinations fail before provider spend whenever they can be determined during routing.
Compatibility boundaries
This API implements the production endpoints listed above. It does not expose OpenAI account resources or unrelated services such as Files, Batch, Fine-tuning, Moderations, Assistants, Vector Stores, Audio, Video, or Realtime.
The Responses endpoint is stateless create-only. It supports text, image input,
structured output, and custom function tools. It does not currently store or
retrieve responses, run background jobs, continue by previous_response_id,
execute built-in tools such as web search and file search, or accept reasoning,
file input, automatic truncation, and verbosity controls. Unsupported
parameters return an explicit OpenAI-shaped unsupported_parameter error with
the exact error.param; they are never silently ignored.
Continue with Responses API and Tools & Structured Output.