Get a movement
Gets one deposit or withdrawal and refreshes its onchain status when it can.
GET/
Use it to track a movement after submit, or to recover a submit whose response was lost. If the chain read fails, you get the last recorded status while SDP keeps reconciling in the background. An atomic movement can show as done at confirmed, but only finalized and failed are final. For settlement: provider_order, chain confirmation is not payout: the provider still has to complete the order.
Requires an API key with the earn.read action.
Path parameters
-
movementId·string· required · min length 1 · max length 128 · exampleearn_movement_a6aed3f5-4f89-4dc6-9d4b-0864021bd80dThe
movementIda submit returned.
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
Responses
-
200Recorded movement-
data·object· required-
movement·object· requiredOne recorded external-wallet vault movement.
-
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.
-
-
-
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. -
404Not FoundSame fields as
400. -
429Too Many RequestsSame fields as
400. -
500Internal Server ErrorSame fields as
400. -
503Service UnavailableSame fields as
400.