PUBLIC / DOCS
Docs
Integration guide, protocol spec and contributor guide. The protocol contract (spec 1.2.5) is the single source of truth.
Integration guide
The example base_url is https://api.example.invalid/v1 — it only shows the format and does not resolve; use your own endpoint. Use an API key against the OpenAI-compatible API; streaming and non-streaming share one entry point.
A key is shown once at creation; afterwards only its prefix is visible.
Protocol
OpenAPI 3.1. Within one MAJOR version we only add fields and never change them; clients must tolerate unknown fields and enum values.
One error envelope: type / code / message / request_id.
Contributor guide
The code is open, logs are exportable and the ledger is verifiable. Read the contribution rules and the boundary checklist before submitting.
Contributors are settled in USDT per completed task.
Three steps to a first call
- Create an API key in the console and store the plaintext — it is shown once.
- Point base_url at your provider's endpoint and pass a model slug from the model list.
- Keep the request_id from the response or the error envelope; quote it in support requests.
curl -sS https://api.example.invalid/v1/chat/completions \
-H "Authorization: Bearer $DJB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"djb-standard","messages":[{"role":"user","content":"ping"}]}'
The example domain only shows the format. Replace it with your own endpoint.
Bind the web console (client setup)
A client only takes work once it is bound to your account: the web console issues the code while you are signed in and the client pastes it. Signing in is not binding.
- Web console → Nodes page → generate a binding code (single use, 10 minutes, shown once).
- Client → Account → Bind web console: paste the code, or run djb auth --bind <code>.
- Back on the Nodes page, enter node ID, client key and code → submit.
- Read the receipt: dispatched / awaiting node (offline, effective once online). Offline does not mean unbound.
- Once bound, set budgets and guardrails on the Account page, then start sharing.
Command-line equivalent:djb auth --bind <one-time code>
Open the Nodes page · Open the Account page
The code is single-use and expires in 10 minutes; regenerate it on the Nodes page. Never enter an upstream API key in the web console.
FAQ
Why does my bill differ from the page estimate?
The bill is the aggregate of ledger entries and the settled price is set by bidding.
Why does the node app say “awaiting node receipt”?
The setting is already dispatched from the web; the node is offline and will apply it once it reconnects.
Can tokens or points be exchanged for cash?
No. Tokens only offset inference; points only offset inference when your own compute falls short, with no yield promise.