/api/v2/routed-ipv6 Use action: "allocate_pool" to add the account-level /48 when the account has none yet.
Use action: "create_route" with poolId, vpsId, and prefixLength to route a /48, /56, or /64 to a VPS.
prefix is optional; when omitted, the server chooses the first available child prefix in the selected /48.
Creating a route also adds the prefix to the VPS anti-spoofing IP set, and the route propagates to the network asynchronously — allow a short delay after the response before the subnet is reachable.
write:network
Authenticate with an API key in the Authorization: Bearer <token> header.
Authorization Bearer <token> Accept application/json Content-Type application/json action string · enum
· Example: create_route allocate_pool create_route poolId string
· Example: ripv6_01hxa3b4c5d6e7f8g9h0j1k2m3 Required for create_route. Use pools[].id from GET /api/v2/routed-ipv6.
vpsId string
· Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m5 Required for create_route. Use an eligible destinations[].vpsId value.
prefixLength integer · enum
· Example: 64 Required for create_route; allowed child prefix length.
48 56 64 prefix string
· Example: 2001:db8:1000:100::/56 Optional explicit child prefix. Omit it to let the server choose the first available prefix.
label string
· Example: web subnet Optional customer label for the route.
allocate_pool response includes the new pool in pools[] (and canAllocatePool becomes disallowed); a successful create_route response includes the new route under its pool. 6 fields available boolean
· Example: true reason string · nullable
· Example: null allowedPrefixLengths array<integer>
· Example: [48,56,64] pools array<object> pools[].id string required
· Example: ripv6_01hxa3b4c5d6e7f8g9h0j1k2m3 pools[].parentCidr string required
· Example: 2001:db8:1000::/48 pools[].prefixLength integer · enum required
· Example: 48 48 pools[].status string · enum required
· Example: active active pools[].allocatedAt string · nullable required
· Example: 2026-06-15T12:00:00.000Z Nullable: may be null when not applicable.
pools[].updatedAt string · nullable required
· Example: 2026-06-15T12:00:00.000Z Nullable: may be null when not applicable.
pools[].routes array<object> required pools[].routes[].id string required
· Example: ripv6rt_01hxa3b4c5d6e7f8g9h0j1k2m4 pools[].routes[].prefix string required
· Example: 2001:db8:1000:10::/64 pools[].routes[].prefixLength integer · enum required
· Example: 64 48 56 64 pools[].routes[].nextHop string required
· Example: 2001:db8::10 pools[].routes[].label string · nullable required
· Example: web subnet Nullable: may be null when not applicable.
pools[].routes[].vpsId string required
· Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m5 pools[].routes[].vpsName string required
· Example: web-01 pools[].routes[].status string · enum required
· Example: active active pools[].routes[].allocatedAt string · nullable required
· Example: 2026-06-15T12:01:00.000Z Nullable: may be null when not applicable.
pools[].routes[].updatedAt string · nullable required
· Example: 2026-06-15T12:01:00.000Z Nullable: may be null when not applicable.
pools[].routes[].actions object required pools[].routes[].actions.canDelete object required Whether one routed IPv6 action is currently available.
pools[].routes[].actions.canDelete.allowed boolean required
· Example: true pools[].routes[].actions.canDelete.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
pools[].actions object required pools[].actions.canCreateRoute object required Whether one routed IPv6 action is currently available.
pools[].actions.canCreateRoute.allowed boolean required
· Example: true pools[].actions.canCreateRoute.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
pools[].actions.canRelease object required Whether one routed IPv6 action is currently available.
pools[].actions.canRelease.allowed boolean required
· Example: true pools[].actions.canRelease.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
destinations array<object> destinations[].vpsId string required
· Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m5 destinations[].name string required
· Example: web-01 destinations[].hostname string · nullable required
· Example: web-01.example.com Configured VPS hostname when one is set. Use name as the display fallback when this is null.
destinations[].primaryIp string · nullable required
· Example: 192.0.2.10 Nullable: may be null when not applicable.
destinations[].nextHop string · nullable required
· Example: 2001:db8::10 Nullable: may be null when not applicable.
destinations[].serviceStatus string required
· Example: active destinations[].actions object required destinations[].actions.canReceiveRoute object required Whether one routed IPv6 action is currently available.
destinations[].actions.canReceiveRoute.allowed boolean required
· Example: true destinations[].actions.canReceiveRoute.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
actions object actions.canAllocatePool object required Whether one routed IPv6 action is currently available.
actions.canAllocatePool.allowed boolean required
· Example: true actions.canAllocatePool.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
actions.canCreateRoute object required Whether one routed IPv6 action is currently available.
actions.canCreateRoute.allowed boolean required
· Example: true actions.canCreateRoute.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
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 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 routed_ipv6_pool_exists), the target VPS is not ready for routed IPv6 (routed_ipv6_conflict), the target VPS does not have IPv6 enabled yet (routed_ipv6_next_hop_missing), the requested prefix overlaps an existing route (routed_ipv6_conflict), or no child prefix of the requested length remains available (routed_ipv6_capacity_exhausted). No body No response body
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 https://cloud.hostup.se/api/v2/routed-ipv6 curl -X POST "https://cloud.hostup.se/api/v2/routed-ipv6" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"action": "allocate_pool"
}' {
"available": true,
"reason": null,
"allowedPrefixLengths": [
48,
56,
64
],
"pools": [
{
"id": "ripv6_01hxa3b4c5d6e7f8g9h0j1k2m3",
"parentCidr": "2001:db8:1000::/48",
"prefixLength": 48,
"status": "active",
"allocatedAt": "2026-06-15T12:00:00.000Z",
"updatedAt": "2026-06-15T12:00:00.000Z",
"routes": [],
"actions": {
"canCreateRoute": {
"allowed": true,
"reason": null
},
"canRelease": {
"allowed": true,
"reason": null
}
}
}
],
"destinations": [
{
"vpsId": "vps_01hxa3b4c5d6e7f8g9h0j1k2m5",
"name": "web-01",
"hostname": "web-01.example.com",
"primaryIp": "192.0.2.10",
"nextHop": "2001:db8::10",
"serviceStatus": "active",
"actions": {
"canReceiveRoute": {
"allowed": true,
"reason": null
}
}
}
],
"actions": {
"canAllocatePool": {
"allowed": false,
"reason": "This account already has a routed /48."
},
"canCreateRoute": {
"allowed": true,
"reason": null
}
}
} {
"action": "allocate_pool"
}