/api/v2/products/shared-hosting List shared hosting (webbhotell) plans that can be ordered through POST /api/v2/orders.
Use data[].slug as items[].productSlug on a shared_hosting order item, set items[].primaryDomain to the domain the hosting account should use, and pick one of the returned billingCycles[].billingCycle values.
Only order products where available is true.
This is a product catalog endpoint, not the endpoint for existing shared-hosting accounts; use GET /api/v2/shared-hosting for provisioned accounts.
No authentication required.
limit integer · min: 1 · max: 100 · default: 20
· Example: 20 Page size from 1 to 100. Defaults to 20. Values above 100 are rejected with 400 invalid_pagination_limit.
cursor string Opaque cursor from nextCursor for the next page.
locale string · enum
· Example: en Optional label locale. Supported values are en and sv; unsupported values fall back to English.
en sv Accept application/json data array<object> required data[].id string required
· Example: shprod_01hxa3b4c5d6e7f8g9h0j1k2m3 Stable public product ID for this plan. Use slug, not id, when creating orders.
data[].slug string required
· Example: webbhotell-start Canonical value to send as items[].productSlug in POST /api/v2/orders.
data[].tier string required
· Example: start Short plan tier used for display and sorting.
data[].name string required
· Example: Webbhotell Start data[].resources object required data[].resources.cpuCores number · nullable required
· Example: 1 CPU core or CPU-time allowance. null means unlimited or not published by the upstream catalog.
data[].resources.memoryGb number · nullable required
· Example: 1 RAM allowance in GB. null means unlimited or not published by the upstream catalog.
data[].resources.storageGb number · nullable required
· Example: 20 Disk quota in GB. null means unlimited.
data[].resources.bandwidthGb number · nullable required
· Example: 1024 Traffic quota in GB. null means unlimited.
data[].resources.emailAccountLimit integer · nullable required
· Example: 10 Mailbox limit. null means unlimited.
data[].resources.databaseLimit integer · nullable required
· Example: 5 Database limit. null means unlimited.
data[].billing object required data[].billing.amount number required
· Example: 99 Amount for the primary/default billing cycle, in the currencyCode currency.
data[].billing.currencyCode string required
· Example: SEK ISO-4217 currency code for amount.
data[].billing.billingCycle string · enum required
· Example: annually monthly annually free data[].billingCycles array<object> required Enabled billing cycles. Use one of these billingCycle values in the shared-hosting order item.
data[].billingCycles[].billingCycle string · enum required
· Example: annually monthly annually data[].billingCycles[].amount number required
· Example: 990 Recurring price for this billing cycle, in the currencyCode currency.
data[].billingCycles[].currencyCode string required
· Example: SEK ISO-4217 currency code for amount and setupAmount.
data[].billingCycles[].setupAmount number · nullable required
· Example: null One-time setup fee in the currencyCode currency; null when there is no setup fee.
data[].billingCycles[].isPrimary boolean required
· Example: true data[].availabilityStatus string · enum required
· Example: available available is orderable; out_of_stock means do not create an order for that plan. Plans that are not offered are omitted from the response entirely.
available out_of_stock data[].available boolean required
· Example: true data[].reason string · nullable required
· Example: null Customer-facing reason when available is false.
data[].controlPanel object required data[].controlPanel.type string · enum required
· Example: cpanel cpanel data[].controlPanel.supportsWhm boolean
· Example: true Present only for reseller-style plans that include WHM.
hasMore boolean required
· Example: false nextCursor string · nullable required
· Example: null type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object Retry-After seconds plus X-RateLimit-* headers. 10 fields type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object https://cloud.hostup.se/api/v2/products/shared-hosting curl -X GET "https://cloud.hostup.se/api/v2/products/shared-hosting" \
-H "Accept: application/json" {
"data": [
{
"id": "shprod_01hxa3b4c5d6e7f8g9h0j1k2m3",
"slug": "webbhotell-start",
"tier": "start",
"name": "Webbhotell Start",
"resources": {
"cpuCores": 1,
"memoryGb": 1,
"storageGb": 20,
"bandwidthGb": 1024,
"emailAccountLimit": 10,
"databaseLimit": 5
},
"billing": {
"amount": 990,
"currencyCode": "SEK",
"billingCycle": "annually"
},
"billingCycles": [
{
"billingCycle": "monthly",
"amount": 99,
"currencyCode": "SEK",
"setupAmount": null,
"isPrimary": false
},
{
"billingCycle": "annually",
"amount": 990,
"currencyCode": "SEK",
"setupAmount": null,
"isPrimary": true
}
],
"availabilityStatus": "available",
"available": true,
"reason": null,
"controlPanel": {
"type": "cpanel"
}
}
],
"hasMore": false,
"nextCursor": null
}