- You can select any field on any chain.
- A field the chain doesn’t have comes back as an all-null column.
- The response lists those fields so you can tell them from real nulls.
How it’s reported
Entries are
<row type>.<column name>, using the snake_case column names, in the order
transactions, logs, blocks. Only fields you selected are listed.
Real nulls vs unavailable fields
A null in a field that isn’t listed is a real null:toon a contract creationbaseFeePerGasbefore Londonstatusbefore Byzantiumtopic3on an event with fewer indexed arguments- an Arbitrum retryable field on an ordinary transaction
unavailable_fields is null in every row on this chain.
Rejecting them instead
If you’d rather get an error than an all-null column, add"strictFields": true. Selecting a
field the chain doesn’t have is then a 400 invalid_query naming every such field, and nothing
is billed:
strictFields is set per request: it works with a queryId too,
and isn’t part of the prepared query, so the same query can be strict on one call and lenient on
the next. Use it when one schema is meant for one chain and a missing field means a mistake.
Finding out ahead of time
GET /v1/schema lists every field with available: true/false for
that chain, plus the chain’s families (base, arbitrum, op_stack). It’s free and needs no
key.
Typos are still errors
Only real field names are accepted.withdrawals on Robinhood Chain is fine (null column);
withdrawls anywhere is a 400.