LedgerReadService
List Transfers
List transfer history for an account. Supports optional subaccount, asset, ordering, cursor, and hold-state filters.
Request
curl --request GET \ \ --url 'https://api.testnet.polyester.com/v1/transfers?ledger=1&limit=100&page_token=eyJvZmZzZXQiOjEwMH0&reversed=false&subaccount_id=6789012345678' \ --header 'Accept: */*' \ --header 'X-API-KEY-ID: YOUR_API_KEY_ID' \ --header 'X-API-TIMESTAMP: YOUR_API_TIMESTAMP' \ --header 'X-API-SIGNATURE: YOUR_API_SIGNATURE'
Responses
{
"nextPageToken": "eyJvZmZzZXQiOjIwMH0",
"transfers": [
{
"account": "FUNDING",
"amount": "18.446744073709551617",
"asset": "USDT",
"balanceAfter": "18.446744073709551617",
"destination": {
"accountId": "4Rh4iXdT",
"address": "0x3333333333333333333333333333333333333333",
"chainId": 1,
"kind": "FUNDING_ACCOUNT"
},
"flowId": "flow_7YWHMfk9JZeLMgZauHuiSxhI",
"isDebit": false,
"linkId": "1",
"source": {
"accountId": "4Rh4iXdT",
"address": "0x3333333333333333333333333333333333333333",
"chainId": 1,
"kind": "FUNDING_ACCOUNT"
},
"timestamp": "1",
"transferCode": "DEPOSIT"
}
]
}Optional public asset filter.
Maximum rows to return (default 100, max 1000).
Opaque keyset cursor returned by the previous response.
true=newest first; false=oldest first.
Optional subaccount public id (base58).
Opaque cursor for the next page. Empty when no more results exist.
eyJvZmZzZXQiOjIwMH0Account bucket affected by this transfer.
FUNDINGTransfer amount at fixed 18-decimal ledger scale.
18.446744073709551617Public unified asset ID. Resolve its symbol through the spot configuration API. U128 amounts in this row always use a fixed 18-decimal ledger scale.
USDTPost-transfer balance at fixed 18-decimal ledger scale.
18.446744073709551617Public root account or subaccount ID when this side is safe to identify. Never populated for private counterparties or non-user ledger accounts.
4Rh4iXdTAddress for this side when known. For EXTERNAL_ADDRESS this is an external-chain wallet address from lifecycle correlation; for identifiable Polyester accounts this is a Polyester smart-account address. May be empty until the corresponding lifecycle details are available.
0x3333333333333333333333333333333333333333PolyChain-registered external network identifier for EXTERNAL_ADDRESS. This matches chain.zipper.v1.ChainConfig.chain_id and is not the chain's native identifier (for example, an EIP-155 id) or the Polyester chain id.
1Display classification for this transfer side.
FUNDING_ACCOUNTPublic lifecycle flow ID when this transfer belongs to a chain lifecycle flow.
flow_7YWHMfk9JZeLMgZauHuiSxhITrue when this row is the debit leg; false when it is the credit leg.
falseCorrelation ID used to group related transfer legs. Zero when unavailable.
1Public root account or subaccount ID when this side is safe to identify. Never populated for private counterparties or non-user ledger accounts.
4Rh4iXdTAddress for this side when known. For EXTERNAL_ADDRESS this is an external-chain wallet address from lifecycle correlation; for identifiable Polyester accounts this is a Polyester smart-account address. May be empty until the corresponding lifecycle details are available.
0x3333333333333333333333333333333333333333PolyChain-registered external network identifier for EXTERNAL_ADDRESS. This matches chain.zipper.v1.ChainConfig.chain_id and is not the chain's native identifier (for example, an EIP-155 id) or the Polyester chain id.
1Display classification for this transfer side.
FUNDING_ACCOUNTTransfer timestamp in microseconds since epoch (UTC).
1Product reason for this transfer.
DEPOSIT| Key | Status | Error | When |
|---|---|---|---|
| unauthenticated | 401 | Unauthenticated | Authentication required. |
| permission-denied | 403 | Permission Denied | Permission denied. |
| invalid-argument | 400 | Invalid Argument | Invalid argument. |
| not-found | 404 | Not Found | Not found. |
| unavailable | 503 | Unavailable | Service unavailable. |