Skip to content

POST /api/v1/admin/withdrawals/{id}/review

Operation: adminReviewWithdrawal.

Approve or reject a renter withdrawal held by the automatic payout path (Admin + TOTP step-up). approve releases the hold (the worker re-runs every correctness check); reject fails the unsigned request and releases its locked balance

POST https://amplerun-api.spiry.org/api/v1/admin/withdrawals/{id}/review

Admin interactive session. API keys do not authorize administrative operations. Sensitive writes also require the stated fresh step-up proof; account MFA is configurable.

NameLocationPresenceTypeDescription
idpathRequiredUUID
Idempotency-KeyheaderRequiredUUIDUUID scoped to authenticated principal, route and canonical request hash.

Required body.

FieldTypePresenceDescription
decision“approve” / “reject”Required
reasonstringRequired
{
"type": "object",
"additionalProperties": false,
"required": [
"decision",
"reason"
],
"properties": {
"decision": {
"type": "string",
"enum": [
"approve",
"reject"
]
},
"reason": {
"type": "string",
"minLength": 5,
"maxLength": 2000
}
}
}

Decision recorded (audited with the admin and reason).

application/json

FieldTypePresenceDescription
idUUIDRequired
kind“payout” / “withdrawal”Required
decision“approve” / “reject”Required
state“INTENT” / “FAILED”Required
{
"type": "object",
"required": [
"id",
"kind",
"decision",
"state"
],
"properties": {
"id": {
"$ref": "#/components/schemas/UUID"
},
"kind": {
"type": "string",
"enum": [
"payout",
"withdrawal"
]
},
"decision": {
"type": "string",
"enum": [
"approve",
"reject"
]
},
"state": {
"type": "string",
"enum": [
"INTENT",
"FAILED"
]
}
}
}

The request is no longer unsigned (a nonce is pinned); it cannot be reviewed.

Error envelope. 401 unauthenticated, 403/404 forbidden, 409 conflict, 422 invalid input, 429 rate limited (code UNAVAILABLE, retryable:true, no Retry-After header), 503 unavailable money/provider state with retryable:true.

application/json

FieldTypePresenceDescription
errorobjectRequired
{
"$ref": "#/components/schemas/ErrorEnvelope"
}

Replace path/query placeholders and provide the required JSON body, headers and credential from the sections above. This is a request outline, not a command that chooses an amount or starts a rental for you.

Terminal window
curl --request POST 'https://amplerun-api.spiry.org/api/v1/admin/withdrawals/{id}/review'

Schema definitions · Download OpenAPI · Authentication · Errors and recovery

Official AmpleRun documentation · Contract v3 · Generated from the API contract · Revision 52fe29de · Open AmpleRun · View Markdown · For agents