GET /api/health
Health check. Used by the dashboard page to confirm the API is reachable.
Response
{
"ok": true,
"service": "beemuu-api"
}GET /api/dtc/<code>
Look up a single DTC by code. The code is case-insensitive.
Parameters
code— the DTC. Accepts SAE J2012 codes (P0171, U0100) and BMW-specific 4-hex-digit codes (29E0, 2A82). Also accepts 6-digit BMW codes (120308).
Response (200 OK)
{
"code": "29E0",
"title": "Fuel injection rail, pressure sensor signal",
"severity": "warn",
"category": "powertrain",
"verified": true,
"source_url": "https://github.com/ohgeeceee/beemuu/blob/main/research/bmw_diag_dim01_dtcs.md",
"source_label": "BMD-01"
}Response (404 Not Found)
{
"error": "DTC not found",
"code": "ZZZZ"
}Example
curl -sS https://api.beemuu.com/api/dtc/29E0 | python3 -m json.tool
GET /api/dtc
List all DTCs in the catalog with optional filtering.
Query parameters
limit— max number of entries (default 100, max 500).offset— pagination offset (default 0).verified— filter by verification status (true/false).category— filter by category (powertrain, network, body, chassis).
Response
{
"total": 444,
"limit": 100,
"offset": 0,
"entries": [
{ "code": "29E0", "title": "...", "verified": true, "category": "powertrain" },
{ "code": "29E1", "title": "...", "verified": true, "category": "powertrain" },
...
]
}GET /api/dashboard
Dashboard data for the /dashboard.html page. Returns build artifacts, API status, recent release info, and uptime statistics.
Response
{
"build": { "version": "v0.14.4", "date": "2026-07-31", "status": "green" },
"api": { "status": "ok", "version": "0.14.0", "uptime_hours": 720 },
"release": {
"tag": "v0.14.4",
"url": "https://github.com/ohgeeceee/beemuu/releases/tag/v0.14.4",
"published_at": "2026-07-31T18:00:00Z"
}
}GET /api/release-info
Release info for the latest Beemuu version. Returns download URLs, SHA-256 checksums, and platform-specific installer paths.
Response
{
"tag": "v0.14.4",
"published_at": "2026-07-31",
"platforms": {
"windows-x86_64": {
"nsis": {
"url": "https://github.com/ohgeeceee/beemuu/releases/download/v0.14.4/BeeEmUu_0.14.4_x64-setup.exe",
"size_bytes": 8420000,
"sha256": "3a3b1e5a4e8c9d7f2b6c8a1d4e7f0c2b5a8d1e3f6c9b2a5d8e1f4c7b0a3d6e9f"
},
"msi": {
"url": "https://github.com/ohgeeceee/beemuu/releases/download/v0.14.4/BeeEmUu_0.14.4_x64_en-US.msi",
"size_bytes": 9100000,
"sha256": "4b4c2f6b5f9d0e8c3d7e9b2c5d8e1f0a3b6c8d0e3f6a9b1c4d7e0f3a5b8c1d4e"
}
}
},
"release_notes_url": "https://github.com/ohgeeceee/beemuu/releases/tag/v0.14.4"
}Error format
All errors return a JSON object with an error field. The HTTP status code indicates the type of error.
- 400 Bad Request — invalid query parameters or malformed input.
- 404 Not Found — the resource doesn’t exist.
- 429 Too Many Requests — rate limit exceeded. Includes a
Retry-Afterheader. - 500 Internal Server Error — the API hit an unexpected error. The dashboard page renders these as degraded; the bug should be filed on GitHub.
Rate limits
The API is rate-limited at 60 requests per minute per IP address. Bursts up to 120 requests per minute are tolerated. Sustained abuse gets the IP throttled for 1 hour.
Source
The API source is in the project repo at backend/. It is Tier B per CLAUDE.md: changes to the API surface require a human merge, but the API itself is read-only and public.
If you find a bug in the API or the documentation, open an issue on GitHub.