List Dedicated IP Requests
List the IP allocation requests the user has submitted, with their current state. Use to poll for fulfilment after calling POST /v1/dedicated-ips/requests — the request enters pending, gets reviewed/auto-approved, then fulfilled when an IP is allocated. Cancelled or denied requests stay in the list for audit purposes.
Response (200 OK)
JSON array of requests, ordered by created_at DESC:
uuid string (uuid)
The request's public id. Use it in /dedicated-ips/requests/{request_uuid}/cancel.
region_slug string
Region the IP was requested in (single mode). Empty for
per_region requests — see regions_csv.selection_mode string
single (one IP, one region) or per_region (a GeoDNS group of one IP per region).regions_csv string
Comma-separated region slugs for a
per_region request (e.g. eu-fi,us-va). Empty for single requests.reason string
Free-form business justification supplied at request time.
status string
pending (awaiting review/auto-fulfilment), fulfilled (IP allocated; check assignment_uuid), cancelled (user cancelled), denied (admin rejected; review_reason set).review_reason string
Human-readable note recorded when the request was reviewed (e.g. denial reason). Empty until reviewed.
assignment_uuid string (uuid)?
When
status: "fulfilled": the allocated assignment's uuid. Cross-reference with /dedicated-ips. Omitted while not yet fulfilled.created_at datetime
When the request was submitted.
reviewed_at datetime
When the request was reviewed (fulfilled, cancelled, or denied). Omitted while still pending.
Deprecated: until the sunset this response also carries the legacy integer id and *_id fields. Don't use them; read uuid and the *_uuid fields.
Errors
401 Unauthorized
Missing auth.
Request
curl "https://api.ngris.com/v1/dedicated-ips/requests" \
-H "X-API-KEY: <your_api_key>"
Python — poll until fulfilled
import time
from ngris import Ngris
client = Ngris(api_key="<your_api_key>")
req_uuid = "019b1d33-2ca9-7bd2-b322-1330190fd290"
while True:
requests = client.dedicated_ips.list_requests()
req = next(r for r in requests["items"] if r["uuid"] == req_uuid)
if req["status"] == "fulfilled":
print(f"IP allocated: assignment {req['assignment_uuid']}")
break
if req["status"] in ("cancelled", "denied"):
print(f"Failed: {req['status']}")
break
time.sleep(60)
Response — 200 OK
{
"items": [
{
"uuid": "019b1d33-2ca9-7bd2-b322-1330190fd290",
"region_slug": "eu-fi",
"reason": "Customer firewall requires fixed source IP",
"status": "pending",
"review_reason": "",
"created_at": "2026-04-29T13:00:00Z"
}
]
}
Was this helpful?