> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spark.money/llms.txt
> Use this file to discover all available pages before exploring further.

# getTokenTransactions

> Query token transactions with cursor-based pagination.

Queries token transactions with optional filters and cursor-based pagination.

## Method Signature

```typescript theme={null}
async getTokenTransactions(
  params?: QueryTokenTransactionsParams,
): Promise<{
  transactions: TokenTransactionWithStatus[];
  pageResponse: {
    nextCursor?: string;
    prevCursor?: string;
  };
}>

interface QueryTokenTransactionsParams {
  sparkAddresses?: string[];
  issuerPublicKeys?: string[];
  tokenIdentifiers?: string[];
  outputIds?: string[];
  pageSize?: number;            // default: 50
  cursor?: string;
  direction?: "NEXT" | "PREVIOUS";
}
```

## Parameters

<Note>
  Filters are combined using **AND** logic.
</Note>

<ResponseField name="sparkAddresses" type="string[]">
  Filter by Spark addresses.
</ResponseField>

<ResponseField name="issuerPublicKeys" type="string[]">
  Filter by issuer public keys.
</ResponseField>

<ResponseField name="tokenIdentifiers" type="string[]">
  Filter by Bech32m token identifiers.
</ResponseField>

<ResponseField name="outputIds" type="string[]">
  Filter by output IDs.
</ResponseField>

<ResponseField name="pageSize" type="number">
  Number of results per page (default: `50`).
</ResponseField>

<ResponseField name="cursor" type="string">
  Cursor from a previous response for pagination.
</ResponseField>

<ResponseField name="direction" type="&#x22;NEXT&#x22; | &#x22;PREVIOUS&#x22;">
  Pagination direction (default: `"NEXT"`).
</ResponseField>

## Returns

<ResponseField name="transactions" type="TokenTransactionWithStatus[]" required>
  Array of token transaction objects.
</ResponseField>

<ResponseField name="pageResponse" type="object" required>
  Pagination metadata with `nextCursor` and `prevCursor`.
</ResponseField>

## Example

```typescript theme={null}
// First page
const page = await client.getTokenTransactions({
  sparkAddresses: ["sp1..."],
  pageSize: 25,
});

console.log(`${page.transactions.length} transactions`);

// Next page
if (page.pageResponse?.nextCursor) {
  const next = await client.getTokenTransactions({
    sparkAddresses: ["sp1..."],
    cursor: page.pageResponse.nextCursor,
    direction: "NEXT",
  });
}
```
