Skip to documentation
POSTBearer token

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
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
JSON
{
  "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 · Required

string

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 · Required

string

Nonempty plan ID from the live catalog.

regionJSON body · Required

string

Region code from the catalog, 1–40 characters.

networkIdJSON body · Optional

string

Optional owned private network ID for this server order. The selection is immutable; unverified supplier support is rejected before payment or procurement.

daysJSON body · Required

integer

1–730 days. Choose an actual supported billing term for the plan.

hostnameJSON body · Required

string

3–16 ASCII letters or digits; normalized to lowercase.

osJSON body · Required

string

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 · Optional

string

system or a 24-character organization firewall ID.

rootPasswordJSON body · Optional

string

Optional root password, 8–128 characters. Not retained in the stored quote. Keep it private.

sshPublicKeyJSON body · Optional

string

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 · Optional

boolean

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.

purposestring

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.

amountstring

Integer USD cents.

assetstring ('USD')

The platform accounting asset.

statestring ('quoted' | 'authorized' | 'broadcast' | 'settled' | 'applied' | 'failed')

Durable payment-intent state.

modestring ('balance' | 'x402') | null

Selected funding mode, or null before selection.

expiresAtstring (ISO 8601)

Quote expiry; already accepted funds still require reconciliation after this time.

transactionHashstring | null

Blockchain transaction hash, if any.

networkstring | null

Payment network, if any.

resultunknown | null

Purpose-specific persisted application result; no universal nested response schema is declared.

errorstring | null

Persisted payment error, if any.