Request Dedicated IP

POST /v1/dedicated-ips/requests

Submit a new dedicated-IP allocation request. The request enters a pending queue and is fulfilled by an admin: for a single request the admin picks one pool IP; for a per_region request the admin auto-assigns one IP per requested region (no manual pick).

Two modes — choose with selection_mode:

  • single (default): one IP in one region. Attached endpoints get a plain DNS A-record at the endpoint hostname. Pass region_slug.
  • per_region: a group of one IP per region, geo-routed via GeoDNS behind a single CNAME — visitors resolve to the nearest regional IP. Pass regions (at least 2 distinct active regions). On approval this creates a per-region group you attach via POST /v1/endpoints/{uuid}/dedicated-ip-group.

Account scope: the IP(s) are allocated to your active account and billed at the account level. Use switch account to request for a different account.

Prerequisites:

  • Plan must include the dedicated_ips entitlement.
  • The dedicated-ip add-on must be enabled platform-wide.
  • A valid payment method must be on file (returns 402 otherwise).
  • An active subscription must exist (no free-tier dedicated IPs).

Maximum 6 active dedicated IPs per account (platform constant); for per_region the existing count plus the number of requested regions must not exceed that cap. Pending requests are deduplicated per account: a second single request for the same region (or a second open per_region request) before the first one resolves returns 409.

Setup fee: beyond the recurring per-IP charge, provisioning incurs a one-time, non-refundable setup fee set by the operator. The per_region setup fee is charged per region (× the number of regions). The fee is re-charged if a standby-parked IP is later reattached on a re-upgrade.

Request body

selection_mode string
single (default) or per_region. Determines which of region_slug / regions is required.
region_slug string
Single region slug (from /regions). Must be active. Required for single; ignored for per_region.
regions string[]
Region slugs for the geo-routed group. Required for per_region: at least 2 distinct active regions (duplicates are collapsed). Ignored for single.
reason string
Free-form business justification. Max 2000 chars. Helpful for admin review.

Response (201 Created)

The newly-created request. Initial status: "pending"; poll /requests until fulfilled. A per_region response additionally echoes selection_mode and the normalized regions array.

Errors

400 Bad Request
Invalid selection_mode; missing region_slug (single); fewer than 2 distinct regions or more than 6 (per_region); a region not found / not active; or reason > 2000 chars.
401 Unauthorized
Missing auth.
402 Payment Required
No payment method on file or no active subscription.
403 Forbidden
Plan doesn't include dedicated_ips.
409 Conflict
At (or, for per_region, would exceed) the 6-IP per-account cap, OR a pending request already exists (same region for single, or an open per_region request).
503 Service Unavailable
The dedicated-IP add-on is currently disabled platform-wide.
Request — single
curl -X POST "https://api.ngris.com/v1/dedicated-ips/requests" \ -H "X-API-KEY: <your_api_key>" \ -H "Content-Type: application/json" \ -d '{ "selection_mode": "single", "region_slug": "eu-north-1", "reason": "Customer firewall requires a fixed source IP for our outbound calls" }'
Request — per_region (GeoDNS)
curl -X POST "https://api.ngris.com/v1/dedicated-ips/requests" \ -H "X-API-KEY: <your_api_key>" \ -H "Content-Type: application/json" \ -d '{ "selection_mode": "per_region", "regions": ["eu-north-1", "us-east-1"], "reason": "Geo-routed dedicated IPs for global allow-listing" }'
Python
from ngris import Ngris client = Ngris(api_key="<your_api_key>") req = client._post_raw("/dedicated-ips/requests", { "selection_mode": "per_region", "regions": ["eu-north-1", "us-east-1"], "reason": "Geo-routed dedicated IPs", }) print(f"Request #{req['id']} submitted (status: {req['status']})")
Response — 201 Created (single)
{ "id": 17, "status": "pending" }
Response — 201 Created (per_region)
{ "id": 18, "status": "pending", "selection_mode": "per_region", "regions": ["eu-north-1", "us-east-1"] }
On this page
Request Dedicated IP
Iris