Skip to main content
Shoal API uses simple limit and offset query parameters on list endpoints.

Parameters

  • limit: number of items to return (default: 50, max: 50)
  • offset: number of items to skip (default: 0, max: 500)
Values above the maximum are silently capped. Negative values are clamped to the minimum (1 for limit, 0 for offset).

Example

curl "https://api.shoal.xyz/v1/radar/all?since=2026-02-01T00:00:00Z&limit=50&offset=100" \
  -H "Authorization: Bearer YOUR_API_KEY"
To fetch the next page, increase offset by limit.

Caps

All list endpoints enforce the same caps:
ParameterDefaultMaximum
limit5050
offset0500
This means a single API key can access up to 550 items per query window (offset 0..500 with limit 50). Use the since parameter to filter by time instead of paginating deeply.

Cursor-Based Pagination

For large result sets that exceed offset limits, radar and signal endpoints support cursor-based pagination via the cursor and next_cursor fields.

How It Works

  1. Make a normal request with since (and optionally limit).
  2. If the response includes a non-null next_cursor, more results are available.
  3. Pass next_cursor as the cursor query parameter on your next request, along with the same since value.
  4. Repeat until next_cursor is null.
When cursor is provided, offset is ignored.

Example

# First page
curl "https://api.shoal.xyz/v1/radar/all?since=2026-02-01T00:00:00Z&limit=50" \
  -H "Authorization: Bearer YOUR_API_KEY"
# Response includes: "next_cursor": "eyJ0cyI6Ii4uLiIsImlkIjo2NTB9"

# Next page — pass cursor, keep the same since value
curl "https://api.shoal.xyz/v1/radar/all?since=2026-02-01T00:00:00Z&limit=50&cursor=eyJ0cyI6Ii4uLiIsImlkIjo2NTB9" \
  -H "Authorization: Bearer YOUR_API_KEY"

Details

  • The cursor is a base64url-encoded JSON token. Treat it as opaque — do not decode or modify it.
  • The since parameter is required when using cursor. The cursor is bound to the original query context; changing since between pages will return an error.
  • offset is ignored when cursor is present.
  • When next_cursor is null, you have reached the end of the result set.