POST /api/v1/admin/payouts/{id}/review
Operation: adminReviewPayout.
Approve or reject a host payout 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
Endpoint
Section titled “Endpoint”POST https://amplerun-api.spiry.org/api/v1/admin/payouts/{id}/review
Authentication
Section titled “Authentication”Admin interactive session. API keys do not authorize administrative operations. Sensitive writes also require the stated fresh step-up proof; account MFA is configurable.
Parameters
Section titled “Parameters”| Name | Location | Presence | Type | Description |
|---|---|---|---|---|
id | path | Required | UUID | |
Idempotency-Key | header | Required | UUID | UUID scoped to authenticated principal, route and canonical request hash. |
Request body
Section titled “Request body”Required body.
application/json
Section titled “application/json”| Field | Type | Presence | Description |
|---|---|---|---|
decision | “approve” / “reject” | Required | |
reason | string | Required |
{ "type": "object", "additionalProperties": false, "required": [ "decision", "reason" ], "properties": { "decision": { "type": "string", "enum": [ "approve", "reject" ] }, "reason": { "type": "string", "minLength": 5, "maxLength": 2000 } }}Responses
Section titled “Responses”Decision recorded (audited with the admin and reason).
application/json
| Field | Type | Presence | Description |
|---|---|---|---|
id | UUID | Required | |
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.
default
Section titled “default”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
| Field | Type | Presence | Description |
|---|---|---|---|
error | object | Required |
{ "$ref": "#/components/schemas/ErrorEnvelope"}Static request outline
Section titled “Static request outline”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.
curl --request POST 'https://amplerun-api.spiry.org/api/v1/admin/payouts/{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