List Dedicated IP Requests

GET /v1/dedicated-ips/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" } ] }
Iris