Overview
The History API allows third-party partners to query the transaction and activity history of the authenticated user. It supports both cards and account resources, with multiple features for summaries, transactions, balances, and filtered account activity.All endpoints require authentication via the
Authorization: Bearer <api_key> header.
The user is inferred from the API key; you do not pass a userId in the URL.Authentication
All requests must include an API key in the Authorization header:Get User History
Retrieves the transaction and activity history for the authenticated user. You can query either cards or account data, and choose which feature you want via query parameters.Query Parameters
Resource and Feature Combinations
Account resource
Whenresource=account, the following feature values are supported:
These features all return the same Activity shape, but filtered by transaction type internally.
Cards resource
Whenresource=cards, the following feature values are supported:
Responses
The response shape depends on the combination ofresource and feature.
Below are the main structures you will encounter.
Account History Response (resource=account)
For resource=account, you receive a list of account history entries and pagination info.
string
Status message (if present)
array
Array of account history entries. Each entry typically includes:
string
Entry ID
string
Date and time of the transaction (ISO 8601)
string
Raw transaction type:
buy (deposit), sell (withdrawal), swap-bridge (convert), transfer-token (send)string
Human-readable description of the transaction. If a note was added to the
transaction afterwards, it is appended after
-, the same way the
statement export shows it. The note alone is also in additionalDescription.string
Current status of the transaction
string
Amount involved in the operation
string
Asset sent (if applicable)
string
Amount sent (if applicable)
string
Asset received (if applicable)
string
Amount received (if applicable)
string
Running balance after this transaction. A swap started on or after
2026-09-09 is a single entry carrying the whole swap’s net change and the
balance once it completed; swaps started earlier appear as two entries (the
outgoing and the incoming leg).
string
When the transaction settled (ISO 8601). This is the statement export’s
“Executed At” and can be later than the creation date: a payment created on
one day and settled on another carries the settlement day here. Use it, not
the creation date, to decide which day a transaction belongs to.
string
For deposits and withdrawals, when the fiat side was processed (ISO 8601,
nullable). It can differ from
executedAt by minutes or more.string
Purpose of the transaction, such as
PAYROLL_AND_TEAM_EXPENSES. Empty when none was given.string
Memo entered when the transaction was created (nullable)
string
Note added to the transaction afterwards (nullable). Also appended to
description.object
Pagination information:
boolean
Whether there is another page of results
number
Current page index (starting from 0)
number
Number of items per page
number
Total number of pages available
number
Total number of records matching the query. Exact whenever
totalCountIsEstimate is falseboolean
Whether
totalCount is an upper-bound estimate rather than an exact count.
See Paging through account historyExample Request (Account History)
Example Response (simplified)
Cards Transactions Response (resource=cards, feature=cards-transactions)
For cards-transactions, you receive card transactions enriched with card metadata.
array
Example Request (Cards Transactions)
Example Response (simplified)
Cards Summary Response (resource=cards, feature=cards-summary)
For cards-summary, you receive a snapshot of the user’s cards and related limits.
array
object
Same structure as other paginated responses.
Example Request (Cards Summary)
By default the snapshot covers only the cards still visible to the cardholder —
the active, inactive and locked ones. Add
status=all for every card the
account has ever had, or status=canceled for the canceled ones alone.Cards Balance Response (resource=cards, feature=cards-balance)
For cards-balance, you receive card collateral movements and running balance over time.
array
object
Same structure as other paginated responses.
Error Responses
string
Error message describing what went wrong
Rate Limits
The History API is rate-limited per user to protect the service and ensure fair usage. When you receive429 responses, implement retry logic with exponential backoff to avoid hammering the API.
Paging through account history
resource=account combines settled on-chain operations with trades still
pending. The two are paginated separately and merged per request, which puts two
limits on how you read the endpoint.
A page must start within the first 1000 records — currentPage * pageSize
must be below 1000. A deeper page returns 400 rather than a partial result:
startDate/endDate
and page within each range.
Check totalCountIsEstimate before reconciling counts. For result sets small
enough to be counted in one pass, totalCount is exact and stable and
totalCountIsEstimate is false. For larger ones it’s an upper bound that may
shift slightly between calls.
Only reconcile record counts against a
totalCount reported with
totalCountIsEstimate: false. Narrowing the query with startDate/endDate
is the reliable way to get one.hasNextPage. It never points at a page the API would reject,
so following it won’t walk you into a 400.
When it turns false, either the history ended or you reached the 1000-record
limit. To tell the two apart, compare what you read against totalCount: if
totalCount is higher, you stopped at the limit and there’s more history behind
a narrower startDate/endDate.
Best Practices
- Use pagination: Always provide
currentPageandpageSizeto avoid fetching excessively large responses. - Filter by date: Use
startDate,endDate, andasOfto restrict the time window of data as much as possible. For account history this is also how you read past the 1000-record paging limit. - Iterate with
hasNextPage: Stop when it turnsfalserather than computing a page count fromtotalCount, which may be an estimate. Then compare what you read againsttotalCountto check whether you reached the end of the history or the 1000-record paging limit. - Choose the right feature: Use
account-onramp,account-offramp,account-swap,account-crypto, oraccount-portifolioto narrow the type of account history you need. - Leverage text search: For card transactions, use
filterByTextto search by merchant or description instead of post-processing large datasets. - Handle rate limits: Implement exponential backoff and respect
429responses to keep your integration stable.
Support
Happy to help if you get stuck:- Email: [email protected]
- Dashboard: LootRush Dashboard