Skip to main content

Successful responses

Every successful response has the same shape:
A few endpoints return a file rather than JSON — downloading a backup or an app’s file. Their pages say so. Many objects point at others — a subscription at its user, a server at its datacenter, plan and subscription. Each endpoint decides how much of a related object it sends:
  • In full, when the endpoint includes it. GET /vps/{vmId}, for example, sends the server’s whole plan, datacenter and subscription.
  • Only its id, when it does not — "user": { "id": "3f1c…" }. Fetch the object itself if you need more.
  • null when there is nothing to point at, such as a server without the backup add-on.
So check for the fields you need rather than assuming a related object is complete. In the API reference these fields are marked as one of the two shapes.

Errors

Every error has this shape, with a matching HTTP status:
Each endpoint page in the API reference lists the errors it can return, grouped by status.

Validation errors

A request whose body, query or path parameters do not match what the endpoint expects is refused with 422 VALIDATION_ERROR. details points at each field that failed:

Common codes

Retrying safely

  • Reads (GET) are always safe to retry.
  • Power actions and updates (start, stop, restart, renaming, settings) can be retried — doing them twice has the same result as once.
  • Anything that charges or creates (POST /vps, POST /apps, /order, /renew) should not be retried blindly after a timeout. List your servers, apps or transactions first to see whether the first attempt went through.