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/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:
id int64
Request ID.
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-west-1,us-east-1). 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_id), 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_id int64
When
status: "fulfilled": the allocated assignment's ID. 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.
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_id = 17
while True:
requests = client.dedicated_ips.list_requests()
req = next(r for r in requests["items"] if r["id"] == req_id)
if req["status"] == "fulfilled":
print(f"IP allocated: assignment_id={req['assignment_id']}")
break
if req["status"] in ("cancelled", "denied"):
print(f"Failed: {req['status']}")
break
time.sleep(60)
Response — 200 OK
{
"items": [
{
"id": 17,
"region_slug": "eu-north-1",
"reason": "Customer firewall requires fixed source IP",
"status": "pending",
"review_reason": "",
"created_at": "2026-04-29T13:00:00Z"
}
]
}