POST /domains/availability accepts up to 25 domains per call and returns one row per domain - available, taken, premium, or unusable for a specific provider. The cache is fresh for 5 minutes per domain; stale rows return reason: "stale" and Peeker refreshes them in the background.
Full workflow
cURL · full workflow
Steps in detail
1. Send the batch
1. Send the batch
Per-row fields:
| Field | Meaning |
|---|---|
available | true if you can register and order it now. |
usable_for | Which mail providers the domain can run - ["google", "microsoft"], ["google"] only, or absent if unavailable. |
premium | true if the registry classifies it as premium (high cost, manual procurement only). |
reason | Present only when available: false. Possible values: taken, premium, invalid, errored, stale. |
200 OK
2. Filter for orderable rows
2. Filter for orderable rows
In your UI, present any
available: true row that includes the customer’s chosen provider in
usable_for. Hide premium and stale rows or surface them as “needs manual help.”3. Debounce in your UI
3. Debounce in your UI
The availability cache is fresh for 5 minutes per domain. Stale rows return
reason: "stale" and Peeker refreshes them in the background.In a search box, debounce keystrokes by 250–400 ms and batch the latest typed candidates into one call. Don’t fire one request per character - a single call with 25 domains is far cheaper (and burns one rate-limit token instead of 25).4. Premium domains aren't orderable via API
4. Premium domains aren't orderable via API
What’s next
Buying domains & ordering
Take the available domains and place an order - Peeker buys from a partner registrar.
Importing domains & ordering
The customer already owns domains? Import them and order on top.