You do not need to send a list of radar IDs to retrieve your account’s inventory
or updates. The examples below cover all radar types.
Reconcile your radar inventory
Start with a request for up to 500 radars. Omitradar_status to include both
active and inactive radars, and omit created_since to include older radars.
- Read the radar records from
data. - Insert or update each local record using
radar_idas its key. Save the returnedradar_status, includinginactive. - If
has_moreistrue, request the next page with the returnednext_cursorascursor. Repeat untilhas_moreisfalse.
count is the number of radars on that
page, not the total on your account.
If you supplied your own record ID in custom_fields when creating a radar,
use it to connect the returned radar to the record in your system. Keep
radar_id as the key for the radar itself.
created_since filters creation time only. It does not find older radars whose
status changed. To refresh their status, list them again without that filter.Recover missed updates
Use polling alongside webhooks, or on its own. Both delivery paths useupdate_id, so you can store each update once even if it arrives through both.
For the first sync, choose a since timestamp for the period you need, or omit
it to retrieve all retained updates. For later syncs, start about one minute
before the bookmark from your last completed sync.
For example, if your saved bookmark is 2026-05-01T08:00:00Z, start at 07:59:00Z:
GET /v1/updates returns radar_finding only. The example requests
both findings and radar_failure updates from the feed.
Use this loop:
- Keep
sinceand all filters fixed for the entire traversal. - Store each item in
updates, deduplicating byupdate_id. Repeated items must not trigger the same downstream action twice. - While
has_moreistrue, sendnext_cursorascursorwith the samesinceand filters. - Only after every page is successfully stored, save the highest
discovered_atseen as the new bookmark. If no updates were returned, keep the existing bookmark.
since value that covers the history you need.
discovered_at is the time an update was added to your feed. The one-minute
overlap reduces the risk of missing an update being added while you poll; it is
not a guarantee. Updates are retained for about 60 days. Poll well within
that window and keep your own copy for longer history. Polling cannot recover
updates that have already been purged.
The polling since parameter filters updates already in your feed. It does not
change a radar’s updates_since, which controls historical source-event
eligibility. See Poll Updates for the full contract.
Reconcile bulk creation
A202 Accepted response means the submission was queued. It does not mean every
radar was created.
- Save the returned
bulk_idand your submitted items immediately. - Poll
GET /v1/radars/bulk/{bulk_id}until the top-levelstatusiscompleted. - Match each item in
radarsto your submitted item usingitem_index, the zero-based position within that batch. Usecustom_fieldsfor your own record mapping when supplied. - For an item with
status: "success", storedata.radar_id. For an item withstatus: "error", store itscode,message, anderrorsfor review. Also saveerror_idwhen present so you can include it in a support request.
completed means every item has a final outcome, including failures. Finished
items have an update_id that matches the item’s webhook outcome, so polling
and webhook handling can share the same deduplication key.
A failed attempt to create an item in a bulk submission also uses
update_type: "radar_failure". That creation outcome is returned through bulk
status and configured webhooks, not GET /v1/updates. It is separate from the
radar_failure updates available in the polling feed.
See the Bulk Create Guide for submission examples and
Get Bulk Create Status for per-item response fields.
Resume after an interruption
For other errors, follow Error Handling. See
Authentication & Rate Limits for read
budgets and retry headers.