List transactions
Lists the project's transactions across SDP modules with stable cursor pagination.
GET/Run in dashboard
Requires transactions.read. Every row also needs the read action of the module it comes from (which its manage or execute includes): a Payments row needs transfers.read for a transfer or deposit, transfer_batches.read for a batch item, recurring.read for a recurring collection, payment_requests.read for a payment request's fulfilment; every other module's rows need that module's read. Rows the caller cannot read are left out. Requesting a module, or a Payments kind, without its action returns 403 INSUFFICIENT_PERMISSIONS naming it.
search matches transaction id, module id, or signature as a prefix, not a substring. The endpoint is metered (60/min per credential, 240/min per organization); exceeding the quota returns 429, and 503 indicates the quota backend was unavailable.
Requires an API key with the transactions.read action.
Query parameters
-
module·string· one ofpayments,earn -
kind·string -
status·string· one ofpending,succeeded,failed,canceled -
custodyWalletId·string· max length 128 -
counterpartyId·string· max length 128 -
token·string· max length 128 -
search·string· min length 3 · max length 200Prefix match against transaction id, module id, or signature — not a substring search.
-
createdAtFrom·string· formatdate-time -
createdAtTo·string· formatdate-time -
cursor·string -
limit·integer· min 1 · max 100 · default50
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
Responses
-
200Unified transactions-
data·object· required-
transactions·object[]· requiredOne of:
-
module: "payments"
-
id·string· required -
moduleId·string· required -
status·string· required · one ofpending,succeeded,failed,canceled -
organizationId·string· required -
projectId·string | null· required -
custodyWalletId·string | null· required -
custodyWalletLabel·string | null· required -
token·string | null· required -
amount·string | null· required -
counterpartyId·string | null· required -
signature·string | null· required -
createdAt·string· required -
module·string· required · alwayspayments -
kind·string· required -
moduleStatus·string· required · one ofpending,processing,confirmed,finalized,failed,awaiting_payment,settling,completed,canceled,expired
-
-
module: "earn"
-
id·string· required -
moduleId·string· required -
status·string· required · one ofpending,succeeded,failed,canceled -
organizationId·string· required -
projectId·string | null· required -
custodyWalletId·string | null· required -
custodyWalletLabel·string | null· required -
token·string | null· required -
amount·string | null· required -
counterpartyId·string | null· required -
signature·string | null· required -
createdAt·string· required -
module·string· required · alwaysearn -
kind·string· required · one ofdeposit,withdraw -
moduleStatus·string· required · one ofrequested,processing,pending_approval,completed,partially_completed,failed,cancelled,submitted,confirmed,finalized
-
-
-
nextCursor·string | null· required
-
-
-
400Bad Request-
error·object· requiredStandard error payload.
-
code·string· requiredMachine-readable error code.
-
message·string· requiredHuman-readable error message.
-
details·objectOptional error details for debugging.
*·any
-
-
meta·object-
requestId·string· min length 1 · examplereq_exampleRequest identifier for tracing.
-
-
-
401UnauthorizedSame fields as
400. -
403Forbidden. Requires thetransactions.readaction: an API key must hold it (a module'smanageorexecutealso covers itsread), and a signed-in member's organization role must include it. Without it the error is INSUFFICIENT_PERMISSIONS anderror.details.actionnames the action. Any other 403 names its own reason.Same fields as
400. -
429Too Many RequestsSame fields as
400. -
500Internal Server ErrorSame fields as
400. -
503Service UnavailableSame fields as
400.