| [ Web Proxy ] |
| Viewing: https://developers.cloudflare.com/api/resources/registrar/ | [Back] [Original] |
Registrar API for searching, checking, registering, and managing domains through Cloudflare Registrar.
Before using this API, ensure:
https://dash.cloudflare.com/{account_id}/billing/payment-info before
calling POST /registrations.Throughout this API, extension refers to the domain extension part of a fully
qualified domain name the portion after the registrable label. For example,
in example.co.uk, the extension is co.uk (not just uk). This covers both
top-level domains like com and multi-level extensions like co.uk. This is
distinct from other uses of the word extension (e.g., EPP extensions).
This API supports programmatic registration for all extensions supported by the dashboard experience, with the following exceptions:
giving, mom, inc, lol, sh, link, cc, new
Cloudflare Registrar supports 400+ extensions in the dashboard. Extensions
listed above can be registered at https://dash.cloudflare.com/{account_id}/domains/registrations.
GET /domain-search?q={keyword} to discover available domains.POST /domain-check with candidate domains to verify real-time
availability and pricing.registrable: false, inspect reason to
understand whether the domain is unavailable, the extension is not supported
by this API, the extension is not supported by Cloudflare Registrar at all,
or the extensions registry has frozen new registrations.tier: premium, premium registration is
not currently supported by this API. Surface the premium pricing to the user,
but do not proceed to POST /registrations for that domain.GET /extensions/:extension_name
to discover the required values for registering this extension.POST /registrations with the chosen domain name for
supported non-premium registrations.201 Created, registration
completed within the default timeout and no polling is needed.202 Accepted, poll
links.self from the workflow response.state: action_required, stop polling and
surface context.action to the user.
The workflow will not resolve on its own.state: blocked, continue polling and
inform the user that a third party, such as the extension registry or losing
registrar, is delaying progress.state: failed, review
error.code and error.message, then decide whether user action or a new
Check call is needed.All successful domain registrations are non-refundable. Once the registration
workflow completes with state: succeeded, the charge cannot be reversed.
Confirm pricing and domain choice with the user before calling POST /registrations.
By default, mutating operations such as create and update hold the connection for a bounded, server-defined amount of time while the operation completes. In most cases, the response contains a completed workflow status and no polling is required.
201 (create)
or 200 (update) with a workflow_status where state: succeeded and
completed: true.202 Accepted with a workflow_status where completed: false. Use
the links.self URL to poll for completion.To receive an immediate 202 Accepted response without waiting, send the
Prefer: respond-async request header (RFC 7240). The server will acknowledge
it with a Preference-Applied: respond-async response header.
When the response is 202, poll the workflow status endpoint indicated by
links.self in the response body until the workflow reaches a terminal
state or requires user action.
A domain registration resource representing the current state of a registered domain.
When the domain was registered. Present when the registration resource exists.
Fully qualified domain name (FQDN) including the extension
(e.g., example.com, mybrand.app). The domain name uniquely
identifies a registration the same domain cannot be registered
twice, making it a natural idempotency key for registration requests.
When the domain registration expires. Present when the registration is ready; may be null only while status is registration_pending.
Current registration status.
active: Domain is registered and operationalregistration_pending: Registration is in progressexpired: Domain has expiredsuspended: Domain is suspended by the registryredemption_period: Domain is in the redemption grace periodpending_delete: Domain is pending deletion by the registryStatus of an async registration workflow.
Whether the workflow has reached a terminal state. true when
state is succeeded or failed. false for pending,
in_progress, action_required, and blocked.
Workflow lifecycle state.
pending: Workflow has been created but not yet started processing.in_progress: Actively processing. Continue polling links.self.
The workflow has an internal deadline and will not remain in this
state indefinitely.action_required: Paused requires action by the user (not the
system). See context.action for what is needed. An automated
polling loop must break on this state; it will not resolve on its
own without user intervention.blocked: The workflow cannot make progress due to a third party
such as the domain extensions registry or a losing registrar.
No user action will help. Continue polling the block may resolve
when the third party responds.succeeded: Terminal. The operation completed successfully.
completed will be true. For registrations, context.registration
contains the resulting registration resource.failed: Terminal. The operation failed. completed will be true.
See error.code and error.message for the reason. Do not
auto-retry without user review.Workflow-specific data for this workflow.
The workflow subject is identified by context.domain_name for
domain-centric workflows.
Error details when a workflow reaches the failed state. The specific
error codes and messages depend on the workflow type (registration,
update, etc.) and the underlying registry response. These workflow
error codes are separate from immediate HTTP error errors[].code
values returned by non-2xx responses. Surface
error.message to the user for context.
Contains the search results.
Array of domain suggestions sorted by relevance. May be empty if no domains match the search criteria.
The fully qualified domain name (FQDN) in punycode format for internationalized domain names (IDNs).
Indicates whether this domain appears available based on search data. Search results are non-authoritative and may be stale. - true: The domain appears available. Use POST /domain-check to confirm before registration.
false: The domain does not appear available in search results.Annual pricing information for a registrable domain. This object is only
present when registrable is true. All prices are per year and returned
as strings to preserve decimal precision.
registration_cost and renewal_cost are frequently the same value, but
may differ especially for premium domains where registries set different
rates for initial registration vs. renewal. For a multi-year registration
(e.g., 4 years), the first year is charged at registration_cost and each
subsequent year at renewal_cost. Registry pricing may change over time;
the values returned here reflect the current registry rate. Premium pricing
may be surfaced by Search and Check, but premium registration is not currently
supported by this API.
The first-year cost to register this domain. For premium domains
(tier: premium), this price is set by the registry and may be
significantly higher than standard pricing. For multi-year
registrations, this cost applies to the first year only; subsequent
years are charged at renewal_cost.
Per-year renewal cost for this domain. Applied to each year beyond
the first year of a multi-year registration, and to each annual
auto-renewal thereafter. May differ from registration_cost,
especially for premium domains where initial registration often
costs more than renewals.
Present only when registrable is false on search results. Explains why the domain does not appear registrable through this API. These values are advisory; use POST /domain-check for authoritative status.
extension_not_supported_via_api: Cloudflare Registrar supports this extension in the dashboard but it is not yet available for programmatic registration via this API.extension_not_supported: This extension is not supported by Cloudflare Registrar at all.extension_disallows_registration: The extensions registry has temporarily or permanently frozen new registrations.domain_premium: The domain is premium priced. Premium registration is not currently supported by this API.domain_unavailable: The domain appears unavailable.Contains the availability check results.
Array of domain availability results. Domains on unsupported
extensions are included with registrable: false and a reason
field. Malformed domain names may be omitted.
The fully qualified domain name (FQDN) in punycode format for internationalized domain names (IDNs).
Indicates whether this domain can be registered programmatically through this API based on a real-time registry check.
true: Domain is available for registration. The pricing object will be included.false: Domain is not available. See the reason field for why. tier may still be present on some non-registrable results, such as premium domains.Annual pricing information for a registrable domain. This object is only
present when registrable is true. All prices are per year and returned
as strings to preserve decimal precision.
registration_cost and renewal_cost are frequently the same value, but
may differ especially for premium domains where registries set different
rates for initial registration vs. renewal. For a multi-year registration
(e.g., 4 years), the first year is charged at registration_cost and each
subsequent year at renewal_cost. Registry pricing may change over time;
the values returned here reflect the current registry rate. Premium pricing
may be surfaced by Search and Check, but premium registration is not currently
supported by this API.
The first-year cost to register this domain. For premium domains
(tier: premium), this price is set by the registry and may be
significantly higher than standard pricing. For multi-year
registrations, this cost applies to the first year only; subsequent
years are charged at renewal_cost.
Per-year renewal cost for this domain. Applied to each year beyond
the first year of a multi-year registration, and to each annual
auto-renewal thereafter. May differ from registration_cost,
especially for premium domains where initial registration often
costs more than renewals.
Present only when registrable is false. Explains why the domain cannot be registered via this API.
extension_not_supported_via_api: Cloudflare Registrar supports this extension in the dashboard but it is not yet available for programmatic registration via this API. The user can register via https://dash.cloudflare.com/{account_id}/domains/registrations.extension_not_supported: This extension is not supported by Cloudflare Registrar at all.extension_disallows_registration: The extensions registry has temporarily or permanently frozen new registrations. No registrar can register domains on this extension at this time.domain_premium: The domain is premium priced. Premium registration is not currently supported by this API.domain_unavailable: The domain is already registered, reserved, or otherwise not available on a supported extension.Shows if a domain is available for transferring into Cloudflare Registrar.
Shows contact information for domain registrant.
A comma-separated list of registry status codes. A full list of status codes can be found at EPP Status Codes.
Whether a particular TLD is currently supported by Cloudflare Registrar. Refer to TLD Policies for a list of supported TLDs.
Statuses for domain transfers into Cloudflare Registrar.
Shows transfer status with the registry.
Privacy guards are disabled at the foreign registrar.
| Web Proxy Viewer | New URL | Original Page |