# Bodo Developers > Documentation of the public Bodo API: guides, reference, SDKs and changelog. Every page is available as Markdown at `index.md`. ## Start - [Bodo API](https://developers.bodo-app.com/en/index.md): REST following OpenAPI 3.1 for contacts, companies, tasks and documents, plus webhooks, OAuth for apps and SDKs for TypeScript and Python. Every call acts as exactly one principal, a person or a service account, and may never do more than that principal. - [Quickstart](https://developers.bodo-app.com/en/quickstart/index.md): From a sandbox key to your first contact in four steps: create the key, ask who you are, create a contact, look it up in Bodo. ## Guides - [Keys & principals](https://developers.bodo-app.com/en/guides/keys/index.md): A call always acts as exactly one principal: a person or a service account. The key can never do more than that principal. - [Permissions & scopes](https://developers.bodo-app.com/en/guides/scopes/index.md): What a call may do is the intersection of the principal’s roles, the key’s scope and the organization’s ceiling. It is computed fresh on every call. - [Errors](https://developers.bodo-app.com/en/guides/errors/index.md): Every error answer is application/problem+json following RFC 9457. The code is the contract, type points at its page in this portal. - [Pagination & sync](https://developers.bodo-app.com/en/guides/pagination/index.md): Lists page through an opaque cursor. Syncing works with updatedSince and includeDeleted, next to webhooks too. - [Rate limits](https://developers.bodo-app.com/en/guides/rate-limits/index.md): Which limit hits you, what every operation costs and how your client waits after a 429. GET /v1/rate_limit returns your own state. - [Idempotency & revisions](https://developers.bodo-app.com/en/guides/idempotency/index.md): Why retrying after a network error is safe and how concurrent changes never overwrite each other. - [Versioning & preview](https://developers.bodo-app.com/en/guides/versioning/index.md): How the Bodo API is versioned: /v1 in the path, a date version in a header, a preview channel per request. What counts as breaking, how long a replaced version keeps running and what a deprecation looks like. - [Files](https://developers.bodo-app.com/en/guides/files/index.md): You upload documents in three steps. Bodo checks type, size, checksum and file signature before a document becomes visible. - [Provenance](https://developers.bodo-app.com/en/guides/provenance/index.md): Every change through the API shows up in the record history, with the actor and the plug mark “API”. Everyone in Bodo sees what an integration did. - [Test mode & sandbox](https://developers.bodo-app.com/en/guides/sandbox/index.md): Every organization has a sandbox with its own data. There you try everything with test keys, without touching real records. - [Webhooks](https://developers.bodo-app.com/en/guides/webhooks/index.md): Bodo reports changes to your endpoint. An event is thin: type, id and time. You fetch the details through the API with your own rights. - [OAuth for apps](https://developers.bodo-app.com/en/guides/oauth/index.md): Apps of other vendors connect to Bodo through OAuth 2.1: authorization code with PKCE, short access tokens, rotating refresh tokens and resource indicators. - [Language](https://developers.bodo-app.com/en/guides/language/index.md): Every page of this portal exists in German and English. API error texts follow your Accept-Language header. German is the default. ## Reference - [API reference](https://developers.bodo-app.com/en/reference/index.md): Every operation with scope, cost, headers, body and errors, built from the frozen spec. Examples in curl, the TypeScript SDK and the Python SDK. - [SDKs](https://developers.bodo-app.com/en/sdks/index.md): The official SDKs for TypeScript and Python: generated from the frozen spec, with idempotency, backoff, paging and webhook verification. A download with checksum during the preview. - [Changelog](https://developers.bodo-app.com/en/changelog/index.md): Every change to the Bodo API with date, kind and resource: breaking only with a new version, additive changes at once, preview changes bundled. Available as an RSS feed. - [Downloads & agents](https://developers.bodo-app.com/en/downloads/index.md): The frozen spec per version, the SDK archives and everything for agents: llms.txt and every page as Markdown, in German and in English under /en/. ## Legal - [Terms of use](https://developers.bodo-app.com/en/terms/index.md): What is allowed through the API, how the data processing agreement applies and when Bodo suspends a key. The consent dialog for “API on” in Bodo links here. ## Optional - [Try it](https://developers.bodo-app.com/en/reference/try-it/index.md) - [Version 2026-11-01](https://developers.bodo-app.com/en/changelog/2026-11-01/index.md) - [Version 2027-05-01 (example)](https://developers.bodo-app.com/en/changelog/2027-05-01/index.md) - [Migrating to 2027-05-01](https://developers.bodo-app.com/en/guides/migrate-2027-05-01/index.md) - [Problem types](https://developers.bodo-app.com/en/problems/index.md) - [Invalid request](https://developers.bodo-app.com/en/problems/INVALID_REQUEST/index.md) - [Batch too large](https://developers.bodo-app.com/en/problems/BATCH_TOO_LARGE/index.md) - [Cursor does not match the request](https://developers.bodo-app.com/en/problems/CURSOR_MISMATCH/index.md) - [Unknown parameter](https://developers.bodo-app.com/en/problems/UNKNOWN_PARAMETER/index.md) - [Not authenticated](https://developers.bodo-app.com/en/problems/UNAUTHENTICATED/index.md) - [Forbidden](https://developers.bodo-app.com/en/problems/FORBIDDEN/index.md) - [Risk family blocked](https://developers.bodo-app.com/en/problems/RISK_FAMILY_BLOCKED/index.md) - [Organization mismatch](https://developers.bodo-app.com/en/problems/ORGANIZATION_MISMATCH/index.md) - [Public API not enabled](https://developers.bodo-app.com/en/problems/API_MODULE_DISABLED/index.md) - [Not found](https://developers.bodo-app.com/en/problems/NOT_FOUND/index.md) - [Operation not available in this version](https://developers.bodo-app.com/en/problems/OPERATION_NOT_IN_VERSION/index.md) - [Request with this Idempotency-Key still in progress](https://developers.bodo-app.com/en/problems/IDEMPOTENCY_IN_PROGRESS/index.md) - [Upload incomplete](https://developers.bodo-app.com/en/problems/UPLOAD_INCOMPLETE/index.md) - [Too many webhook endpoints](https://developers.bodo-app.com/en/problems/WEBHOOK_ENDPOINT_LIMIT_REACHED/index.md) - [API version shut down](https://developers.bodo-app.com/en/problems/VERSION_SUNSET/index.md) - [Precondition failed](https://developers.bodo-app.com/en/problems/PRECONDITION_FAILED/index.md) - [Validation failed](https://developers.bodo-app.com/en/problems/VALIDATION_FAILED/index.md) - [Idempotency-Key used with a different payload](https://developers.bodo-app.com/en/problems/IDEMPOTENCY_PAYLOAD_MISMATCH/index.md) - [Upload checksum mismatch](https://developers.bodo-app.com/en/problems/UPLOAD_CHECKSUM_MISMATCH/index.md) - [File rejected](https://developers.bodo-app.com/en/problems/UPLOAD_REJECTED/index.md) - [Family not allowed in a batch](https://developers.bodo-app.com/en/problems/BATCH_FAMILY_NOT_ALLOWED/index.md) - [Invalid webhook URL](https://developers.bodo-app.com/en/problems/WEBHOOK_URL_INVALID/index.md) - [Precondition required](https://developers.bodo-app.com/en/problems/PRECONDITION_REQUIRED/index.md) - [Too many requests](https://developers.bodo-app.com/en/problems/RATE_LIMITED/index.md) - [Instance overloaded](https://developers.bodo-app.com/en/problems/OVERLOADED/index.md) - [Quota exhausted](https://developers.bodo-app.com/en/problems/QUOTA_EXHAUSTED/index.md) - [Internal error](https://developers.bodo-app.com/en/problems/INTERNAL/index.md) - [Upstream service error](https://developers.bodo-app.com/en/problems/UPSTREAM/index.md) - [API paused](https://developers.bodo-app.com/en/problems/API_PAUSED/index.md) - [Instance is being updated](https://developers.bodo-app.com/en/problems/INSTANCE_PENDING/index.md)