Ledger queries

List Queries

A list query targets a single type of object - keys, accounts, assets, transactions, actions, or token groups - and returns a paginated set of results.

On this page

You can add a filter to narrow the results.

ExamplesLink to this section

The following examples each retrieve the first two pages of results, with 10 results per page. For details on iterating through all results, see iterating results.

AccountsLink to this section

List accounts with checking as the value for type in the tags.

Account.Page page1 = new Account.ListBuilder()
  .setFilter("tags.type=$1")
  .addFilterParameter("checking")
  .setPageSize(10)
  .getPage(ledger);
for (Account account : page1.items) {
  ...
}

String cursor = page1.cursor;

Account.Page page2 = new Account.ListBuilder()
  .getPage(ledger, cursor);
for (Account account : page2.items) {
  ...
}
const page1 = await ledger.account.list({
  filter: 'tags.type=$1',
  filterParams: ['checking']
}).page({size: 10})

page1.items.forEach(account => {
  ...
})

const cursor = page1.cursor

const page2 = await ledger.accounts.list().page({cursor: cursor})

page2.items.forEach(action => {
  ...
})
page1 = ledger.accounts.list(
  filter: 'tags.type=$1',
  filter_params: ['checking']
).page(size: 10)

page1.each do |account|
  puts account.to_json
end

cursor = page1.cursor

page2 = ledger.accounts.list.page(cursor: cursor)

page2.each do |account|
  puts account.to_json
end

TransactionsLink to this section

List transactions for Alice's account.

Transaction.Page page1 = new Transaction.ListBuilder()
  .setFilter("actions(sourceAccountId=$1 OR destinationAccountId=$1)")
  .addFilterParameter("alice")
  .setPageSize(10)
  .getPage(ledger);
for (Transaction tx : page1.items) {
  ...
}

String cursor = page1.cursor;

Transaction.Page page2 = new Transaction.ListBuilder()
  .getPage(ledger, cursor);
for (Transaction tx : page2.items) {
  ...
}
const page1 = await ledger.transactions.list({
  filter: 'actions(sourceAccountId=$1 OR destinationAccountId=$1)',
  filterParams: ['alice']
}).page({size: 10})

page1.items.forEach(tx => {
  ...
})

const cursor = page1.cursor

const page2 = await ledger.transactions.list().page({cursor: cursor})

page2.items.forEach(tx => {
  ...
})
page1 = ledger.transactions.list(
  filter: 'actions(source_account_id=$1 OR destination_account_id=$1)',
  filter_params: ['alice']
).page(size: 10)

page1.each do |tx|
  puts tx.to_json
end

cursor = page1.cursor

page2 = ledger.transactions.list.page(cursor: cursor)

page2.each do |tx|
  puts tx.to_json
end

ActionsLink to this section

List actions that issued USD to Alice's account.

Action.Page page1 = new Action.ListBuilder()
  .setFilter("destinationAccountId=$1 AND assetId=$2 AND type=$3")
  .addFilterParameter("alice")
  .addFilterParameter("usd")
  .addFilterParameter("issue")
  .setPageSize(10)
  .getPage(ledger);
for (Action action : page1.items) {
  ...
}

String cursor = page1.cursor;

Action.Page page2 = new Action.ListBuilder()
  .getPage(ledger, cursor);
for (Action action : page2.items) {
  ...
}
const page1 = await ledger.actions.list({
  filter: 'destinationAccountId=$1 AND assetId=$2 AND type=$3',
  filterParams: ['alice', 'usd', 'issue']
}).page({size: 10})

page1.items.forEach(action => {
  ...
})

const cursor = page1.cursor

const page2 = await ledger.actions.list().page({cursor: cursor})

page2.items.forEach(action => {
  ...
})
page1 = ledger.actions.list(
  filter: 'destination_account_id=$1 AND asset_id=$2 AND type=$3',
  filter_params: ['alice', 'usd', 'issue']
).page(size: 10)

page1.each do |action|
  puts action.to_json
end

cursor = page1.cursor

page2 = ledger.actions.list.page(cursor: cursor)

page2.each do |action|
  puts action.to_json
end

TokensLink to this section

List token groups with date as the value for due in the tags.

Note: This endpoint does not return individual token objects, but rather token group objects, which each represent an amount of identical tokens.

Token.Page page1 = new Token.ListBuilder()
  .setFilter("tags.due=$1")
  .addFilterParameter("date")
  .setPageSize(10)
  .getPage(ledger);
for (Token token : page1.items) {
  ...
}

String cursor = page1.cursor;

Token.Page page2 = new Token.ListBuilder()
  .getPage(ledger, cursor);
for (Token token : page2.items) {
  ...
}
const page1 = await ledger.tokens.list({
  filter: 'tags.due=$1',
  filterParams: ['date']
}).page({size: 10})

page1.items.forEach(tokenGroup => {
  ...
})

const cursor = page1.cursor

const page2 = await ledger.tokens.list().page({cursor: cursor})

page2.items.forEach(tokenGroup => {
  ...
})
page1 = ledger.tokens.list(
  filter: 'tags.due=$1',
  filter_params: ['date']
).page(size: 10)

page1.each do |token_group|
  puts token_group.to_json
end

cursor = page1.cursor

page2 = ledger.tokens.list.page(cursor: cursor)

page2.each do |token_group|
  puts token_group.to_json
end