Documentation Index
Fetch the complete documentation index at: https://docs.shoal.xyz/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Thesince parameter lets you fetch only events newer than a given timestamp instead of re-fetching everything.
since is required on /v1/radar/all and /v1/signal/all. Those bulk feed endpoints may be limited to higher-tier plans. It is optional on filtered endpoints like byOrganizationId and byCategory./v1/replay/global instead of trying to stretch the bulk feed endpoints into a
replay API.
How It Works
- First call - fetch recent events:
-
Save the cursor - note the
latestPostTimestampfrom the most recent event in the response (e.g.2026-02-28T06:18:44Z). -
Poll for updates - pass it as the
sinceparameter:
- Handle the response - if
datais empty, nothing new has happened. Otherwise, process the new events and update your cursor.
Supported Endpoints
| Endpoint | since |
|---|---|
GET /v1/radar/all | Required |
GET /v1/signal/all | Required |
GET /v1/radar/byOrganizationId | Optional |
GET /v1/radar/byCategory | Optional |
GET /v1/signal/byOrganizationId | Optional |
GET /v1/signal/byCategory | Optional |
Format
Thesince parameter accepts any valid ISO 8601 timestamp:
2026-02-28T06:18:44Z2026-02-28T06:18:44+00:002026-02-28
since=garbage) are rejected with 400 Bad Request.
Recommended Pattern
Cursor-Based Pagination
If a poll returns a full page of results, the response includes anext_cursor field. You can pass this as the cursor query parameter (along with the same since value) to fetch the next page without using offset. This is especially useful when there are more results than offset limits allow. See the Pagination Guide for details.
Tips
- Recommended polling interval: 60 seconds for most use cases
- Combine with
limit: Usesincetogether withlimitandoffsetfor paginated polling, or usecursorfor cursor-based pagination - First call: use a reasonable recent start time (for example 24 hours ago), not an older historical date