REST API

    Automate thermographic inspections from your own stack

    A full REST API to create clients, equipment, and inspection reports programmatically. Available on Team and Enterprise plans.

    Included on Team and Enterprise plans

    What the API does

    Mirrors the same resources as the web app — clients, sites, sectors, equipment, inspections, and measurement points — with a stable JSON contract versioned at `/api/v1`. Ideal for syncing a CRM, automating periodic report creation, or feeding an internal dashboard with thermography data.

    Full CRUD

    GET/POST/PUT/DELETE on every core domain resource.

    JSON responses

    Predictable payloads with UUIDs, ISO-8601 timestamps, and explicit nullable fields.

    Simple pagination

    `?limit=` and `?offset=` on list endpoints; up to 200 items per page.

    Tenant isolation

    The key resolves partner_id for you — you only see your organization's data.

    Authentication

    Every request requires an `X-API-Key` header. Keys start with `trml_` and are shown in plaintext only at creation — after that only a preview remains. Lost the key? Revoke and create a new one.

    1. 1Open Settings → API in the app (visible to admins of Team+ organizations).
    2. 2Click "Create key", give it a descriptive name (e.g., "Production ERP"), and copy the returned value — it appears only once.
    3. 3Send on every request: `X-API-Key: trml_...`

    Quickstart

    List clients in your organization. Replace `trml_your_key_here` with the key created in the previous step.

    cURL example
    curl -X GET "https://termal-api.thermalreports.com/api/v1/clients" \
      -H "X-API-Key: trml_your_key_here" \
      -H "Accept: application/json"

    Core endpoints

    Resources are grouped by domain hierarchy (client → site → sector → equipment → inspection). The full reference, with every field and error code, lives in the Swagger UI.

    Clients

    /api/v1/clients
    GET/api/v1/clientsList clients in your org.
    POST/api/v1/clientsCreate a client.
    PUT/api/v1/clients/{id}Update client.
    DELETE/api/v1/clients/{id}Delete client.

    Sites & sectors

    /api/v1/units, /api/v1/sectors
    GET/api/v1/unitsList sites for a client.
    POST/api/v1/unitsCreate a site.
    GET/api/v1/sectorsList sectors for a site.
    POST/api/v1/sectorsCreate a sector.

    Equipment

    /api/v1/equipments
    GET/api/v1/equipmentsList equipment in a sector.
    POST/api/v1/equipmentsCreate equipment (TAG, description, criticality).
    DELETE/api/v1/equipments/{id}Delete equipment.

    Inspections

    /api/v1/inspections
    GET/api/v1/inspectionsList inspections (filter by client/date range).
    POST/api/v1/inspectionsCreate a new inspection.
    PUT/api/v1/inspections/{id}Update inspection metadata.
    GET/api/v1/inspections/{id}/pointsList measurement points.
    POST/api/v1/inspections/{id}/pointsAdd a point (ΔT, IR image, recommendation).

    Organization & logs

    /api/v1/partner, /api/v1/stats
    GET/api/v1/partnerYour organization details.
    GET/api/v1/profilesList users (engineers/inspectors).
    GET/api/v1/statsDashboard counters.
    GET/api/v1/access-logsAPI access history.

    Limits & quotas

    The API is designed for daily integrations, not bulk ingestion.

    • •10,000 requests per month, per key, on Team.
    • •Enterprise: custom limit — talk to sales.
    • •Monthly counter resets on day 1 of each month (UTC).
    • •`429 Too Many Requests` when the quota is hit; `Retry-After` header tells you when it reopens.

    Common error codes

    200Success.
    201Created — returned on successful POSTs.
    400Invalid payload (missing required field, wrong type).
    401Key missing, invalid, or revoked.
    403Plan has no API access (Starter/Professional).
    404Resource not found or outside your tenant.
    429Monthly quota hit or short-term rate limit.
    500Internal error — please reach support if it persists.

    FAQ

    Ready to integrate?

    Subscribe to Team and generate your first key under Settings → API.