Error Handling

Common Errors

ErrorCauseSolution
Missing required field: networkNo network parameterAdd network=ETH (or other network)
Missing required field: block_startNo block range or time rangeAdd block range or time range parameters
Cannot specify both block range and time rangeBoth specifiedUse only one method
Block range too large for json format> 10K blocks with JSONUse format=parquet or reduce range
Network 'X' not supported for protocolWrong networkCheck /v1/{protocol}/networks
Token 'X' not available on networkToken not deployedCheck token availability on that network
Invalid fee tierWrong Uniswap feeUse 100, 500, 3000, or 10000
Mutually exclusiveConflicting filtersUse only one of address/label/category per slot
must not contain quotesSQL safety violationRemove ' and \ from label/category values
Missing required parameter: group_byAggregate endpoint missing group_byAdd group_by=time or group_by=block_number
Missing required parameter: periodAggregate endpoint missing periodAdd period=2h (time) or period=10000 (blocks)
No aggregatable columnsEvent type doesn’t support aggregationCheck /{protocol}/aggregate_schema for supported types
Invalid group_bygroup_by not time or block_numberUse time or block_number
link parameter only supported for csv and parquetlink=true with JSON formatUse format=csv or format=parquet with link=true

Error Response Format

{
  "status": "error",
  "events": [],
  "count": 0,
  "error": "Detailed error message"
}

Retry Strategy

For transient errors (429, 500, 503):

  1. Wait using exponential backoff: 1s, 2s, 4s, 8s…
  2. Check Retry-After header for 429 responses
  3. Maximum 5 retries before failing