Statuses and errors
Availability
Each name from search or suggestions has available.
| Field | Values |
|---|---|
tier (when available) | standard: the ending's usual price. premium: priced higher by the registry; tell the person. |
reason (when not available) | See below |
reason | Means | Do |
|---|---|---|
domain_ | Someone has it, or the registry holds it | Suggest other names |
extension_ | Nymwell can't sell this ending | Try another ending |
extension_ | The registry is not taking new names in this ending | Try another ending |
Availability comes only from the registrar. DNS, WHOIS, RDAP and screen_domains are screening.
Workflow
Anything that waits on a person, a payment or the registrar returns workflow:
{
"state": "action_required",
"completed": false,
"action": {"type": "pay_checkout", "url": "https://checkout.stripe.com/…", "message": "Give url to the person; paying is their approval."},
"links": {"self": "https://nymwell.com/api/v1/orders?id=ord_…"}
}
state | Means | Do |
|---|---|---|
in_ | Nymwell or the registrar is working on it | Check links.self again in a few seconds |
blocked | Waiting on a third party, such as the current registrar releasing a transfer | Check again later; tell the person it can take days |
action_ | Waiting on the person (action.type: pay_ or approve_) | Give the person action.url; stop polling until they act |
succeeded | Done (completed: true) | Stop |
failed | Ended without doing it (completed: true); error.code and error.message say why | Tell the person; don't retry without them |
Order statuses
status on an order, and the workflow state it maps to.
status | workflow.state |
|---|---|
awaiting_ | action_ (pay_checkout) |
registering, renewing, transferring | in_ |
needs_ | in_: the registrar didn't answer clearly; Nymwell checks before retrying, so nothing is bought twice |
transfer_ | blocked: the current registrar usually releases within 5 days |
registered, renewed, transferred | succeeded |
checkout_ | failed: the person didn't pay; quote again |
failed_ | failed: the registrar refused and the payment was refunded |
payment_ | failed: auto-renew couldn't charge the saved card |
failed | failed |
Approvals (list_approvals, GET /api/v1/approvals): pending is action_required (approve_in_console); approved and applied is succeeded; rejected, expired and cancelled are failed.
Error codes
error | HTTP | Do |
|---|---|---|
authentication_ | 401 | The call needs the person's account: give them buy_, or connect to https://nymwell.com/mcp/account |
invalid_, invalid_ | 401 | Sign in again, or ask for a new key |
insufficient_ | 403 | The key lacks that scope |
domain_ | 403 | The key's domain allowlist excludes this domain |
invalid_ | 400 | Send a name like example.com, without a path or email |
rate_ | 429 | Wait retry_ |
domain_ | 409 | Someone has it; search again |
term_ | 422 | That number of years isn't offered; get_ lists the allowed terms |
quote_, quote_ | 409 | Get a new quote |
registrant_ | 409 | A signed-in owner adds who domains are registered to, at https://nymwell.com/app/billing/#registrant |
registrar_ | 503 | Buying is paused; nothing was charged |
integration_ | 503 | That part isn't connected yet; GET /api/v1/status shows what is |
registrar_ | 422 or 502 | The registrar refused (422) or didn't answer (502); nothing was charged |