Skip to content

Developer portal

Documentation

Everything needed to build on BioMedora: guides below, then the complete API reference generated directly from the published OpenAPI contract (141 paths, 153 operations, version 1.0.0).

Getting started

The base URL for your tenant is provisioned at signup (self-hosted deployments use your own domain). Every request is JSON-in / JSON-out with bearer authentication. Start with capability discovery, which never requires credentials:

curl https://api.biomedora.com/health
curl -X POST https://api.biomedora.com/v1/documents \
  -H "Authorization: Bearer $BIOMEDORA_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"content": "...", "patient_id": "patient_123", "source_format": "text"}'

Document creation runs billing + quota gates, optional fail-closed de-identification, NLP compilation, graph materialization, and indexing — returning the document plus a job handle you can poll via /v1/jobs.

Authentication

  • Bearer tokens — issued by your identity provider in production; dev/demo tenants can mint short-lived tokens via POST /auth/token?user_id=&tenant_id=&role=.
  • API keys — machine-to-machine access as service principals via the X-API-Key header. Secrets are displayed exactly once at creation; only a SHA-256 hash persists; revocation is instant.
  • Tenancy is derived server-side from credentials — clients cannot assert another tenant's ID. Cross-tenant access is denied and audited.

Conventions

Request tracing

Every response echoes X-Request-ID and propagates X-Correlation-ID. Include them in support inquiries.

Idempotency

Send an Idempotency-Key on unsafe requests. Identical replays return the stored response (24h TTL); key reuse with a different payload returns 409.

Pagination

List endpoints return base64 cursors: pass ?limit= (max 500) and follow next_cursor.

Errors

All errors share one envelope: {error:{code,message,category,request_id,details,retryable}}.

Rate limits

Sliding-window per tenant+user: documents 120/min · NLP 300/min · LLM 60/min · search 600/min · chat 120/min · default 1000/min. Exceeding returns 429 + Retry-After.

AI metadata

Reasoning/chat responses carry pipeline_versions, reasoning_policy, reasoning_mode (deterministic | model_reasoning) and the served model — engine internals stay private.

Errors & rate limits

{
  "error": {
    "code": "MODEL_NOT_ENTITLED",
    "message": "Model 'gpt-4o-mini' is not entitled for this plan.",
    "category": "entitlement",
    "request_id": "req_01J8...",
    "details": {"allowed_models": ["qwen2.5-vl-7b"]},
    "retryable": false
  }
}
HTTP status code meanings across the API
StatusMeaning
400 / 422Malformed or invalid input — details list the failing fields.
401Missing or invalid credentials.
403Authenticated but not permitted (RBAC/ABAC denial; audited).
404Resource does not exist within your tenant scope.
409Conflict — e.g., Idempotency-Key reuse with different payload.
422 PRIVACY_BLOCKEDFail-closed de-identification blocked the content.
429Rate limited or quota HARD_LIMIT reached — honor Retry-After.
402 BUDGET_LIMIT_EXCEEDEDBudget policy disabled expensive AI for this period.

Official SDKs

Typed Python distributions (biomedora-sdk, branded alias biomedora-client) cover every public capability — including jobs polling helpers, usage inspection, and attribute-access responses. TypeScript integrates via typed REST today.

Open SDK documentation →

API reference

Generated at build time from openapi/openapi.json — the same contract the platform serves and the Python SDKs are built against. Click any operation to inspect parameters, request schemas, and responses.

System & Discovery

3 operations

Documents

9 operations

Privacy & De-identification

16 operations

Clinical NLP

9 operations

Patients

9 operations

Intelligence: Search · Reasoning · Chat

17 operations

Platform Operations

11 operations

FHIR

1 operations

Billing & Usage

26 operations

Storage Data Platform

7 operations

Organization Settings & Keys

12 operations

Other Public Surfaces

3 operations

Internal Operator APIs

30 operations