Error Handling
Common Errors
| Error | Cause | Solution |
|---|---|---|
Missing required field: network | No network parameter | Add network=ETH (or other network) |
Missing required field: block_start | No block range or time range | Add block range or time range parameters |
Cannot specify both block range and time range | Both specified | Use only one method |
Block range too large for json format | > 10K blocks with JSON | Use format=parquet or reduce range |
Network 'X' not supported for protocol | Wrong network | Check /v1/{protocol}/networks |
Token 'X' not available on network | Token not deployed | Check token availability on that network |
Invalid fee tier | Wrong Uniswap fee | Use 100, 500, 3000, or 10000 |
Mutually exclusive | Conflicting filters | Use only one of address/label/category per slot |
must not contain quotes | SQL safety violation | Remove ' and \ from label/category values |
Missing required parameter: group_by | Aggregate endpoint missing group_by | Add group_by=time or group_by=block_number |
Missing required parameter: period | Aggregate endpoint missing period | Add period=2h (time) or period=10000 (blocks) |
No aggregatable columns | Event type doesn’t support aggregation | Check /{protocol}/aggregate_schema for supported types |
Invalid group_by | group_by not time or block_number | Use time or block_number |
link parameter only supported for csv and parquet | link=true with JSON format | Use 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):
- Wait using exponential backoff: 1s, 2s, 4s, 8s…
- Check
Retry-Afterheader for 429 responses - Maximum 5 retries before failing