Flow Archive Node Access API Specification

The Archive Access API is implemented as a gRPC service.

A language-agnostic specification for this API is defined using Protocol Buffers, which can be used to generate client libraries in a variety of programming languages.

Flow archive node access endpoints

The Archive Nodes hosted by DapperLabs are accessible at:

Current Mainnet

archive.mainnet.nodes.onflow.org:9000

Sandboxnet

archive.sandboxnet.nodes.onflow.org:9000

Testnet

archive.devnet.nodes.onflow.org:9000

Canarynet

archive.canary.nodes.onflow.org:9000

Rate limits for Dapper Labs archive nodes

Archive nodes operated by Dapper Labs are rate limited.


Accounts

GetAccountAtBlockHeight

GetAccountAtBlockHeight gets an account by address at the given block height.

The archive node queries an execution node for the account details, which are stored as part of the execution state.

1
rpc GetAccountAtBlockHeight(GetAccountAtBlockHeightRequest) returns (AccountResponse)

Request

1
message GetAccountAtBlockHeightRequest {
2
bytes address
3
uint64 block_height
4
}

Response

1
message AccountResponse {
2
Account account
3
}

Scripts

ExecuteScriptAtBlockID

ExecuteScriptAtBlockID executes a ready-only Cadence script against the execution state at the block with the given ID.

This method can be used to read account state from the blockchain. The script is executed on an execution node and the return value is encoded using the JSON-Cadence data interchange format.

1
rpc ExecuteScriptAtBlockID (ExecuteScriptAtBlockIDRequest) returns (ExecuteScriptResponse)

Request

1
message ExecuteScriptAtBlockIDRequest {
2
bytes block_id
3
bytes script
4
}

Response

1
message ExecuteScriptResponse {
2
bytes value
3
}

ExecuteScriptAtBlockHeight

ExecuteScriptAtBlockHeight executes a ready-only Cadence script against the execution state at the given block height.

This method can be used to read account state from the blockchain. The script is executed on an execution node and the return value is encoded using the JSON-Cadence data interchange format.

1
rpc ExecuteScriptAtBlockHeight (ExecuteScriptAtBlockHeightRequest) returns (ExecuteScriptResponse)

Request

1
message ExecuteScriptAtBlockHeightRequest {
2
uint64 block_height
3
bytes script
4
}

Response

1
message ExecuteScriptResponse {
2
bytes value
3
}