Your organization needs at least one enrolled machine reporting as ready. If you are the one putting machines into the fleet, start with Enroll a machine — enrollment is an operator task, not an API one.
1
Get an API key
Inference requests authenticate with a per-organization API key, not an enrollment token.The key is scoped to your organization: every request is billed and rate-limited against it, and only sees your organization’s models.
- Open the admin console and go to API keys.
- Select Create key. The plaintext key is shown once — copy it now.
- Store it as an environment variable. Never commit it.
2
Discover a model
Never hardcode a model id — which models your organization can call is decided by your fleet operator.Pick an
id from data and keep it in an environment variable so the rest of this guide stays copy-pasteable:3
Make a chat completion
Point any OpenAI client at The response is the standard OpenAI
$KIBBU_BASE_URL. Nothing else about your code changes.chat.completion object:4
Stream the response
Set
stream: true for a Server-Sent Events stream of chat.completion.chunk objects, terminated by data: [DONE].Handle the errors you will actually see
Every error uses the OpenAI envelope —{"error": {"message", "type", "code"}}. Branch on code, never on the message text. Three codes cover most first-day surprises:
The full vocabulary is in Error codes.
Check there is capacity
If requests are failing withno_eligible_node or fleet_busy, confirm the fleet has machines online:
status: "ok" with nodes_online > 0 means the fleet can serve you. The endpoint is intentionally tiny and stable — point uptime monitors at it too.
Next
How Kibbu works
What actually happens to a request after you send it.
Kibbu extensions
Optional fields: routing tier, adapters, reasoning controls.