Requests & errors.
Request format
Use GET for reads and POST with Content-Type: application/json for writes. Put each field in its documented path, query or body location. Unexpected fields are rejected. Responses are business objects or arrays, not a common data envelope.
Retries and async work
Use a unique requestKey per intended operation, then keep that key and identical parameters for retries. A 202 or pending:true result is not completion. Query the returned taskKey, payment ID or order ID. An unknown outcome is never a reason to repurchase.
Errors
Errors commonly use { error: string }. Check the HTTP status and the endpoint's result: some capability failures are HTTP 200 with supported:false. Error text is not a stable machine code.
{ "error": "invalid request" }Rate limits
HTTP API and MCP each enforce 120 requests per minute per IP per process. HTTP wallet authentication also has a 10-per-minute login limit. A 429 response includes Retry-After: 60. Wait before retrying; these limits are not a throughput guarantee.
Pagination and money
Pagination is endpoint-specific: history uses an opaque cursor, messages use pages of 8, events use pages of 10. USD balances and quotes are integer-cent strings. Catalog monthlyFromUsd and totalUsd are decimal-dollar strings. Do not interchange them.
Destructive operations
Read the endpoint warning before changing server state, snapshots, firewalls or ownership. AI terminate/reinstall require one-use wallet consent in addition to confirmation. Renewal currently reports unavailable; an auto-renew preference does not extend service.