Public API
For scripts and other software to create reports and update parts. Most inspectors can skip this.
Before you start
Signed-in Free, Individual, and Pro accounts can create API keys in Global Settings → API. The full secret is shown once (keys start with bfi_). Copy it immediately. For MCP instead of REST, see the MCP guide.
How to get there
Create a Bearer token in Global Settings → API. Send Authorization: Bearer bfi_… to /api/v1. Example:
curl https://www.blockforminspection.com/api/v1/reports \ -H "Authorization: Bearer bfi_…"
JSON errors use { error, code }. Authenticated requests are limited to 30 per minute and 600 per hour per account. Over-limit responses are 429 with code: rate_limited and a Retry-After header. Individual vs team catalogs are resolved from the authenticated account.
Endpoint index
| Method | Path | Description | Scope |
|---|---|---|---|
| GET | /api/account/api-keys | List API key metadata (session cookie only) | session |
| POST | /api/account/api-keys | Create an API key; secret is shown once (session cookie only) | session |
| DELETE | /api/account/api-keys/{id} | Revoke an API key (session cookie only) | session |
| GET | /api/v1/reports | List reports | reports:read |
| POST | /api/v1/reports | Create a report | reports:write |
| GET | /api/v1/reports/{id} | Get a report | reports:read |
| PATCH | /api/v1/reports/{id} | Merge header / editorData / statuses | reports:write |
| PUT | /api/v1/reports/{id} | Replace name and/or payload | reports:write |
| DELETE | /api/v1/reports/{id} | Delete a report and its photos | reports:write |
| GET | /api/v1/reports/{id}/blocks | List blocks | reports:read |
| POST | /api/v1/reports/{id}/blocks | Add a sub-block or top-level block | reports:write |
| PUT | /api/v1/reports/{id}/blocks/order | Reorder blocks | reports:write |
| PATCH | /api/v1/reports/{id}/blocks/{key} | Edit analysis, inspection notes, and scalar fields | reports:write |
| DELETE | /api/v1/reports/{id}/blocks/{key} | Delete a block and its sub-blocks | reports:write |
| PUT | /api/v1/reports/{id}/blocks/{key}/inspection-notes | Set inspection notes on a part block | reports:write |
| PUT | /api/v1/reports/{id}/inspection-notes | Set inspection notes by partNumber or sourcePartKey | reports:write |
| PUT | /api/v1/reports/{id}/evaluation-procedures | Link procedures and set part / inspection notes | reports:write |
| POST | /api/v1/reports/{id}/evaluation-procedures/generate-notes | AI-generate inspection notes | reports:write, ai:generate |
| POST | /api/v1/reports/{id}/blocks/{key}/generate-analysis | AI-generate block analysis | reports:write, ai:generate |
| POST | /api/v1/reports/{id}/model | Attach uploaded model keys to header.modelAssets | reports:write, models:write |
| GET | /api/v1/models | List stored CAD / schematic / BOM objects | — |
| POST | /api/v1/models | Multipart upload (file + kind: step|glb|schematic|bom) | models:write |
| DELETE | /api/v1/models | Delete by objectKey | models:write |
| GET | /api/v1/parts | List the parts library | — |
| POST | /api/v1/parts | Create a part | parts:write |
| POST | /api/v1/parts/generate-identity | Bulk AI-fill identity fields | parts:write, ai:generate |
| GET | /api/v1/parts/{id} | Get one part | — |
| PATCH | /api/v1/parts/{id} | Update part number, names, OEM/MFR/customer, photo guide | parts:write |
| DELETE | /api/v1/parts/{id} | Delete a part | parts:write |
| PUT | /api/v1/parts/{id}/identity | Set part name and OEM/MFR/customer cross-refs | parts:write |
| POST | /api/v1/parts/{id}/generate-identity | AI-fill identity fields | parts:write, ai:generate |
| PATCH | /api/v1/parts/{id}/tags | Replace tagIds | parts:write, tags:write |
| GET | /api/v1/parts/{id}/photo-guide | Read inspectionPhotoInstructions | — |
| PATCH | /api/v1/parts/{id}/photo-guide | Write inspectionPhotoInstructions | parts:write |
| GET | /api/v1/tags | List tags | catalogs:read |
| POST | /api/v1/tags | Create a tag | catalogs:write |
| PATCH | /api/v1/tags/{id} | Update name, color, applyTo, AI modifier | catalogs:write |
| DELETE | /api/v1/tags/{id} | Delete a tag | catalogs:write |
| GET | /api/v1/manufacturers | List manufacturers | catalogs:read |
| POST | /api/v1/manufacturers | Create a manufacturer | catalogs:write |
| GET | /api/v1/manufacturers/{id} | Get a manufacturer | catalogs:read |
| PATCH | /api/v1/manufacturers/{id} | Update a manufacturer | catalogs:write |
| DELETE | /api/v1/manufacturers/{id} | Delete a manufacturer | catalogs:write |
| GET | /api/v1/oems | List OEMs | catalogs:read |
| POST | /api/v1/oems | Create an OEM | catalogs:write |
| GET | /api/v1/oems/{id} | Get an OEM | catalogs:read |
| PATCH | /api/v1/oems/{id} | Update an OEM | catalogs:write |
| DELETE | /api/v1/oems/{id} | Delete an OEM | catalogs:write |
| GET | /api/v1/inspection-procedures | List evaluation procedures | catalogs:read |
| POST | /api/v1/inspection-procedures | Create an evaluation procedure | catalogs:write |
| GET | /api/v1/inspection-procedures/{id} | Get an evaluation procedure | catalogs:read |
| PATCH | /api/v1/inspection-procedures/{id} | Update an evaluation procedure | catalogs:write |
| DELETE | /api/v1/inspection-procedures/{id} | Delete an evaluation procedure | catalogs:write |
| POST | /api/v1/inspection-procedures/{id}/generate-notes | AI-draft catalog procedure notes | catalogs:write, ai:generate |
| GET | /api/v1/repair-codes | List repair codes | catalogs:read |
| POST | /api/v1/repair-codes | Create a repair code | catalogs:write |
| PATCH | /api/v1/repair-codes/{id} | Update a repair code | catalogs:write |
| DELETE | /api/v1/repair-codes/{id} | Delete a repair code | catalogs:write |
| GET | /api/v1/customers | List customers (Pro) | catalogs:read |
| POST | /api/v1/customers | Create a customer (Pro) | catalogs:write |
| PATCH | /api/v1/customers/{id} | Update a customer (Pro) | catalogs:write |
| DELETE | /api/v1/customers/{id} | Delete a customer (Pro) | catalogs:write |
| GET | /api/v1/vendors | List vendors (Pro) | catalogs:read |
| POST | /api/v1/vendors | Create a vendor (Pro) | catalogs:write |
| PATCH | /api/v1/vendors/{id} | Update a vendor (Pro) | catalogs:write |
| DELETE | /api/v1/vendors/{id} | Delete a vendor (Pro) | catalogs:write |
| GET | /api/v1/part-block-templates | List part block templates | catalogs:read |
| POST | /api/v1/part-block-templates | Create a part block template | catalogs:write |
| PATCH | /api/v1/part-block-templates/{id} | Update a part block template | catalogs:write |
| DELETE | /api/v1/part-block-templates/{id} | Delete a part block template | catalogs:write |
| GET | /api/v1/report-settings | Get report format, appearance, and company branding | settings:read |
| PATCH | /api/v1/report-settings | Patch report settings including colors and company page | settings:write |
| POST | /api/v1/report-settings/logo | Upload company logo (Pro) | settings:write |
| DELETE | /api/v1/report-settings/logo | Clear company logo | settings:write |
| POST | /api/v1/report-settings/badge | Upload company badge (Pro) | settings:write |
| DELETE | /api/v1/report-settings/badge | Clear company badge | settings:write |
| GET | /api/v1/ai-prompts | Read helper prompts | ai:read |
| PATCH | /api/v1/ai-prompts | Edit helper prompts including evaluationProcedureNotes | ai:write |
| POST | https://mcp.blockforminspection.com/mcp | Streamable HTTP MCP endpoint (Cloudflare Worker) | — |
| GET | https://mcp.blockforminspection.com/.well-known/oauth-authorization-server | MCP OAuth metadata | — |
| GET | https://mcp.blockforminspection.com/authorize | MCP OAuth authorize | — |
| POST | https://mcp.blockforminspection.com/oauth/token | MCP OAuth token | — |
| POST | https://mcp.blockforminspection.com/oauth/register | MCP dynamic client registration | — |
Try it out
Authorize with your API key, then expand any operation. OpenAPI spec: /api/v1/openapi.json.
If you get stuck
401— the key is missing, mistyped, or revoked. Create a new key in Global Settings → API.429— wait for theRetry-Afterheader (30/min and 600/hour).