EIP-7702 authorizations of one block
Open this block in TraceFast →
Every EIP-7702 authorization-list entry carried by the transactions of one block: the contract an account delegates its code to, the account that signed it, the chain id and nonce the authorization was signed for, the signature, and the hash and position of the transaction that carried it — in transaction order and then list order. An authorization is an account's signed permission for its code to be set to a delegation to a contract; it travels in a type-4 transaction. See EIP-7702 and transactions on ethereum.org.
GET https://tracefast.xyz/api/v1/chains/1/blocks/{number}/authorizations
| Parameter | In | Type | Notes |
|---|---|---|---|
number | path | integer | block height, 0 or more |
limit | query | integer, optional | 1..100, default 25 |
cursor | query | string, optional | nextCursor of the previous page, unchanged |
Access — an API key on the Enriched Data plan or higher (plans), or no key at all: pay per call with x402 at the same path on https://mpp.tracefast.xyz/api/v1, at the price its 402 states. As a tool for AI agents: get_block_authorizations on the MCP server. Stable — see stability.
chains/1 is a literal: the method serves Ethereum mainnet data. Other chain
ids answer 404 chain_not_supported. There are no other parameters — an
unknown one is refused rather than ignored.
What it covers, and what it does not
- The authorizations as signed, not their effect. An entry is listed whether or not it took effect — the protocol skips an authorization whose nonce or chain id does not match. Whether an account is delegated now is an attribute of the address: see attributes of an address and relations of an address.
- The signer is recovered from the signature, and says so.
authorityis the account that signed — the account whose code is delegated — and is present only whenauthorityStatusisrecovered.recovery_failedmeans the signature is not valid: the authorization has no signer and does not take effect.not_availablemeans the signer is not determined yet — ask again later; it is not a statement that there is no signer. - A delegation to the zero address clears one.
address=0x0000000000000000000000000000000000000000is an account resetting its delegation, per EIP-7702. - An empty list is a block with no type-4 transaction — every block before the Pectra upgrade, and most after it.
- The history trails the chain head. Every answer names its reach in
meta.coverage.authorizationsThroughBlock; an existing block above it is refused with422 block_not_availableand the same bound asmaxAvailableBlock. A block above the chain head does not exist yet and answers404 not_found. See data freshness.
Response
200 application/json, here for block 25925120 with ?limit=2:
{
"data": {
"blockNumber": 25925120,
"authorizations": [
{
"txNumber": 3722531565,
"txHash": "0x9ef423ce94bb8ac8f9ed1290145a71dfe1fed9f859e89bcc84955c4a2a1cbb73",
"txIndex": 16,
"authority": "0x4de23f3f0fb3318287378adbde030cf61714b2f3",
"authorityStatus": "recovered",
"index": 0,
"chainId": 1,
"address": "0x8a67b5020ee254ef48e3b6a04927f39baf7e408a",
"nonce": 444064,
"yParity": 1,
"r": "0x66547eabe7805663c776eef9151f71860792e48e7f504ca10c7799e098b63fe5",
"s": "0x66314b5f10b3933646cd8a171c11134b5f967aaf85694cde0ceef3ee7650e9c6"
},
{
"txNumber": 3722531609,
"txHash": "0x8be9c0f133d7840f50e3504f5cb18085511509257645573b6488406b608af9ae",
"txIndex": 60,
"authority": "0x966cd7e5a005d48f1386ad069e52000e075ffdcd",
"authorityStatus": "recovered",
"index": 0,
"chainId": 1,
"address": "0x2c6f01799fa9db1e7f2797e5ba892b72b865571d",
"nonce": 35,
"yParity": 1,
"r": "0x90dc2ca0a945c97e49cfe057c73b262b3acd11a111e647e6c9f2b21d78662c45",
"s": "0x27b0537961b1650fdf70809bbf0dbd2d4fa27ef3beef62005d1e52ba0e15575b"
}
],
"nextCursor": "AVsyNTkyNTEyMCwzNzIyNTMxNjA5LDBdAS4lzGWrTYIoJSik4KACzA"
},
"meta": {
"chain": "ethereum",
"timestamp": 1789067462135,
"cached": false,
"asOfBlock": 25925120,
"docs": "https://docs.tracefast.xyz/api/block-authorizations",
"coverage": {
"authorizationsThroughBlock": 25925128
}
}
}data
| Field | Meaning |
|---|---|
blockNumber | the block these authorizations belong to |
authorizations[] | this page, in transaction order and then list order. Empty when the block carries no type-4 transaction |
nextCursor | cursor for the next page. Absent on the last page |
An authorization
| Field | Meaning |
|---|---|
txNumber | sequence number of the transaction that carried the entry, counted across the whole chain. It orders the block's transactions; the position inside the block is txIndex |
txHash | hash of the transaction that carried the entry, lowercase |
txIndex | position of that transaction inside the block, from 0 |
authority | the account that signed the authorization — the account whose code is delegated — lowercase. Present only when authorityStatus is recovered |
authorityStatus | whether the signer is known: recovered (authority names it), recovery_failed (the signature is not valid — no signer, and the authorization does not take effect) or not_available (not determined yet — not "no signer") |
index | position of the entry inside that transaction's authorization list, from 0 |
chainId | the chain id the authorization was signed for; 0 means any chain |
address | the contract the account delegates its code to, lowercase |
nonce | the signing account's nonce at the time of signing |
yParity, r, s | the signature: recovery bit, and the r / s components as 0x-hex |
meta.coverage
| Key | Meaning |
|---|---|
authorizationsThroughBlock | the last block the authorization history has reached — the same bound a 422 names as maxAvailableBlock for a block above it. meta.asOfBlock stays the block you asked about |
Pagination
Keyset pagination: pass nextCursor back as cursor, with the same number,
until the response carries no nextCursor. A cursor is valid only for this
method and this block; anything else answers 400 invalid_cursor — restart
from the first page. See pagination.
Errors
| Status | code | When | details |
|---|---|---|---|
| 400 | bad_request | number is not a non-negative integer | reason: block_number_invalid |
| 400 | bad_request | limit outside 1..100 | reason: limit_out_of_range, limit, maxLimit |
| 400 | invalid_cursor | the cursor was not issued for this request | — |
| 404 | not_found | the block is above the chain head — it does not exist yet | — |
| 422 | block_not_available | the block exists but is past the history this method covers | reason: block_not_available, maxAvailableBlock |
| 422 | block_not_available | the block sits in a coverage gap; it exists, ask again later | reason: coverage_gap, coverageGapFromBlock, coverageGapToBlock, maxAvailableBlock |
| 503 | service_unavailable | the coverage boundary could not be read; retry with backoff | — |
Malformed input, unknown parameters and the key check's 401/403/429 are the same for every method — see conventions and API keys.
Related pages
- One block — the block's header and totals
- Transactions of one block — the type-4 transactions that carried these entries (
txType: 4) - Relations of an address — where an account is delegated now
- Attributes of an address — whether an address was ever EIP-7702 delegated
- Blocks — the block page in the app
Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown