Preview a withdrawal request
Previews a withdrawal request: a solver queue's discounted payout and timing, or an operator redemption's intermediate-token conversion and payout.
POST/
Check the mechanism against the position's withdrawal options first, and resolve every blockingIssues entry before the customer confirms. The preview is read-only and safe to retry. It does not check the wallet's balance, so keep shares within the position's withdrawableShares.
Requires an API key with the earn.read action.
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
Request body
application/json · required
Preview a solver-queue or operator-redemption request against live provider limits. Read-only: nothing is built or persisted.
Any of:
-
object
-
positionId·string· required · min length 1 · max length 128 · exampleearn_position_2f8b6b04-7147-487e-b760-b1caa4fbcb8bThe position's ID, from the positions list or the deposit submit response.
-
shares·string· required · max length 128 · pattern^(?=.*[1-9])\d+(\.\d+)?$· example10Shares to place in the withdrawal request, in share units.
-
mechanism·string· alwayssolverQueueSelects the solver queue, which is also the default when omitted. Operator redemptions must set
mechanismexplicitly. -
discountBps·integer· required · min 0 · max 10000 · example25Discount offered to a solver, in basis points. It must stay inside the live queueAsset minimum and maximum.
-
deadlineSeconds·integer· required · greater than 0 · max 7776000 · example86400Solver window after maturity, in seconds. It must stay inside the live queueAsset minimum and maximum.
-
-
object
-
positionId·string· required · min length 1 · max length 128 · exampleearn_position_2f8b6b04-7147-487e-b760-b1caa4fbcb8bThe position's ID, from the positions list or the deposit submit response.
-
shares·string· required · max length 128 · pattern^(?=.*[1-9])\d+(\.\d+)?$· example10Shares to place in the withdrawal request, in share units.
-
mechanism·string· required · alwaysoperatorRedemptionSelects an operator redemption, which takes no solver discount or deadline.
-
-
object
-
positionId·string· required · min length 1 · max length 128 · exampleearn_position_2f8b6b04-7147-487e-b760-b1caa4fbcb8bThe position's ID, from the positions list or the deposit submit response.
-
intermediateAmount·string· required · max length 128 · pattern^(?=.*[1-9])\d+(\.\d+)?$· example2000Intermediate token the owner already holds outside any request (such as a cancelled request's wYLDS) to redeem at par, in that token's units. Send instead of
shares, never with it. -
mechanism·string· required · alwaysoperatorRedemptionSelects an operator redemption, which takes no solver discount or deadline.
-
Responses
-
200Expected request terms-
data·object· requiredAny of:
-
object
-
positionId·string· required · min length 1 · max length 128 · exampleearn_position_2f8b6b04-7147-487e-b760-b1caa4fbcb8bThe position's ID, from the positions list or the deposit submit response.
-
assetMint·string· required · min length 32 · max length 44 · pattern^[1-9A-HJ-NP-Za-km-z]{32,44}$· example2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXoBase58 Solana mint address.
-
shares·string· required · max length 128 · pattern^(?=.*[1-9])\d+(\.\d+)?$· example25Positive decimal string with at least one non-zero digit; never a float.
-
shareDecimals·integer· required · min 0 · max 38 -
assets·string· required · max length 128 · pattern^(?=.*[1-9])\d+(\.\d+)?$· example9.975Expected payout after the discount, in
assetMintunits. -
assetDecimals·integer· required · min 0 · max 38 -
discountBps·integer· required · min 0 · max 10000 -
maturityTimestamp·string· required · pattern^\d+$· example1789722000Unix time, in seconds, when a solver may start fulfilling the request.
-
deadlineTimestamp·string· required · pattern^\d+$· example1789808400Unix time, in seconds, of the request's deadline. A solver may fulfill it until this time; cancellation is allowed only after it.
-
blockingIssues·object[]· required-
code·string· required · exampleSHARE_LOCKED -
message·string· required
-
-
-
object
-
positionId·string· required · min length 1 · max length 128 · exampleearn_position_2f8b6b04-7147-487e-b760-b1caa4fbcb8bThe position's ID, from the positions list or the deposit submit response.
-
mechanism·string· required · alwaysoperatorRedemption -
shares·string· required · max length 128 · pattern^\d+(\.\d+)?$· example10Position shares the request burns, in share units; "0" when it redeems intermediate the owner already holds.
-
shareDecimals·integer· required · min 0 · max 38 -
intermediateMint·string· required · min length 32 · max length 44 · pattern^[1-9A-HJ-NP-Za-km-z]{32,44}$· example2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXoToken the request creates or delegates for later operator settlement.
-
intermediateAmount·string· required · max length 128 · pattern^(?=.*[1-9])\d+(\.\d+)?$· example25Expected intermediate-token amount, in that token's units.
-
assetMint·string· required · min length 32 · max length 44 · pattern^[1-9A-HJ-NP-Za-km-z]{32,44}$· example2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXoBase58 Solana mint address.
-
assets·string· required · max length 128 · pattern^(?=.*[1-9])\d+(\.\d+)?$· example10Expected par payout when the operator completes the redemption.
-
assetDecimals·integer· required · min 0 · max 38 -
blockingIssues·object[]· required-
code·string· required · exampleSHARE_LOCKED -
message·string· 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. -
404Not FoundSame fields as
400. -
429Too Many RequestsSame fields as
400. -
500Internal Server ErrorSame fields as
400. -
501The provider does not support this operation.-
error·object· requiredStandard error payload.
-
code·string· required -
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.
-
-
-
503Service UnavailableSame fields as
400.