openapi: 3.0.0 info: title: Flow Experimental API description: | Experimental API endpoints for the Flow Access Node. These endpoints are subject to change without notice. Endpoints may be moved to a permanent API once they are stable. version: 0.1.0 servers: - url: https://rest-testnet.onflow.org description: Flow Testnet - url: https://rest-mainnet.onflow.org description: Flow Mainnet security: [] tags: - name: Accounts description: Endpoints for querying account-related data. - name: ScheduledTransactions description: Endpoints for querying scheduled transaction data. paths: /experimental/v1/accounts/{address}/transactions: get: summary: Get account transactions description: | Returns a paginated list of transactions for the given account address, ordered descending by block height (newest first). operationId: getAccountTransactions tags: - Accounts parameters: - name: address in: path required: true description: The account address (hex-encoded without 0x prefix). schema: $ref: '#/components/schemas/Address' - $ref: '#/components/parameters/cursorParam' - $ref: '#/components/parameters/limitParam' - $ref: '#/components/parameters/rolesParam' - $ref: '#/components/parameters/expandParam' - $ref: '#/components/parameters/selectParam' responses: "200": description: A page of account transactions. content: application/json: schema: $ref: "#/components/schemas/AccountTransactionsResponse" "400": description: Bad request (invalid address, cursor, or limit). content: application/json: schema: $ref: "#/components/schemas/Error" "404": description: No account found for the given address. content: application/json: schema: $ref: "#/components/schemas/Error" "429": description: Too many requests. content: application/json: schema: $ref: "#/components/schemas/Error" /experimental/v1/accounts/{address}/ft/transfers: get: summary: Get account fungible token transfers description: | Returns a paginated list of fungible token transfers for the given account address, ordered descending by block height (newest first). operationId: getAccountFungibleTransfers tags: - Accounts parameters: - name: address in: path required: true description: The account address (hex-encoded without 0x prefix). schema: $ref: '#/components/schemas/Address' - $ref: '#/components/parameters/cursorParam' - $ref: '#/components/parameters/limitParam' - $ref: '#/components/parameters/tokenTypeParam' - $ref: '#/components/parameters/sourceAddressParam' - $ref: '#/components/parameters/recipientAddressParam' - $ref: '#/components/parameters/transferRoleParam' - $ref: '#/components/parameters/expandParam' - $ref: '#/components/parameters/selectParam' responses: "200": description: A page of fungible token transfers. content: application/json: schema: $ref: "#/components/schemas/AccountFungibleTransfersResponse" "400": description: Bad request (invalid address, cursor, or limit). content: application/json: schema: $ref: "#/components/schemas/Error" "404": description: No account found for the given address. content: application/json: schema: $ref: "#/components/schemas/Error" "429": description: Too many requests. content: application/json: schema: $ref: "#/components/schemas/Error" /experimental/v1/accounts/{address}/nft/transfers: get: summary: Get account non-fungible token transfers description: | Returns a paginated list of non-fungible token transfers for the given account address, ordered descending by block height (newest first). operationId: getAccountNonFungibleTransfers tags: - Accounts parameters: - name: address in: path required: true description: The account address (hex-encoded without 0x prefix). schema: $ref: '#/components/schemas/Address' - $ref: '#/components/parameters/cursorParam' - $ref: '#/components/parameters/limitParam' - $ref: '#/components/parameters/tokenTypeParam' - $ref: '#/components/parameters/sourceAddressParam' - $ref: '#/components/parameters/recipientAddressParam' - $ref: '#/components/parameters/transferRoleParam' - $ref: '#/components/parameters/expandParam' - $ref: '#/components/parameters/selectParam' responses: "200": description: A page of non-fungible token transfers. content: application/json: schema: $ref: "#/components/schemas/AccountNonFungibleTransfersResponse" "400": description: Bad request (invalid address, cursor, or limit). content: application/json: schema: $ref: "#/components/schemas/Error" "404": description: No account found for the given address. content: application/json: schema: $ref: "#/components/schemas/Error" "429": description: Too many requests. content: application/json: schema: $ref: "#/components/schemas/Error" /experimental/v1/scheduled: get: summary: List scheduled transactions description: | Returns a paginated list of scheduled transactions, ordered descending by scheduled transaction identifier (newest first). Results can be filtered by status, priority, time range, and transaction handler properties. operationId: getScheduledTransactions tags: - ScheduledTransactions parameters: - $ref: '#/components/parameters/cursorParam' - $ref: '#/components/parameters/limitParam' - $ref: '#/components/parameters/scheduledStatusesParam' - $ref: '#/components/parameters/priorityParam' - $ref: '#/components/parameters/startTimeParam' - $ref: '#/components/parameters/endTimeParam' - $ref: '#/components/parameters/handlerOwnerParam' - $ref: '#/components/parameters/handlerTypeIdentifierParam' - $ref: '#/components/parameters/handlerUuidParam' - $ref: '#/components/parameters/expandParam' - $ref: '#/components/parameters/selectParam' responses: "200": description: A page of scheduled transactions. content: application/json: schema: $ref: "#/components/schemas/ScheduledTransactionsResponse" "400": description: Bad request (invalid filter parameters, cursor, or limit). content: application/json: schema: $ref: "#/components/schemas/Error" "429": description: Too many requests. content: application/json: schema: $ref: "#/components/schemas/Error" /experimental/v1/scheduled/transaction/{id}: get: summary: Get scheduled transaction by ID description: Returns the scheduled transaction with the given ID. operationId: getScheduledTransactionByID tags: - ScheduledTransactions parameters: - name: id in: path required: true description: The scheduled transaction identifier (hex-encoded). schema: $ref: '#/components/schemas/Identifier' - $ref: '#/components/parameters/expandParam' - $ref: '#/components/parameters/selectParam' responses: "200": description: The scheduled transaction. content: application/json: schema: $ref: "#/components/schemas/ScheduledTransaction" "400": description: Bad request (invalid transaction ID). content: application/json: schema: $ref: "#/components/schemas/Error" "404": description: No scheduled transaction found for the given ID. content: application/json: schema: $ref: "#/components/schemas/Error" "429": description: Too many requests. content: application/json: schema: $ref: "#/components/schemas/Error" /experimental/v1/scheduled/account/{address}: get: summary: List scheduled transactions for an account description: | Returns a paginated list of scheduled transactions associated with the given account address, ordered descending by scheduled time (newest first). Results can be filtered by status, priority, time range, and transaction handler properties. operationId: getScheduledTransactionsByAccount tags: - ScheduledTransactions - Accounts parameters: - name: address in: path required: true description: The account address (hex-encoded without 0x prefix). schema: $ref: '#/components/schemas/Address' - $ref: '#/components/parameters/cursorParam' - $ref: '#/components/parameters/limitParam' - $ref: '#/components/parameters/scheduledStatusesParam' - $ref: '#/components/parameters/priorityParam' - $ref: '#/components/parameters/startTimeParam' - $ref: '#/components/parameters/endTimeParam' - $ref: '#/components/parameters/handlerOwnerParam' - $ref: '#/components/parameters/handlerTypeIdentifierParam' - $ref: '#/components/parameters/handlerUuidParam' - $ref: '#/components/parameters/expandParam' - $ref: '#/components/parameters/selectParam' responses: "200": description: A page of scheduled transactions. content: application/json: schema: $ref: "#/components/schemas/ScheduledTransactionsResponse" "400": description: Bad request (invalid address, filter parameters, cursor, or limit). content: application/json: schema: $ref: "#/components/schemas/Error" "404": description: No account found for the given address. content: application/json: schema: $ref: "#/components/schemas/Error" "429": description: Too many requests. content: application/json: schema: $ref: "#/components/schemas/Error" components: parameters: cursorParam: description: Opaque pagination cursor from a previous response's `next_cursor` field. name: cursor in: query schema: $ref: '#/components/schemas/Cursor' required: false limitParam: description: The maximum number of results to return. name: limit in: query schema: type: integer minimum: 1 maximum: 200 default: 50 required: false rolesParam: description: A comma-separated list indicating which roles to filter by. name: roles in: query schema: $ref: '#/components/schemas/Role' minItems: 1 uniqueItems: true explode: false style: form required: false expandParam: description: A comma-separated list indicating which properties of the content to expand. name: expand in: query schema: type: array items: type: string minItems: 1 uniqueItems: true explode: false style: form required: false selectParam: description: A comma-separated list indicating which properties of the content to return. name: select in: query schema: type: array items: type: string minItems: 1 uniqueItems: true explode: false style: form required: false tokenTypeParam: description: Filter by fully qualified token type (e.g. `A.1654653399040a61.FlowToken`). name: token_type in: query schema: type: string required: false sourceAddressParam: description: Filter by the sender address of the transfer. name: source_address in: query schema: $ref: '#/components/schemas/Address' required: false recipientAddressParam: description: Filter by the recipient address of the transfer. name: recipient_address in: query schema: $ref: '#/components/schemas/Address' required: false transferRoleParam: description: Filter by the account's role in the transfer. If unset, returns both sent and received transfers. name: role in: query schema: $ref: '#/components/schemas/TransferRole' required: false scheduledStatusesParam: description: A comma-separated list of scheduled transaction statuses to filter by. name: statuses in: query schema: type: array items: $ref: '#/components/schemas/ScheduledTransactionStatus' minItems: 1 uniqueItems: true explode: false style: form required: false priorityParam: description: Filter by scheduled transaction priority. name: priority in: query schema: $ref: '#/components/schemas/ScheduledTransactionPriority' required: false startTimeParam: description: Filter to include only scheduled transactions with a scheduled time at or after this value (inclusive, RFC 3339). name: start_time in: query schema: type: string format: date-time required: false endTimeParam: description: Filter to include only scheduled transactions with a scheduled time at or before this value (inclusive, RFC 3339). name: end_time in: query schema: type: string format: date-time required: false handlerOwnerParam: description: Filter by the address of the account that owns the transaction handler. name: handler_owner in: query schema: $ref: '#/components/schemas/Address' required: false handlerTypeIdentifierParam: description: Filter by the Cadence type identifier of the transaction handler (e.g. `A.1654653399040a61.MyScheduler.Handler`). name: handler_type_identifier in: query schema: type: string required: false handlerUuidParam: description: Filter by the UUID of the transaction handler resource. name: handler_uuid in: query schema: type: string format: uint64 required: false schemas: AccountTransactionsResponse: type: object required: - transactions properties: transactions: type: array items: $ref: "#/components/schemas/AccountTransaction" next_cursor: $ref: '#/components/schemas/Cursor' AccountTransaction: type: object required: - block_height - timestamp - transaction_id - transaction_index - roles - _expandable properties: block_height: description: Block height where the transaction was included. type: string format: uint64 timestamp: description: Timestamp of the block where the transaction was included. type: string format: date-time transaction_id: $ref: '#/components/schemas/Identifier' transaction_index: description: Index of the transaction within the block. type: string format: uint32 roles: type: array items: type: string enum: - authorizer - payer - proposer - interacted transaction: $ref: '#/components/schemas/Transaction' result: $ref: '#/components/schemas/TransactionResult' _expandable: type: object description: Contains URI links for fields not included in the response. When a field is expanded via the `expand` query parameter, it appears inline and is removed from `_expandable`. properties: transaction: type: string format: uri description: Link to fetch the full transaction body. result: type: string format: uri description: Link to fetch the transaction result. _links: $ref: '#/components/schemas/Links' Address: description: The 8-byte address of an account. type: string format: hexadecimal pattern: '^[a-fA-F0-9]{16}$' Cursor: description: Opaque pagination cursor from a previous response's `next_cursor` field. type: string format: base64 Event: type: object required: - type - transaction_id - transaction_index - event_index - payload properties: type: $ref: '#/components/schemas/EventType' transaction_id: $ref: '#/components/schemas/Identifier' transaction_index: type: string format: uint64 event_index: type: string format: uint64 payload: type: string format: byte EventType: description: The qualified event type. type: string Identifier: description: A 32-byte unique identifier for an entity. type: string format: hexadecimal pattern: '^[a-fA-F0-9]{64}$' Links: type: object properties: _self: type: string ProposalKey: type: object required: - address - key_index - sequence_number properties: address: $ref: '#/components/schemas/Address' key_index: type: string format: uint64 sequence_number: type: string format: uint64 Role: type: string enum: - authorizer - payer - proposer - interacted Signature: description: A variable length signature. type: string format: byte Transaction: type: object required: - id - script - arguments - reference_block_id - gas_limit - payer - proposal_key - authorizers - payload_signatures - envelope_signatures - _expandable properties: id: $ref: '#/components/schemas/Identifier' script: type: string format: base64 description: Base64 encoded Cadence script. arguments: type: array description: Array of Base64 encoded arguments with in [JSON-Cadence interchange format](https://docs.onflow.org/cadence/json-cadence-spec/). items: type: string format: byte reference_block_id: $ref: '#/components/schemas/Identifier' gas_limit: type: string format: uint64 description: The limit on the amount of computation a transaction is allowed to perform. payer: $ref: '#/components/schemas/Address' proposal_key: $ref: '#/components/schemas/ProposalKey' authorizers: type: array items: $ref: '#/components/schemas/Address' payload_signatures: type: array items: $ref: '#/components/schemas/TransactionSignature' envelope_signatures: type: array items: $ref: '#/components/schemas/TransactionSignature' result: $ref: '#/components/schemas/TransactionResult' _expandable: type: object properties: result: type: string format: uri _links: $ref: '#/components/schemas/Links' TransactionResult: type: object required: - block_id - collection_id - status - status_code - error_message - computation_used - events properties: block_id: $ref: '#/components/schemas/Identifier' collection_id: $ref: '#/components/schemas/Identifier' execution: $ref: '#/components/schemas/TransactionExecution' status: $ref: '#/components/schemas/TransactionStatus' status_code: type: integer error_message: type: string description: Provided transaction error in case the transaction wasn't successful. computation_used: type: string format: uint64 events: type: array items: $ref: '#/components/schemas/Event' _links: $ref: '#/components/schemas/Links' TransactionExecution: type: string description: This value indicates whether the transaction execution succeeded or not, this value should be checked when determining transaction success. enum: - Pending - Success - Failure TransactionStatus: type: string description: This value indicates the state of the transaction execution. Only sealed and expired are final and immutable states. enum: - Pending - Finalized - Executed - Sealed - Expired TransactionSignature: description: Base64 encoded signature. type: object required: - address - key_index - signature properties: address: $ref: '#/components/schemas/Address' key_index: type: string format: uint64 signature: $ref: '#/components/schemas/Signature' AccountFungibleTransfersResponse: type: object required: - transfers properties: transfers: type: array items: $ref: "#/components/schemas/FungibleTokenTransfer" next_cursor: $ref: '#/components/schemas/Cursor' AccountNonFungibleTransfersResponse: type: object required: - transfers properties: transfers: type: array items: $ref: "#/components/schemas/NonFungibleTokenTransfer" next_cursor: $ref: '#/components/schemas/Cursor' FungibleTokenTransfer: type: object required: - transaction_id - block_height - timestamp - transaction_index - event_indices - token_type - amount - source_address - recipient_address - _expandable properties: transaction_id: $ref: '#/components/schemas/Identifier' block_height: description: Block height where the transfer was included. type: string format: uint64 timestamp: description: Timestamp of the block where the transfer was included. type: string format: date-time transaction_index: description: Index of the transaction within the block. type: string format: uint32 event_indices: description: Indices of the events within the transaction that represent this transfer. type: array items: type: string format: uint32 token_type: description: Fully qualified token type identifier (e.g. `A.1654653399040a61.FlowToken`). type: string amount: description: Amount of tokens transferred, as a decimal string. type: string source_address: $ref: '#/components/schemas/Address' recipient_address: $ref: '#/components/schemas/Address' transaction: $ref: '#/components/schemas/Transaction' result: $ref: '#/components/schemas/TransactionResult' _expandable: type: object description: Contains URI links for fields not included in the response. When a field is expanded via the `expand` query parameter, it appears inline and is removed from `_expandable`. properties: transaction: type: string format: uri description: Link to fetch the full transaction body. result: type: string format: uri description: Link to fetch the transaction result. _links: $ref: '#/components/schemas/Links' NonFungibleTokenTransfer: type: object required: - transaction_id - block_height - timestamp - transaction_index - event_indices - token_type - nft_id - source_address - recipient_address - _expandable properties: transaction_id: $ref: '#/components/schemas/Identifier' block_height: description: Block height where the transfer was included. type: string format: uint64 timestamp: description: Timestamp of the block where the transfer was included. type: string format: date-time transaction_index: description: Index of the transaction within the block. type: string format: uint32 event_indices: description: Indices of the events within the transaction that represent this transfer. type: array items: type: string format: uint32 token_type: description: Fully qualified NFT collection type (e.g. `A.1654653399040a61.MyNFT`). type: string nft_id: description: Unique identifier of the NFT within its collection. type: string format: uint64 source_address: $ref: '#/components/schemas/Address' recipient_address: $ref: '#/components/schemas/Address' transaction: $ref: '#/components/schemas/Transaction' result: $ref: '#/components/schemas/TransactionResult' _expandable: type: object description: Contains URI links for fields not included in the response. When a field is expanded via the `expand` query parameter, it appears inline and is removed from `_expandable`. properties: transaction: type: string format: uri description: Link to fetch the full transaction body. result: type: string format: uri description: Link to fetch the transaction result. _links: $ref: '#/components/schemas/Links' TransferRole: type: string enum: - sender - recipient ScheduledTransactionsResponse: type: object required: - scheduled_transactions properties: scheduled_transactions: type: array items: $ref: "#/components/schemas/ScheduledTransaction" next_cursor: $ref: '#/components/schemas/Cursor' ScheduledTransaction: type: object required: - id - status - priority - timestamp - execution_effort - fees - transaction_handler_owner - transaction_handler_type_identifier - transaction_handler_uuid - _expandable properties: id: description: Scheduler-assigned uint64 identifier. type: string format: uint64 status: $ref: '#/components/schemas/ScheduledTransactionStatus' priority: $ref: '#/components/schemas/ScheduledTransactionPriority' timestamp: description: Scheduled execution timestamp as a UFix64 decimal string. type: string execution_effort: description: Execution effort estimate as a UFix64 decimal string. type: string fees: description: Scheduled fee as a UFix64 decimal string. type: string transaction_handler_owner: description: Address of the account that owns the transaction handler. $ref: '#/components/schemas/Address' transaction_handler_type_identifier: description: Fully qualified Cadence type identifier of the transaction handler (e.g. `A.1654653399040a61.MyScheduler.Handler`). type: string transaction_handler_uuid: description: Resource UUID of the transaction handler. type: string format: uint64 transaction_handler_public_path: description: Public path of the transaction handler, if set. type: string fees_returned: description: Fees returned on cancellation, as a UFix64 decimal string. type: string fees_deducted: description: Fees deducted on cancellation, as a UFix64 decimal string. type: string scheduled_transaction_id: description: Flow transaction ID of the scheduling transaction. $ref: '#/components/schemas/Identifier' executed_transaction_id: description: Flow transaction ID of the execution transaction. $ref: '#/components/schemas/Identifier' cancelled_transaction_id: description: Flow transaction ID of the cancellation transaction. $ref: '#/components/schemas/Identifier' failed_transaction_id: description: Flow transaction ID of the failure transaction. $ref: '#/components/schemas/Identifier' transaction: $ref: '#/components/schemas/Transaction' result: $ref: '#/components/schemas/TransactionResult' handler_contract: $ref: '#/components/schemas/Contract' _expandable: type: object description: Contains URI links for fields not included in the response. When a field is expanded via the `expand` query parameter, it appears inline and is removed from `_expandable`. properties: transaction: type: string format: uri description: Link to fetch the full transaction body. result: type: string format: uri description: Link to fetch the transaction result. handler_contract: type: string format: uri description: Link to fetch the Cadence contract that implements the transaction handler. _links: $ref: '#/components/schemas/Links' Contract: type: object required: - identifier - body properties: identifier: description: Unique identifier for the contract (e.g. `A.1654653399040a61.MyContract`). type: string body: description: Full source code of the contract. type: string ScheduledTransactionStatus: type: string description: The current lifecycle status of a scheduled transaction. enum: - scheduled - executed - cancelled - failed ScheduledTransactionPriority: type: string description: The execution priority of a scheduled transaction. enum: - low - medium - high Error: type: object required: - code - message properties: code: type: integer message: type: string