List movements
Lists one customer wallet's deposits and withdrawals, newest first, one page at a time.
GET/
Movement statuses are requested, submitted, confirmed, finalized and failed; only finalized and failed are final. ownerAddress is required, and a wallet with no movements returns an empty movements list, not 404. Show tokenAmount in tokenMint units: on a withdrawal it is the observed payout once finalized, while amount and denomination carry the onchain quantity, which is shares. Reads keep working after a provider stops taking deposits.
Requires an API key with the earn.read action.
Query parameters
-
ownerAddress·string· required · min length 32 · max length 44 · pattern^[1-9A-HJ-NP-Za-km-z]{32,44}$· example9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWMThe customer's wallet address: an external wallet, so SDP holds no key for it. It signs, owns the shares, and pays the network fee unless the build names a
feePayer. It must decode to a 32-byte public key; a base58 string that matches the pattern but does not decode returns 400. -
direction·string· one ofdeposit,withdrawal -
status·string· min length 1 · max length 64Return only movements in this status, such as
finalized. Takes one value; an unknown value matches nothing. -
limit·integer· min 1 · max 100 · default20Page size, from 1 to 100. Defaults to 20.
-
before·string· min length 1The previous page's
nextCursor. Omit it for the first page.
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
Responses
-
200One page of movements-
data·object· required-
ownerAddress·string· required · example9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWMThe customer's wallet address.
-
movements·object[]· requiredThe wallet's recorded movements, newest first.
-
settlementOutcome·string· one ofdelivered,cancelled -
movementId·string· required · exampleearn_movement_a6aed3f5-4f89-4dc6-9d4b-0864021bd80d -
positionId·string· required · exampleearn_position_2f8b6b04-7147-487e-b760-b1caa4fbcb8b -
provider·string· required · examplekamino -
providerReference·string· required · example7uib8xGAwkaPz4ZGCA6t8sSEid5Yp9ty13PHUweTypx -
direction·string· required · one ofdeposit,withdrawal -
status·string· required · one ofrequested,submitted,confirmed,finalized,failedThe movement's status.
requestedmeans SDP recorded the signed transaction but has not yet seen it on the network.confirmedis optimistic and can still be rolled back; onlyfinalizedandfailedare final. -
settlement·string· required · one ofatomic,provider_orderHow the movement settles.
atomiccompletes in one transaction, so you may show it as done atconfirmedwhile SDP tracks finality.provider_orderpays out later through the provider, so chain confirmation alone is not payout: the movement staysconfirmeduntil the provider completes it, and onlyfinalizedmeans it is done. -
signature·string· requiredThe transaction signature, for explorers.
-
ownerAddress·string· required · example9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWMThe customer's wallet address.
-
amount·string· required · max length 128 · pattern^(?=.*[1-9])\d+(\.\d+)?$· example25Requested quantity, denominated in
denomination. -
denomination·string· required · example4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDUToken mint for a deposit; share mint for a withdrawal.
-
tokenMint·string· required · example4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDUThe position's deposit-token mint. Show
tokenAmountin these units;amountanddenominationcarry the onchain quantity, which is shares on a withdrawal. -
tokenAmount·string | null· required · max length 128 · pattern^(?=.*[1-9])\d+(\.\d+)?$· example25Quantity in
tokenMintunits. Kamino deposits and all withdrawals require a finalized observation; null beforehand or when the actual debit/payout cannot be observed. Other deposits report their fixed input amount. -
failureReason·string | null· required -
createdAt·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
confirmedAt·string | null· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
settledAt·string | null· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
replayed·booleanTrue when the idempotency key already produced this movement and nothing was re-sent.
-
-
hasMore·boolean· required -
nextCursor·string | null· required
-
-
meta·object· requiredResponse metadata.
-
requestId·string· required · min length 1 · examplereq_exampleRequest identifier for tracing.
-
timestamp·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
-
-
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 theearn.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.