PreviewDuring the preview the SDKs are only available here as a download. They appear on npm and PyPI once the API becomes stable; the download then stays as a second way.
TypeScript@bodo/api 1.0.0
Node 20 and newer, Bun, Deno, edge runtimes. No runtime dependencies, it only needs
fetch and WebCrypto.Download bodo-api-1.0.0.tgz·SHA-256 b391…6927
npm install ./bodo-api-1.0.0.tgz// Portal D11 · SDKs — the TypeScript card: pages without hand-written cursor code, one task done.
// Run: BODO_API_KEY=bodo_uk_test_… bun examples/sdk-overview.ts
import { Bodo } from "@bodo/api";
const bodo = new Bodo({ apiKey: process.env.BODO_API_KEY, preview: true });
// walks nextCursor by itself
for await (const contact of bodo.contacts.list({ updatedSince: "2026-11-03T09:00:00Z" })) {
if ("deleted" in contact) continue;
console.log(contact.lastName);
}
const task = await bodo.tasks.create({ title: "Angebot nachfassen" });
const done = await bodo.tasks.complete(task.id);
console.log(done.id, done.status);Pythonbodo-api 1.0.0
Python 3.11 and newer, synchronous over
httpx. Typed, with generated attrs models.Download bodo_api-1.0.0-py3-none-any.whl·SHA-256 0767…8539
pip install ./bodo_api-1.0.0-py3-none-any.whl# Pages without hand-written cursor code, one task done.
# Run: BODO_API_KEY=bodo_uk_test_… python examples/sdk_overview.py
import os
from bodo_api import Bodo
bodo = Bodo(api_key=os.environ["BODO_API_KEY"], preview=True)
# walks next_cursor by itself
for contact in bodo.contacts.list(updated_since="2026-11-03T09:00:00Z"):
print(contact.id)
task = bodo.tasks.create(title="Angebot nachfassen")
done = bodo.tasks.complete(task.id)
print(done.id, done.status)What the SDK does for you
Idempotency-Keyon every POST and DELETE, the same across retries
Backoffafter 429 and 503 with
Retry-After, at most 3 attemptsPagingover
nextCursor, as a loop instead of hand-written codeWebhooks and errorssignature check, error class with
code and requestId, warning on deprecationVersioning of the SDK
Semantic versions. Every SDK version belongs to exactly one API version and sends it in the
Bodo-Version header.| SDK version | API version | Supported until |
|---|---|---|
| 1.x | 2026-11-01 | Sunset of this API version, 12 months after its successor |
| 2.x (example) | 2027-05-01 | Sunset of its API version |
Major: new API version with breaking changes. Minor: new operations, fields or events. Patch: bug fixes. Preview operations sit behind
preview: true and may change in a minor release too.How an SDK is made
openapi.2026-11-01.jsonfrom the repository- open generators:
openapi-typescriptwithopenapi-fetchandopenapi-python-client - the examples run as tests against the sandbox
- CI puts the archives here into the portal; once stable also on npm and PyPI, with provenance (Trusted Publishing)
No third-party service in the build path. Only the thin wrappers for retry, paging and webhooks are hand-written.