When a customer changes their marketing site (or you need to move forwarding off a stale URL),Documentation Index
Fetch the complete documentation index at: https://docs.peeker.ai/llms.txt
Use this file to discover all available pages before exploring further.
POST /domains/forwarding repoints any number of domains at one new URL in a single call. The job runs async; domains already pointed at the URL are returned as completed.
For a fresh order, set
forwarding_url on POST /orders instead — that handles forwarding inline
as part of provisioning. This guide is for changing forwarding on domains that are already
live.Steps in detail
1. Submit the bulk change
1. Submit the bulk change
Each row in
domains[] can be a dom_… ID or a raw domain name — both resolve to the same domain row. The whole request returns quickly with an fwj_… job ID; the actual work runs async.cURL
202 Accepted
2. Poll until terminal
2. Poll until terminal
Poll
GET /domains/forwarding/{id} until the job reaches one of three terminal states:completed— every submitted domain succeeded.partial_success— some completed and some failed.failed— the whole job hit an unrecoverable error.
completed with newly updated domains.cURL
200 OK · completed
3. Listen for the webhooks
3. Listen for the webhooks
Forwarding job webhooks use the same
data shape as GET /domains/forwarding/{id}. That makes webhook handling and polling use the same parser.4. Failure reasons & remedies
4. Failure reasons & remedies
| Reason | What to do |
|---|---|
dns_lookup_failed | The customer’s domain isn’t resolving (likely a registrar issue). Re-import or wait. |
target_unreachable | The forwarding URL returned 5xx during validation. Check the URL is live and https. |
invalid_target | URL is malformed or not http(s)://. Send a corrected URL on a fresh forwarding job. |
completed.Things to handle in production
- Mixing
dom_…IDs and raw names. Both resolve. If you have the IDs already (from a previous order response), they’re slightly faster — Peeker skips the lookup. - Per-domain overrides on a fresh order. If you’re placing a new order and most domains share one forwarding URL but one is different, set
forwarding_urlonPOST /ordersand pass an override object for the odd domain — no separatePOST /domains/forwardingcall needed. Example in Buying domains & ordering. - Rate budget. A bulk change of 100 domains in one call burns one rate-limit token (out of 600/min). Cheaper than 100 separate calls.
What’s next
Buying domains & ordering
Set forwarding inline when you place a fresh order.
Webhooks
Verify forwarding event signatures and dedupe on
Peeker-Event-Id.