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.
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.
curl -H "Authorization: Bearer rq_live_sk_..." \
"https://api.roofquery.com/api/v1/webhooks"
{
"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.