Create a quote
/api/v1/orders/quote
Create an immutable 30-minute USD quote. The same requestKey returns the original quote.
Before you call
A quote does not place an order or reserve stock. An administrator-enabled token can use buy_vps_quote (POST /api/v1/orders/buy) with the quote id and sufficient team USD. MCP pay_quote remains separate; HTTP deposits are not offered.
Request example
curl "https://tovahub.com/api/v1/orders/quote" -X POST \
-H "Authorization: Bearer $TOVAHUB_TOKEN" \
-H "Content-Type: application/json" \
--data '{
"requestKey": "docs_example_001",
"planId": "<PLAN_ID>",
"region": "<REGION_CODE>",
"days": 31,
"hostname": "myserver",
"os": "debian12"
}'Examples only. No requests are sent from this page.
Illustrative response
{
"id": "507f1f77bcf86cd799439011",
"purpose": "order",
"amount": "1200",
"asset": "USD",
"state": "quoted",
"mode": null,
"expiresAt": "2026-11-07T12:30:00.000Z",
"transactionHash": null,
"network": null,
"result": null,
"error": null
}Parameters
requestKeyJSON body · Requiredstring
8–100 characters: A–Z, a–z, 0–9, underscore or hyphen. Keep the same key and identical input when retrying the same operation.
planIdJSON body · Requiredstring
Nonempty plan ID from the live catalog.
regionJSON body · Requiredstring
Region code from the catalog, 1–40 characters.
networkIdJSON body · Optionalstring
Optional owned private network ID for this server order. The selection is immutable; unverified supplier support is rejected before payment or procurement.
daysJSON body · Requiredinteger
1–730 days. Choose an actual supported billing term for the plan.
hostnameJSON body · Requiredstring
3–16 ASCII letters or digits; normalized to lowercase.
osJSON body · Requiredstring
Operating-system identifier. Built-in choices include debian12 and ubuntu24. Availability and licensing are validated for the selected plan. In server actions and challenges, only reinstall accepts os.
firewallIdJSON body · Optionalstring
system or a 24-character organization firewall ID.
rootPasswordJSON body · Optionalstring
Optional root password, 8–128 characters. Not retained in the stored quote. Keep it private.
sshPublicKeyJSON body · Optionalstring
Single-line OpenSSH public key, at most 8,192 characters: ssh-ed25519, ssh-rsa or ecdsa-sha2-nistp256/384/521. No private keys, authorized_keys options or control characters. Comments are removed.
autoRenewJSON body · Optionalboolean
Defaults to true. Stores the site preference, not a supplier renewal commitment.
Response
HTTP status 200
Create or replay a fixed thirty-minute USD quote without placing an order or reserving stock.
idstring (ObjectId)Payment-intent identifier; also the quote identifier.
purposestringIntent 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.
statestring ('quoted' | 'authorized' | 'broadcast' | 'settled' | 'applied' | 'failed')Durable payment-intent state.
modestring ('balance' | 'x402') | nullSelected funding mode, or null before selection.
expiresAtstring (ISO 8601)Quote expiry; already accepted funds still require reconciliation after this time.
transactionHashstring | nullBlockchain transaction hash, if any.
networkstring | nullPayment network, if any.
resultunknown | nullPurpose-specific persisted application result; no universal nested response schema is declared.
errorstring | nullPersisted payment error, if any.