iblai-api-inference
Call ibl.ai's OpenAI-compatible chat endpoint: identical request/response shape
to OpenAI's /v1/chat/completions, but served by your deployment and routed to
whichever provider/model you name. Use it for raw completions, streamed tokens,
or tool calls directly — no MCP server, no agent needed. To configure which model
an agent runs on use /iblai-api-agent-llm; to converse with a deployed agent
(RAG, memory, history) use /iblai-api-agent-chat.
Auth & conventions
Header:
Authorization: Api-Token $IBLAI_API_KEYon every request.Path var:
{org}=$IBLAI_ORG(no username in the path).Model: always
provider/modelform, e.g.openai/gpt-5,anthropic/claude-sonnet-4. A bare name is rejected400 invalid_request.Two hosts — streaming is async/ASGI-only:
- Non-streaming →
https://api.iblai.app/dm/api/ai-mentor/orgs/{org}/v1 - Streaming (
stream: true) →https://asgi.data.iblai.app/api/ai-mentor/orgs/{org}/v1
The sync WSGI gateway can't drive the async SSE generator, so
stream:truemust hit the ASGI host.- Non-streaming →
Not connected yet? Run
/iblai-api-loginfirst to populateIBLAI_ORGandIBLAI_API_KEY.
Reads
- GET
…/orgs/{org}/v1/models— OpenAI-style model list for the deployment; eachidis aprovider/modelyou can pass asmodel.
Writes
- POST
…/orgs/{org}/v1/chat/completions— run a completion (an inference call, not a state mutation;POSTper the OpenAI wire format). Standard OpenAI chat body:{ "model": "openai/gpt-5", "messages": [{ "role": "user", "content": "Hello" }], "stream": false, "tools": [], "stream_options": { "include_usage": true } }stream:truereturns Server-Sent Events (data: {chunk}…data: [DONE]); omit it (orfalse) for one JSON completion.
Examples
Non-streaming completion:
curl -X POST \
"https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/v1/chat/completions" \
-H "Authorization: Api-Token $IBLAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-5","messages":[{"role":"user","content":"Say hi"}]}'
Streaming (ASGI host, SSE):
curl -N -X POST \
"https://asgi.data.iblai.app/api/ai-mentor/orgs/$IBLAI_ORG/v1/chat/completions" \
-H "Authorization: Api-Token $IBLAI_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d '{"model":"openai/gpt-5","stream":true,"stream_options":{"include_usage":true},"messages":[{"role":"user","content":"Stream a haiku"}]}'
List available models:
curl "https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/v1/models" \
-H "Authorization: Api-Token $IBLAI_API_KEY"
Notes
- Drop-in for OpenAI SDKs: point
base_urlat…/orgs/{org}/v1. Auth isApi-Token(notBearer), so pass it via the SDK's default headers ({"Authorization": "Api-Token <key>"}), not the plainapi_keyfield. - Streaming must use the ASGI host (
asgi.data.iblai.app); the WSGI gateway (api.iblai.app) is fine for non-streaming only. modelmust beprovider/modeland resolve to a provider the deployment has configured — list it via…/v1/models; unknown/bad model →400 invalid_request.- Tool calling is supported (OpenAI
tools/tool_calls); streamed tool-call deltas carry dense, 0-basedindexvalues, matching the OpenAI wire format that clients index directly.