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

MethodPathDescriptionScope
GET/api/account/api-keysList API key metadata (session cookie only)session
POST/api/account/api-keysCreate 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/reportsList reportsreports:read
POST/api/v1/reportsCreate a reportreports:write
GET/api/v1/reports/{id}Get a reportreports:read
PATCH/api/v1/reports/{id}Merge header / editorData / statusesreports:write
PUT/api/v1/reports/{id}Replace name and/or payloadreports:write
DELETE/api/v1/reports/{id}Delete a report and its photosreports:write
GET/api/v1/reports/{id}/blocksList blocksreports:read
POST/api/v1/reports/{id}/blocksAdd a sub-block or top-level blockreports:write
PUT/api/v1/reports/{id}/blocks/orderReorder blocksreports:write
PATCH/api/v1/reports/{id}/blocks/{key}Edit analysis, inspection notes, and scalar fieldsreports:write
DELETE/api/v1/reports/{id}/blocks/{key}Delete a block and its sub-blocksreports:write
PUT/api/v1/reports/{id}/blocks/{key}/inspection-notesSet inspection notes on a part blockreports:write
PUT/api/v1/reports/{id}/inspection-notesSet inspection notes by partNumber or sourcePartKeyreports:write
PUT/api/v1/reports/{id}/evaluation-proceduresLink procedures and set part / inspection notesreports:write
POST/api/v1/reports/{id}/evaluation-procedures/generate-notesAI-generate inspection notesreports:write, ai:generate
POST/api/v1/reports/{id}/blocks/{key}/generate-analysisAI-generate block analysisreports:write, ai:generate
POST/api/v1/reports/{id}/modelAttach uploaded model keys to header.modelAssetsreports:write, models:write
GET/api/v1/modelsList stored CAD / schematic / BOM objects
POST/api/v1/modelsMultipart upload (file + kind: step|glb|schematic|bom)models:write
DELETE/api/v1/modelsDelete by objectKeymodels:write
GET/api/v1/partsList the parts library
POST/api/v1/partsCreate a partparts:write
POST/api/v1/parts/generate-identityBulk AI-fill identity fieldsparts:write, ai:generate
GET/api/v1/parts/{id}Get one part
PATCH/api/v1/parts/{id}Update part number, names, OEM/MFR/customer, photo guideparts:write
DELETE/api/v1/parts/{id}Delete a partparts:write
PUT/api/v1/parts/{id}/identitySet part name and OEM/MFR/customer cross-refsparts:write
POST/api/v1/parts/{id}/generate-identityAI-fill identity fieldsparts:write, ai:generate
PATCH/api/v1/parts/{id}/tagsReplace tagIdsparts:write, tags:write
GET/api/v1/parts/{id}/photo-guideRead inspectionPhotoInstructions
PATCH/api/v1/parts/{id}/photo-guideWrite inspectionPhotoInstructionsparts:write
GET/api/v1/tagsList tagscatalogs:read
POST/api/v1/tagsCreate a tagcatalogs:write
PATCH/api/v1/tags/{id}Update name, color, applyTo, AI modifiercatalogs:write
DELETE/api/v1/tags/{id}Delete a tagcatalogs:write
GET/api/v1/manufacturersList manufacturerscatalogs:read
POST/api/v1/manufacturersCreate a manufacturercatalogs:write
GET/api/v1/manufacturers/{id}Get a manufacturercatalogs:read
PATCH/api/v1/manufacturers/{id}Update a manufacturercatalogs:write
DELETE/api/v1/manufacturers/{id}Delete a manufacturercatalogs:write
GET/api/v1/oemsList OEMscatalogs:read
POST/api/v1/oemsCreate an OEMcatalogs:write
GET/api/v1/oems/{id}Get an OEMcatalogs:read
PATCH/api/v1/oems/{id}Update an OEMcatalogs:write
DELETE/api/v1/oems/{id}Delete an OEMcatalogs:write
GET/api/v1/inspection-proceduresList evaluation procedurescatalogs:read
POST/api/v1/inspection-proceduresCreate an evaluation procedurecatalogs:write
GET/api/v1/inspection-procedures/{id}Get an evaluation procedurecatalogs:read
PATCH/api/v1/inspection-procedures/{id}Update an evaluation procedurecatalogs:write
DELETE/api/v1/inspection-procedures/{id}Delete an evaluation procedurecatalogs:write
POST/api/v1/inspection-procedures/{id}/generate-notesAI-draft catalog procedure notescatalogs:write, ai:generate
GET/api/v1/repair-codesList repair codescatalogs:read
POST/api/v1/repair-codesCreate a repair codecatalogs:write
PATCH/api/v1/repair-codes/{id}Update a repair codecatalogs:write
DELETE/api/v1/repair-codes/{id}Delete a repair codecatalogs:write
GET/api/v1/customersList customers (Pro)catalogs:read
POST/api/v1/customersCreate 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/vendorsList vendors (Pro)catalogs:read
POST/api/v1/vendorsCreate 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-templatesList part block templatescatalogs:read
POST/api/v1/part-block-templatesCreate a part block templatecatalogs:write
PATCH/api/v1/part-block-templates/{id}Update a part block templatecatalogs:write
DELETE/api/v1/part-block-templates/{id}Delete a part block templatecatalogs:write
GET/api/v1/report-settingsGet report format, appearance, and company brandingsettings:read
PATCH/api/v1/report-settingsPatch report settings including colors and company pagesettings:write
POST/api/v1/report-settings/logoUpload company logo (Pro)settings:write
DELETE/api/v1/report-settings/logoClear company logosettings:write
POST/api/v1/report-settings/badgeUpload company badge (Pro)settings:write
DELETE/api/v1/report-settings/badgeClear company badgesettings:write
GET/api/v1/ai-promptsRead helper promptsai:read
PATCH/api/v1/ai-promptsEdit helper prompts including evaluationProcedureNotesai:write
POSThttps://mcp.blockforminspection.com/mcpStreamable HTTP MCP endpoint (Cloudflare Worker)
GEThttps://mcp.blockforminspection.com/.well-known/oauth-authorization-serverMCP OAuth metadata
GEThttps://mcp.blockforminspection.com/authorizeMCP OAuth authorize
POSThttps://mcp.blockforminspection.com/oauth/tokenMCP OAuth token
POSThttps://mcp.blockforminspection.com/oauth/registerMCP 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 the Retry-After header (30/min and 600/hour).