IDs
Checked against the API code 3 November 2026
Every resource in the API has an ID that starts with its type. vps_01hxa3b4c5d6e7f8g9h0j1k2m3 is a VPS, dom_… is a domain and inv_… is an invoice. The prefix tells you and your code what the ID points at.
Rules for IDs
Section titled “Rules for IDs”- Treat an ID as an opaque string. Do not parse it or build one. Older IDs can be shorter than new ones.
- Store an ID exactly as it came. Compare it exactly.
- An ID does not change. The same server keeps the same
vps_ID for as long as it exists. - Use an ID only where its type belongs. A
dom_ID in a VPS path does not find a VPS. - Never put an IP address or a host name where an ID belongs. Find an ID from a name or an address shows how to look one up.
Where each ID comes from
Section titled “Where each ID comes from”Take an ID from the list endpoint for its type. The response that created a resource also carries its ID. Orders are the exception. See The ID of something you ordered.
| Prefix | What it is | Where you get it |
|---|---|---|
client_ | Your account | Get your account |
vps_ | A VPS or a Cloud VPS | List VPS instances |
bkp_ | A backup of a VPS, of a web hosting account or of one database on it. Each one works only on the paths of the list it came from. | List VPS backups, List web hosting backups, List database backups |
os_ | Operating system template for a reinstall. Send it as templateId to Reinstall a VPS. | List the operating systems for a VPS |
ssh_ | SSH key | List saved SSH keys |
vol_ | Block volume | List volumes |
pnet_ | Private network | List private networks |
acct_ | Web hosting account | List web hosting accounts |
wp_ | WordPress site | List WordPress sites |
dom_ | Domain | List domains |
zone_ | DNS zone | List DNS zones |
drr_ | DNS record | List DNS zone records |
cdn_ | CDN zone | List CDN zones |
vpsprod_ | VPS plan. Orders take the plan’s slug, not this ID. | List VPS plans |
shprod_ | Web hosting plan. Orders take the plan’s slug, not this ID. | List web hosting plans |
ord_ | Order | id in the response of Create an order. Open orders: List open orders |
inv_ | Invoice | List invoices |
tkt_ | Support ticket | List support tickets |
job_ | Job | operation.jobId in a 202 response. See Jobs. |
dbj_ | Bulk domain job | operation.jobId from a bulk domain change, such as Change DNS records in several zones |
Most other resources follow the same pattern. A few paths take a name or a position instead: see the last point on this page.
The ID of something you ordered
Section titled “The ID of something you ordered”POST /api/v2/orders returns the order (ord_…) and its invoice (inv_…). It does not return an ID for the VPS, web hosting account or domain you ordered. Its hosting and domains items give the name and the price of each item. They carry no ID.
While the order is open, GET /api/v2/me/open-orders has one line per ordered item. lines[].resource.id is the vps_…, acct_… or dom_… ID once the service exists. It is null until then. An order is open while it is from the last 14 days and still has an item being set up or an unpaid invoice. The call needs the scope read:orders.
The new service is also in the list for its type. Find a VPS or a domain there by its name, as in the next section.
There is no list of all your orders. Keep the ord_ ID from the order response.
Find an ID from a name or an address
Section titled “Find an ID from a name or an address”You often know a server’s IP address or a domain name, not its ID. These lists take a filter and return only the matches:
| You know | Ask | Scope |
|---|---|---|
| A server’s main IP address | GET /api/v2/vps?primaryIp=192.0.2.10 | read:vm |
| A server’s name | GET /api/v2/vps?name=app-01 | read:vm |
| A domain name | GET /api/v2/domains?name=example.com | read:domains |
| A DNS zone’s name | GET /api/v2/dns-zones?name=example.com | read:dns |
Authentication and scopes explains how a key gets its scopes.
Put the address you know in the URL. Keep the URL in double quotes.
curl "https://cloud.hostup.se/api/v2/vps?primaryIp=192.0.2.10" \ -H "Authorization: Bearer $HOSTUP_API_KEY"{ "data": [ { "id": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3", "name": "app-01", "primaryIp": "192.0.2.10", "…": "…" } ], "hasMore": false, "nextCursor": null}export VPS_ID="vps_…" # data[0].id aboveprimaryIpmatches the server’s main IP address exactly.- On the VPS list,
namematches the whole name. Upper and lower case do not matter. It also matches the server’s display name,customerMetadata.displayName. - A name can match more than one VPS. Check that
datahas exactly one item before you use itsid. - On the domain and DNS zone lists,
namematches the whole domain name. Upper and lower case do not matter. A name with letters such as å or ü matches in its Unicode form and asxn--…. - No match gives an empty
datalist, not a404. - Some paths take a name or a position instead of an ID: a VPS snapshot by its
name, a firewall rule by its positionpos, a glue record by its host name and domain prices by the TLD. In the snapshot paths the parameter is called{snapshotId}. It takes the snapshot’snamefromGET /api/v2/vps/{id}/snapshots. The reference page for each endpoint says what a path parameter takes.
Next: All guides. One task per page, from restarting a VPS to paying an invoice.