Getting started
Krallo Developer API
A public, AI-first REST API. The core is an OpenAI-compatible chat-completions endpoint you can plug straight into coding agents like opencode, nanocoder, Aider or Continue — plus image generation, programmatic personas and memories, and signed outbound webhooks.
New here? Read the Quickstart to make your first call in three steps, then wire it into your editor with Use with opencode.
Base URL & authentication
Every endpoint lives under a single versioned base URL, and every request is authenticated with a bearer API key you mint in the Developer console.
https://exe.krallo.com/api/v1
Authorization: Bearer krallo_live_...
Keys are minted in the in-app Developer console at /ops/dev; the raw
secret is shown exactly once, is sha256-hashed at rest, and carries a least-privilege set of
scopes. Ownership is resolved across your linked Discord × Google
identities, so a key sees the data of the human behind it. See
Authentication for the full lifecycle.
What you can build
| Capability | Endpoint | Guide |
|---|---|---|
| OpenAI-compatible chat + tools + streaming | POST /chat/completions | Chat completions |
| Image generation | POST /ai/imagine | Image generation |
| Manage your AI personas | /personas | Personas |
| Manage your AI memories | /memories | Memories |
| Receive AI events | outbound webhooks | Webhooks |
Design principles
- OpenAI-compatible. Point any OpenAI SDK or agent at the base URL — no Krallo-specific client.
- Token-metered. A free daily quota first, then per-token from your prepaid balance. See Billing & quotas.
- Stable & versioned.
/api/v1is frozen; changes are additive. See Versioning. - Least-privilege. Every key holds only the scopes it needs.
- Predictable errors. Stable codes and shapes — see Errors.
Talk to the AI in one call
The whole platform in a nutshell — an OpenAI-shaped request with your key:
curl https://exe.krallo.com/api/v1/chat/completions \
-H "Authorization: Bearer krallo_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "krallo-code",
"messages": [{"role": "user", "content": "Write a haiku about Java."}]
}'
Continue to the Quickstart.