Transactions API
Transactions that touched ZK-compressed state on Solana
The newest Solana transactions that touched ZK-compressed state: chain-wide, or for one compressed account, one address, or a wallet's compressed token accounts.
/api/external/transaction-analysis/compressed-signatures/{chain}What it returns
Lists the transactions that read or wrote Solana ZK-compressed state, newest first, with their slot and block time. With no subject, the newest such transactions across the whole chain. Name at most ONE subject: hash for one compressed account by its leaf hash, address for a compressed address, or tokenOwner for every compressed TOKEN account a wallet owns — compressed accounts of that wallet that hold no token are not covered, and there is no mode for them. Two subjects are a 400. Pages with limit and cursor: keep passing cursor back until it is null. With hash there is no paging — a leaf hash names one version of an account, so its history is short and comes back whole — and limit or cursor is a 400. Rows carry no success or failure status: none is known here, so read one transaction through the single-transaction resource for that.
Chains
- Solana SOL
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/transaction-analysis/compressed-signatures/SOL"
| Parameter | Description |
|---|---|
hashquery · string · optional | A compressed account's leaf hash, base58. Answers the transactions that wrote or spent that one version of the account. Not combinable with limit or cursor. |
addressquery · string · optional | A compressed address, base58. Answers the transactions that touched the account at that address. |
tokenOwnerquery · string · optional | A wallet address, base58. Answers the transactions that touched any compressed token account the wallet owns. Compressed accounts that are not token accounts are not covered. |
limitquery · integer · optional | How many transactions per page: 1 to 1000. Defaults to 50. Not accepted with hash. limit ≤ 200 keeps the answer under 32 KB. |
cursorquery · string · optional | The cursor of a previous response, for the next page. Only meaningful with the same subject it was issued for; an empty one, or one over 256 characters, is a 400. Not accepted with hash. |
chainpath · string · required | SOL. Every other chain returns 400: compressed accounts and compressed tokens are a Solana construct. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
slot | integer | The slot the compressed-state index answered at. |
transactions | object[] | Newest first, in the order the index reports — never re-sorted here. Empty is a real answer: nothing compressed was touched for that subject. |
transactions[].signature | string | The transaction signature. |
transactions[].slot | integer | The slot the transaction landed in. |
transactions[].at | integer | null | Unix SECONDS of the block it landed in; null when no block time is known. |
cursor | string | null | Pass back as cursor for the next page. null on the last page, and always with hash. |
Start building with DexData today
Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.
Get a free API key