Skip to main content
POST /query/json takes the same body as /query and returns one JSON object: one array per row type you asked for, plus the response metadata.
(A real response, shortened to one row per row type.)

How values are written

Amounts are strings because they can exceed what a JSON number (a 64-bit float) holds exactly: value is in wei and routinely above 2⁵³. Parse them as big integers (BigInt(s), Python int(s)). The integer fields that are JSON numbers stay below 2⁵³ in practice.

Limits

  • Up to 100,000 rows per response. maxObjects is lowered to that, and next_block resumes after the last block returned. Like Arrow pages, a page can overshoot by one block.
  • Built in full before it’s sent. Nothing arrives until the whole response is ready, and it takes more memory on both sides. Prefer /query for anything large.
  • Billed on the JSON size, which is about 2–2.5× the Arrow size of the same rows. See Arrow vs JSON.

Errors

An error is a non-200 status with a JSON body:
See Errors.