Buy a VPS quote with team USD
/api/v1/orders/buy
Buy your own unexpired order quote using only the token’s fixed team USD balance. Success returns HTTP 202 with the payment intent in applied/balance state, not a delivered server. Repeating the same quote returns the original result.
Before you call
API buying is off by default. First open a ticket linked to an existing, unreclaimed server in your team and ask an administrator to enable the specific token. Other or new tokens do not inherit access. Insufficient USD is rejected with 409; no x402, deposit, xTOVA or commission fallback. Reuse the same quote ID and query get_payment and get_order after an uncertain outcome. MCP purchases do not use this switch.
Request example
curl "https://tovahub.com/api/v1/orders/buy" -X POST \
-H "Authorization: Bearer $TOVAHUB_TOKEN" \
-H "Content-Type: application/json" \
--data '{
"id": "507f1f77bcf86cd799439011"
}'Examples only. No requests are sent from this page.
Illustrative response
{
"id": "507f1f77bcf86cd799439011",
"purpose": "order",
"amount": "1200",
"asset": "USD",
"state": "applied",
"mode": "balance",
"expiresAt": "2026-11-07T12:30:00.000Z",
"transactionHash": null,
"network": null,
"result": {
"_id": "507f1f77bcf86cd799439012",
"status": "pending"
},
"error": null
}Parameters
idJSON body · Requiredstring
Quote/payment-intent ID from quote_vps_order: exactly 24 hexadecimal characters. Only the quote creator in the same fixed team can buy. Send no other fields.
Response
HTTP status 202
The same accepted order result is returned on replay. Acceptance is not server delivery.
idstring (ObjectId)Payment-intent identifier; also the quote identifier.
purpose"order"Intent purpose; current public creation paths use order or deposit. The stored purpose can also be renew; that does not mean renewal is currently supported.
amountstringInteger USD cents.
assetstring ('USD')The platform accounting asset.
state"applied"Durable payment-intent state.
mode"balance"Selected funding mode, or null before selection.
expiresAtstring (ISO 8601)Quote expiry; already accepted funds still require reconciliation after this time.
transactionHashnullBlockchain transaction hash, if any.
networknullPayment network, if any.
resultunknown | nullPurpose-specific persisted application result; no universal nested response schema is declared.
errornullPersisted payment error, if any.