Documentation

Webhooks

GET /api/v1/webhooks: the endpoints RoofQuery calls on every order status change, for every product and sandbox too, and what each delivery carries.

API reference

Base URL: https://api.roofquery.com. Authenticate with Authorization: Bearer <your key> — except the file routes (report and storm report files), which take no key.

Copies this whole page as Markdown, so you can paste it into an assistant and have it write the integration. Nothing secret goes on the clipboard — your keys aren't included.

GET /api/v1/webhooks

Your subscribed endpoints. Account-level, like the balance and the keys themselves — one set of endpoints receives events from every report, Storm Reports included (a storm report sends one completed event, in the same envelope, when it's placed). Read-only: subscriptions are created in the portal, not through the API, so a leaked key can't quietly redirect your event stream. Sandbox orders deliver to the same endpoints as live ones.

Also reachable at /api/v1/reports/webhooks, with an identical response.

Request
curl -H "Authorization: Bearer rq_live_sk_..." \
  "https://api.roofquery.com/api/v1/webhooks"
Response
{
  "webhooks": [
    {
      "webhookId": "rqwh_41c8e2f07a93d615",
      "targetUrl": "https://acme.example.com/hooks/roofquery",
      "eventType": "report",
      "eventTypes": ["report"],
      "active": true,
      "createdAt": "2026-06-02T09:14:00.000Z",
      "lastTriggeredAt": "2026-08-12T16:01:49.000Z",
      "deactivatedReason": null
    }
  ]
}

report is the one event stream: every status change of every roof report order. Switch on the payload's status and event fields, described under Order lifecycle.