openapi: 3.2.0 info: description: Welcome to Cloudflare's API documentation site. license: name: BSD-3-Clause url: https://opensource.org/licenses/BSD-3-Clause title: Cloudflare Registrar Registration API version: 4.0.0 servers: - description: Client API url: https://api.cloudflare.com/client/v4 security: - api_email: [] api_key: [] - api_token: [] - user_service_key: [] tags: - name: Registrar Registration paths: /accounts/{account_id}/registrar-sandbox/registrations: get: operationId: sandbox-registrar-domain-registration-list summary: List Registrations description: 'Returns a paginated list of domain registrations owned by the account. This endpoint uses cursor-based pagination. Results are ordered by registration date by default. To fetch the next page, pass the `cursor` value from the `result_info` object in the response as the `cursor` query parameter in your next request. An empty `cursor` string indicates there are no more pages.' parameters: - name: account_id in: path description: Cloudflare account ID. required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_identifier' - $ref: '#/components/parameters/registrar-api-sandbox_cursor_pagination_cursor' - $ref: '#/components/parameters/registrar-api-sandbox_cursor_pagination_per_page' - $ref: '#/components/parameters/registrar-api-sandbox_cursor_pagination_direction' - name: sort_by in: query description: Column to sort results by. Defaults to registration date (`registry_created_at`) when omitted. schema: type: string default: registry_created_at enum: - registry_created_at - registry_expires_at - name responses: '200': description: List of registrations for the account. content: application/json: examples: empty_account: summary: Account with no registrations value: errors: [] messages: [] result: [] result_info: count: 0 cursor: '' per_page: 20 success: true multiple_domains: summary: Account with multiple domains value: errors: [] messages: [] result: - auto_renew: true created_at: '2025-01-15T10:00:00Z' domain_name: example.com expires_at: '2026-01-15T10:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: false created_at: '2025-03-20T14:30:00Z' domain_name: mybrand.dev expires_at: '2026-03-20T14:30:00Z' locked: true privacy_mode: redaction status: active result_info: count: 2 cursor: '' per_page: 20 success: true next_page: description: Response when fetching the next page by passing the cursor from a previous response. The empty cursor indicates this is the last page. summary: Next page of results (last page) value: errors: [] messages: [] result: - auto_renew: true created_at: '2025-04-01T09:00:00Z' domain_name: charlie.org expires_at: '2026-04-01T09:00:00Z' locked: true privacy_mode: redaction status: active result_info: count: 1 cursor: '' per_page: 20 success: true paginated: summary: First page with more results available value: errors: [] messages: [] result: - auto_renew: true created_at: '2024-01-15T09:30:00Z' domain_name: acmecorp.com expires_at: '2026-01-15T09:30:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-02-20T14:00:00Z' domain_name: brightwave.net expires_at: '2026-02-20T14:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-03-05T11:15:00Z' domain_name: cloudpeak.org expires_at: '2026-03-05T11:15:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-03-22T08:45:00Z' domain_name: solarpanel.io expires_at: '2026-03-22T08:45:00Z' locked: true privacy_mode: 'off' status: active - auto_renew: false created_at: '2024-04-10T16:00:00Z' domain_name: greenleaf.dev expires_at: '2026-04-10T16:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-05-03T10:30:00Z' domain_name: swiftrunner.app expires_at: '2026-05-03T10:30:00Z' locked: true privacy_mode: redaction status: active - auto_renew: false created_at: '2024-05-18T13:00:00Z' domain_name: northerntrail.co expires_at: '2025-05-18T13:00:00Z' locked: true privacy_mode: redaction status: expired - auto_renew: true created_at: '2024-06-01T07:20:00Z' domain_name: pixelforge.xyz expires_at: '2026-06-01T07:20:00Z' locked: false privacy_mode: redaction status: active - auto_renew: true created_at: '2024-06-25T15:45:00Z' domain_name: oceandrift.com expires_at: '2026-06-25T15:45:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-07-12T09:00:00Z' domain_name: rocketlaunch.net expires_at: '2026-07-12T09:00:00Z' locked: true privacy_mode: 'off' status: active - auto_renew: false created_at: '2024-08-08T12:30:00Z' domain_name: blueprintlab.io expires_at: '2026-08-08T12:30:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-09-01T18:00:00Z' domain_name: maplewood.org expires_at: '2026-09-01T18:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: false created_at: '2024-09-20T10:15:00Z' domain_name: thunderbolt.dev expires_at: '2025-09-20T10:15:00Z' locked: false privacy_mode: 'off' status: expired - auto_renew: true created_at: '2024-10-05T14:45:00Z' domain_name: silverbranch.app expires_at: '2026-10-05T14:45:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-11-11T08:00:00Z' domain_name: nightowl.co expires_at: '2026-11-11T08:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-12-01T11:30:00Z' domain_name: crimsongate.com expires_at: '2026-12-01T11:30:00Z' locked: true privacy_mode: redaction status: active - auto_renew: false created_at: '2025-01-07T16:20:00Z' domain_name: frostedpine.net expires_at: '2027-01-07T16:20:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2025-01-25T09:50:00Z' domain_name: horizonline.xyz expires_at: '2027-01-25T09:50:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2025-02-14T13:00:00Z' domain_name: coppervine.io expires_at: '2027-02-14T13:00:00Z' locked: true privacy_mode: 'off' status: active - auto_renew: true created_at: '2025-03-02T07:40:00Z' domain_name: starlitpath.org expires_at: '2027-03-02T07:40:00Z' locked: true privacy_mode: redaction status: active result_info: count: 20 cursor: eyJ0IjoiMjAyNS0wNi0xNVQxMjowMDowMC4wMDAwMDBaIiwibiI6ImJyYXZvLm5ldCJ9 per_page: 20 success: true schema: $ref: '#/components/schemas/registrar-api-sandbox_registration-response-collection' 4XX: description: List registrations failure. content: application/json: examples: invalid_cursor: summary: Invalid cursor value: errors: - code: 10000 message: Invalid pagination cursor messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api-sandbox_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar-sandbox.registrations x-fern-sdk-method-name: list post: operationId: sandbox-registrar-domain-registration-create summary: Create Registration description: 'Starts a domain registration workflow. ### Prerequisites - The account must not already be at the maximum supported domain limit. A single account may own up to 500 domains in total across registrations created through either the dashboard or this API. - The domain must be on a supported extension for programmatic registration. - Use `POST /domain-check` immediately before calling this endpoint to confirm real-time availability and pricing. ### Defaults - `years`: defaults to the extension''s minimum registration period (1 year for most extensions, but varies — for example, `.ai` (if supported) requires a minimum of 2 years). - `auto_renew`: defaults to `false`. Setting it to `true` is an explicit opt-in authorizing Cloudflare to charge the account''s default payment method up to 30 days before domain expiry to renew the registration. Renewal pricing may change over time based on registry pricing. - `privacy_mode`: defaults to `redaction`. ### Premium domains Premium domain registration is not currently supported by this API. If `POST /domain-check` returns `tier: premium`, do not call this endpoint for that domain. ### Response behavior By default, the server holds the connection for a bounded, server-defined amount of time while the registration completes. Most registrations finish within this window and return `201 Created` with a completed workflow status. If the registration is still processing after this synchronous wait window, the server returns `202 Accepted`. Poll the URL in `links.self` to track progress. To skip the wait and receive an immediate `202`, send `Prefer: respond-async`.' parameters: - name: account_id in: path description: Cloudflare account ID. Required for all Registrar API operations. required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_identifier' - name: Prefer in: header description: 'Set to `respond-async` to receive an immediate `202 Accepted` without waiting for the operation to complete (RFC 7240). The header may be combined with other preferences using standard comma-separated syntax. ' schema: type: string requestBody: required: true content: application/json: examples: ca_with_contact_extensions: description: 'CA registrations require a registrant legal type. Provide the required value in `contact_extensions` as described by the live .ca registration schema. ' summary: Register a .ca domain with legal type value: auto_renew: false contact_extensions: ca_legal_type: CCT contacts: registrant: email: ada@example.ca phone: '+1.6135550100' postal_info: address: city: Ottawa country_code: CA postal_code: K1A 0B1 state: true street: 123 Queen St name: Ada Lovelace organization: Example Canada Inc domain_name: my-brand-example.ca years: 1 io_with_role_contacts: description: Some extension schemas accept additional standard contact roles such as `technical`, `administrator`, and `billing`. When these roles are provided explicitly, Cloudflare preserves the supplied role-specific contact data instead of deriving it from `contacts.registrant`. summary: Register with explicit role contacts value: auto_renew: false contacts: administrator: email: katherine@example.io phone: '+1.5555550102' postal_info: address: city: San Francisco country_code: US postal_code: '94103' state: CA street: 789 Mission St name: Katherine Johnson organization: Example Admin Inc billing: email: dorothy@example.io phone: '+1.5555550103' postal_info: address: city: San Francisco country_code: US postal_code: '94105' state: CA street: 101 Howard St name: Dorothy Vaughan organization: Example Billing Inc registrant: email: ada@example.io phone: '+1.5555555555' postal_info: address: city: Austin country_code: US postal_code: '78701' state: TX street: 123 Main St name: Ada Lovelace organization: Example Inc technical: email: grace@example.io phone: '+1.5555550101' postal_info: address: city: San Francisco country_code: US postal_code: '94105' state: CA street: 456 Market St name: Grace Hopper organization: Example Technical Inc domain_name: my-brand-example.io years: 1 minimal: description: 'The simplest registration request uses the following defaults. - `years` defaults to the extension''s minimum registration period (typically 1 year). - `auto_renew` defaults to `false`. - `privacy_mode` defaults to `redaction`. - Registrant contact falls back to the account''s default address book entry. ' summary: Minimal registration — just a domain name value: domain_name: my-new-startup.com multi_year: description: Register a domain for 3 years. summary: Register for multiple years value: domain_name: longterm-project.dev years: 3 uk_with_contact_extensions: description: '.uk registrations can require registrant type information. For organization registrants, include the company number when the live registration schema requires it. ' summary: Register a .uk domain with registrant type value: auto_renew: false contact_extensions: company_number: '12345678' registrant_type: LTD contacts: registrant: email: ada@example.co.uk phone: '+44.2071234567' postal_info: address: city: London country_code: GB postal_code: SW1A 1AA state: London street: 1 Example Street name: Ada Lovelace organization: Example UK Ltd domain_name: my-brand-example.uk years: 1 us_with_contact_extensions: description: 'Some extensions require registry-specific contact extension values in addition to the standard registrant contact. The extension discovery endpoint is authoritative for the required keys and allowed values. ' summary: Register a .us domain with contact extensions value: auto_renew: false contact_extensions: application_purpose: P3 nexus_category: C11 contacts: registrant: email: ada@example.com phone: '+1.5555555555' postal_info: address: city: Austin country_code: US postal_code: '78701' state: TX street: 123 Main St name: Ada Lovelace organization: Example Inc domain_name: my-brand-example.us years: 1 with_contact: description: 'Provide registrant contact data inline if the account does not have a default address book entry, or to override it for this registration. `postal_info.name` is the complete contact name in one field. Some registries require a complete personal name, including a family or last name where applicable, but this API does not accept separate first-name and last-name fields. ' summary: Register with explicit registrant contact value: auto_renew: true contacts: registrant: email: ada@example.com phone: '+1.5555555555' postal_info: address: city: Austin country_code: US postal_code: '78701' state: TX street: 123 Main St name: Ada Lovelace organization: Example Inc domain_name: example.com years: 1 schema: $ref: '#/components/schemas/registrar-api-sandbox_registration_create_request' responses: '201': description: 'Registration completed successfully within the synchronous wait window. The workflow status will have `state: succeeded` and `completed: true`. ' headers: Preference-Applied: description: Echoed when the server honored a `Prefer` header. schema: type: string content: application/json: examples: completed: summary: Registration completed within timeout (most common) value: errors: [] messages: [] result: completed: true context: domain_name: example.com registration: auto_renew: true created_at: '2025-10-27T10:00:00Z' domain_name: example.com expires_at: '2026-10-27T10:00:00Z' locked: true privacy_mode: redaction status: active created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: succeeded updated_at: '2025-10-27T10:00:03Z' success: true schema: $ref: '#/components/schemas/registrar-api-sandbox_workflow-status-response-single' '202': description: 'Registration is still processing. This occurs when the operation did not complete within the synchronous wait window, or when `Prefer: respond-async` was sent. Poll the URL in `links.self` to track progress. ' headers: Location: description: URL of the workflow status resource (same as `links.self`). schema: type: string Preference-Applied: description: Set to `respond-async` when the server honored the preference. schema: type: string content: application/json: examples: still_processing: summary: Registration still in progress value: errors: [] messages: [] result: completed: false context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: in_progress updated_at: '2025-10-27T10:00:10Z' success: true schema: $ref: '#/components/schemas/registrar-api-sandbox_workflow-status-response-single' 4XX: description: Create registration failure. content: application/json: examples: account_domain_limit_exceeded: description: 'The account already owns the maximum supported number of domains. Domains created through either the dashboard or this API count toward the same account-wide limit. ' summary: Account has reached the domain limit value: errors: - code: 10000 message: 'Domain limit reached: you cannot register more than 500 domains.' source: pointer: /domain_name messages: [] result: null success: false domain_name_required: description: The required `domain_name` field was not provided. summary: Missing domain name value: errors: - code: 10000 message: domain_name is required source: pointer: /domain_name messages: [] result: null success: false invalid_auto_renew: description: The `auto_renew` field must be a boolean if present. summary: Invalid auto_renew value value: errors: - code: 10000 message: Must be a boolean source: pointer: /auto_renew messages: [] result: null success: false missing_contact: description: 'The request did not include a registrant contact, and the account has no default address book entry to fall back to. Either provide contacts.registrant in the request or set up a default address book entry at `https://dash.cloudflare.com/{account_id}/domains/registrations`. ' summary: No registrant contact and no default address book entry value: errors: - code: 10000 message: No registrant contact provided and no default address book entry found for this account. messages: [] result: null success: false registration_not_supported: description: 'The extension is not supported for registration through this API. This includes extensions that are unsupported by the API or do not support the required registration contact flow. ' summary: Registration not supported for extension value: errors: - code: 10000 message: Registration is not supported for this extension messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api-sandbox_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar-sandbox.registrations x-fern-sdk-method-name: create /accounts/{account_id}/registrar-sandbox/registrations/{domain_name}: get: operationId: sandbox-registrar-domain-registration-get summary: Get Registration description: 'Returns the current state of a domain registration. This is the canonical read endpoint for a domain you own. It returns the full registration resource including current settings and expiration. When the registration resource is ready, both `created_at` and `expires_at` are present in the response.' parameters: - name: account_id in: path description: Cloudflare account ID. required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_identifier' - name: domain_name in: path description: Domain name to retrieve. required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_domain_name' responses: '200': description: Registration details. content: application/json: examples: active: summary: Active domain value: errors: [] messages: [] result: auto_renew: true created_at: '2025-01-15T10:00:00Z' domain_name: example.com expires_at: '2026-01-15T10:00:00Z' locked: true privacy_mode: redaction status: active success: true schema: $ref: '#/components/schemas/registrar-api-sandbox_registration-response-single' 4XX: description: Get registration failure. content: application/json: examples: domain_not_found: summary: Domain not found value: errors: - code: 10000 message: Domain not found messages: [] result: null success: false invalid_domain_name: summary: Invalid domain name value: errors: - code: 10000 message: Invalid domain name messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api-sandbox_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar-sandbox.registrations x-fern-sdk-method-name: get patch: operationId: sandbox-registrar-domain-registration-update summary: Update Registration description: 'Updates an existing domain registration. By default, the server holds the connection for a bounded, server-defined amount of time while the update completes. Most updates finish within this window and return `200 OK` with a completed workflow status. If the update is still processing after this synchronous wait window, the server returns `202 Accepted`. Poll the URL in `links.self` to track progress. To skip the wait and receive an immediate `202`, send `Prefer: respond-async`. This endpoint currently supports updating `auto_renew` only.' parameters: - name: account_id in: path description: Cloudflare account ID. required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_identifier' - name: domain_name in: path description: Domain name to update. required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_domain_name' - name: Prefer in: header description: 'Set to `respond-async` to receive an immediate `202 Accepted` without waiting for the operation to complete (RFC 7240). ' schema: type: string enum: - respond-async requestBody: required: true content: application/json: examples: disable_auto_renew: summary: Disable auto-renewal value: auto_renew: false enable_auto_renew: summary: Enable auto-renewal value: auto_renew: true schema: $ref: '#/components/schemas/registrar-api-sandbox_registration_update_request' responses: '200': description: 'Update completed successfully within the synchronous wait window. The workflow status will have `state: succeeded` and `completed: true`. ' headers: Preference-Applied: description: Echoed when the server honored a `Prefer` header. schema: type: string content: application/json: examples: completed: summary: Update completed within timeout (most common) value: errors: [] messages: [] result: completed: true context: domain_name: example.com registration: auto_renew: true created_at: '2025-01-15T10:00:00Z' domain_name: example.com expires_at: '2026-01-15T10:00:00Z' locked: true privacy_mode: redaction status: active created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: succeeded updated_at: '2025-10-27T10:00:02Z' success: true schema: $ref: '#/components/schemas/registrar-api-sandbox_workflow-status-response-single' '202': description: 'Update is still processing. This occurs when the operation did not complete within the synchronous wait window, or when `Prefer: respond-async` was sent. Poll the URL in `links.self` to track progress. ' headers: Location: description: URL of the workflow status resource (same as `links.self`). schema: type: string Preference-Applied: description: Set to `respond-async` when the server honored the preference. schema: type: string content: application/json: examples: still_processing: summary: Update still in progress after timeout value: errors: [] messages: [] result: completed: false context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: in_progress updated_at: '2025-10-27T10:00:10Z' success: true schema: $ref: '#/components/schemas/registrar-api-sandbox_workflow-status-response-single' 4XX: description: Update registration failure. content: application/json: examples: domain_not_found: summary: Domain not found value: errors: - code: 10000 message: Domain not found messages: [] result: null success: false invalid_auto_renew: summary: Invalid auto_renew value value: errors: - code: 10000 message: Must be a boolean if present source: pointer: /auto_renew messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api-sandbox_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar-sandbox.registrations x-fern-sdk-method-name: update /accounts/{account_id}/registrar-sandbox/registrations/{domain_name}/registration-status: get: operationId: sandbox-registrar-domain-registration-get-status summary: Get Registration Status description: 'Returns the current status of a domain registration workflow. Use this endpoint to poll for completion when the POST response returned `202 Accepted`. The URL is provided in the `links.self` field of the workflow status response. Poll this endpoint until the workflow reaches a terminal state or a state that requires user attention. **Terminal states:** `succeeded` and `failed` are terminal and always have `completed: true`. **Non-terminal states:** - `action_required` has `completed: false` and will not resolve on its own. The workflow is paused pending user intervention. - `blocked` has `completed: false` and indicates the workflow is waiting on a third party such as the extension registry or losing registrar. Continue polling while informing the user of the delay. Use increasing backoff between polls. When `state: blocked`, use a longer polling interval and do not poll indefinitely. A naive polling loop that only checks `completed` can run indefinitely when `state: action_required`. Break explicitly on `action_required`: ```js let status; do { await new Promise(r => setTimeout(r, 2000)); status = await cloudflare.request({ method: ''GET'', path: reg.result.links.self, }); } while ( !status.result.completed && status.result.state !== ''action_required'' ); if (status.result.state === ''action_required'') { // Surface context.action and context.confirmation_sent_to to the user. // Do not re-submit the registration request. } ```' parameters: - name: account_id in: path description: Cloudflare account ID. Required for all Registrar API operations. required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_identifier' - name: domain_name in: path required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_domain_name' responses: '200': description: Registration workflow status. content: application/json: examples: action_required: description: 'Non-terminal but not transient. The workflow is paused and requires user action to proceed. An automated polling loop must break on this state — it will not resolve on its own. Surface context.action to the user. ' summary: User action required value: errors: [] messages: [] result: completed: false context: action: registrant_email_confirmation_pending confirmation_sent_to: a***@example.com domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: action_required updated_at: '2025-10-27T10:01:00Z' success: true blocked: description: 'Non-terminal. The workflow cannot make progress due to a third party (e.g., the extension''s registry or a losing registrar). Unlike action_required, no user action will help. Continue polling — the block may resolve when the third party responds. ' summary: Blocked by third party value: errors: [] messages: [] result: completed: false context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: blocked updated_at: '2025-10-27T10:05:00Z' success: true failed: description: 'Terminal state. The registration could not be completed. See error.code and error.message for the reason. Do not auto-retry without user review. ' summary: Registration failed value: errors: [] messages: [] result: completed: true context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' error: code: registry_rejected message: Registry rejected the registration request. links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: failed updated_at: '2025-10-27T10:00:08Z' success: true in_progress: description: 'The registration is still being processed. Continue polling this endpoint. In synchronous mode, the server only waits for a bounded amount of time before returning `202` — this status is what you see when polling after that timeout. Registrations will not remain in this state indefinitely; the workflow has an internal deadline after which it transitions to succeeded, failed, or blocked. ' summary: Registration in progress value: errors: [] messages: [] result: completed: false context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: in_progress updated_at: '2025-10-27T10:00:12Z' success: true succeeded: description: 'Terminal state. The domain has been registered. The full registration resource is included in context.registration — no additional GET request is needed. ' summary: Registration completed successfully value: errors: [] messages: [] result: completed: true context: domain_name: example.com registration: auto_renew: true created_at: '2025-10-27T10:00:00Z' domain_name: example.com expires_at: '2026-10-27T10:00:00Z' locked: true privacy_mode: redaction status: active created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: succeeded updated_at: '2025-10-27T10:00:03Z' success: true schema: $ref: '#/components/schemas/registrar-api-sandbox_workflow-status-response-single' 4XX: description: Get status failure. content: application/json: examples: workflow_not_found: summary: No workflow found value: errors: - code: 10000 message: No workflow found for example.com messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api-sandbox_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar-sandbox.registrations x-fern-sdk-method-name: get-registration-status /accounts/{account_id}/registrar-sandbox/registrations/{domain_name}/update-status: get: operationId: sandbox-registrar-domain-registration-get-update-status summary: Get Update Status description: 'Returns the current status of a domain update workflow. Use this endpoint to poll for completion when the PATCH response returned `202 Accepted`. The URL is provided in the `links.self` field of the workflow status response. Poll this endpoint until the workflow reaches a terminal state or a state that requires user attention. Use increasing backoff between polls. When the workflow remains blocked on a third party, use a longer polling interval and do not poll indefinitely.' parameters: - name: account_id in: path description: Cloudflare account ID. required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_identifier' - name: domain_name in: path required: true schema: $ref: '#/components/schemas/registrar-api-sandbox_domain_name' responses: '200': description: Update workflow status. content: application/json: examples: failed: summary: Update failed value: errors: [] messages: [] result: completed: true context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' error: code: registry_rejected message: Registry rejected the update request. links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: failed updated_at: '2025-10-27T10:00:45Z' success: true in_progress: summary: Update in progress value: errors: [] messages: [] result: completed: false context: domain_name: example.com fields_updated: - auto_renew pending_registry_confirmation: true created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: in_progress updated_at: '2025-10-27T10:00:05Z' success: true succeeded: summary: Update completed successfully value: errors: [] messages: [] result: completed: true context: domain_name: example.com fields_updated: - auto_renew created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: succeeded updated_at: '2025-10-27T10:00:30Z' success: true schema: $ref: '#/components/schemas/registrar-api-sandbox_workflow-status-response-single' 4XX: description: Get update status failure. content: application/json: examples: workflow_not_found: summary: No workflow found value: errors: - code: 10000 message: No workflow found for example.com messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api-sandbox_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar-sandbox.registrations x-fern-sdk-method-name: get-update-status /accounts/{account_id}/registrar/registrations: get: operationId: registrar-domain-registration-list summary: List Registrations description: 'Returns a paginated list of domain registrations owned by the account. This endpoint uses cursor-based pagination. Results are ordered by registration date by default. To fetch the next page, pass the `cursor` value from the `result_info` object in the response as the `cursor` query parameter in your next request. An empty `cursor` string indicates there are no more pages.' parameters: - name: account_id in: path description: Cloudflare account ID. required: true schema: $ref: '#/components/schemas/registrar-api_identifier' - $ref: '#/components/parameters/registrar-api_cursor_pagination_cursor' - $ref: '#/components/parameters/registrar-api_cursor_pagination_per_page' - $ref: '#/components/parameters/registrar-api_cursor_pagination_direction' - name: sort_by in: query description: Column to sort results by. Defaults to registration date (`registry_created_at`) when omitted. schema: type: string default: registry_created_at enum: - registry_created_at - registry_expires_at - name responses: '200': description: List of registrations for the account. content: application/json: examples: empty_account: summary: Account with no registrations value: errors: [] messages: [] result: [] result_info: count: 0 cursor: '' per_page: 20 success: true multiple_domains: summary: Account with multiple domains value: errors: [] messages: [] result: - auto_renew: true created_at: '2025-01-15T10:00:00Z' domain_name: example.com expires_at: '2026-01-15T10:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: false created_at: '2025-03-20T14:30:00Z' domain_name: mybrand.dev expires_at: '2026-03-20T14:30:00Z' locked: true privacy_mode: redaction status: active result_info: count: 2 cursor: '' per_page: 20 success: true next_page: description: Response when fetching the next page by passing the cursor from a previous response. The empty cursor indicates this is the last page. summary: Next page of results (last page) value: errors: [] messages: [] result: - auto_renew: true created_at: '2025-04-01T09:00:00Z' domain_name: charlie.org expires_at: '2026-04-01T09:00:00Z' locked: true privacy_mode: redaction status: active result_info: count: 1 cursor: '' per_page: 20 success: true paginated: summary: First page with more results available value: errors: [] messages: [] result: - auto_renew: true created_at: '2024-01-15T09:30:00Z' domain_name: acmecorp.com expires_at: '2026-01-15T09:30:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-02-20T14:00:00Z' domain_name: brightwave.net expires_at: '2026-02-20T14:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-03-05T11:15:00Z' domain_name: cloudpeak.org expires_at: '2026-03-05T11:15:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-03-22T08:45:00Z' domain_name: solarpanel.io expires_at: '2026-03-22T08:45:00Z' locked: true privacy_mode: 'off' status: active - auto_renew: false created_at: '2024-04-10T16:00:00Z' domain_name: greenleaf.dev expires_at: '2026-04-10T16:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-05-03T10:30:00Z' domain_name: swiftrunner.app expires_at: '2026-05-03T10:30:00Z' locked: true privacy_mode: redaction status: active - auto_renew: false created_at: '2024-05-18T13:00:00Z' domain_name: northerntrail.co expires_at: '2025-05-18T13:00:00Z' locked: true privacy_mode: redaction status: expired - auto_renew: true created_at: '2024-06-01T07:20:00Z' domain_name: pixelforge.xyz expires_at: '2026-06-01T07:20:00Z' locked: false privacy_mode: redaction status: active - auto_renew: true created_at: '2024-06-25T15:45:00Z' domain_name: oceandrift.com expires_at: '2026-06-25T15:45:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-07-12T09:00:00Z' domain_name: rocketlaunch.net expires_at: '2026-07-12T09:00:00Z' locked: true privacy_mode: 'off' status: active - auto_renew: false created_at: '2024-08-08T12:30:00Z' domain_name: blueprintlab.io expires_at: '2026-08-08T12:30:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-09-01T18:00:00Z' domain_name: maplewood.org expires_at: '2026-09-01T18:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: false created_at: '2024-09-20T10:15:00Z' domain_name: thunderbolt.dev expires_at: '2025-09-20T10:15:00Z' locked: false privacy_mode: 'off' status: expired - auto_renew: true created_at: '2024-10-05T14:45:00Z' domain_name: silverbranch.app expires_at: '2026-10-05T14:45:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-11-11T08:00:00Z' domain_name: nightowl.co expires_at: '2026-11-11T08:00:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2024-12-01T11:30:00Z' domain_name: crimsongate.com expires_at: '2026-12-01T11:30:00Z' locked: true privacy_mode: redaction status: active - auto_renew: false created_at: '2025-01-07T16:20:00Z' domain_name: frostedpine.net expires_at: '2027-01-07T16:20:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2025-01-25T09:50:00Z' domain_name: horizonline.xyz expires_at: '2027-01-25T09:50:00Z' locked: true privacy_mode: redaction status: active - auto_renew: true created_at: '2025-02-14T13:00:00Z' domain_name: coppervine.io expires_at: '2027-02-14T13:00:00Z' locked: true privacy_mode: 'off' status: active - auto_renew: true created_at: '2025-03-02T07:40:00Z' domain_name: starlitpath.org expires_at: '2027-03-02T07:40:00Z' locked: true privacy_mode: redaction status: active result_info: count: 20 cursor: eyJ0IjoiMjAyNS0wNi0xNVQxMjowMDowMC4wMDAwMDBaIiwibiI6ImJyYXZvLm5ldCJ9 per_page: 20 success: true schema: $ref: '#/components/schemas/registrar-api_registration-response-collection' 4XX: description: List registrations failure. content: application/json: examples: invalid_cursor: summary: Invalid cursor value: errors: - code: 10000 message: Invalid pagination cursor messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar.registrations x-fern-sdk-method-name: list post: operationId: registrar-domain-registration-create summary: Create Registration description: 'Starts a domain registration workflow. This is a billable operation — successful registration charges the account''s default payment method. All successful domain registrations are non-refundable — once the workflow completes with `state: succeeded`, the charge cannot be reversed. ### Prerequisites - The account must have a billing profile with a valid default payment method. Set this up at `https://dash.cloudflare.com/{account_id}/billing/payment-info`. - The account must not already be at the maximum supported domain limit. A single account may own up to 500 domains in total across registrations created through either the dashboard or this API. - The domain must be on a supported extension for programmatic registration. - Use `POST /domain-check` immediately before calling this endpoint to confirm real-time availability and pricing. ### Supported 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`. ### Express mode The only required field is `domain_name`. If `contacts` is omitted, the system uses the account''s default address book entry as the registrant. If no default exists and no contact is provided, the request fails. Set up a default address book entry and accept the required agreement at `https://dash.cloudflare.com/{account_id}/domains/registrations`. ### Defaults - `years`: defaults to the extension''s minimum registration period (1 year for most extensions, but varies — for example, `.ai` (if supported) requires a minimum of 2 years). - `auto_renew`: defaults to `false`. Setting it to `true` is an explicit opt-in authorizing Cloudflare to charge the account''s default payment method up to 30 days before domain expiry to renew the registration. Renewal pricing may change over time based on registry pricing. - `privacy_mode`: defaults to `redaction`. ### Premium domains Premium domain registration is not currently supported by this API. If `POST /domain-check` returns `tier: premium`, do not call this endpoint for that domain. ### Response behavior By default, the server holds the connection for a bounded, server-defined amount of time while the registration completes. Most registrations finish within this window and return `201 Created` with a completed workflow status. If the registration is still processing after this synchronous wait window, the server returns `202 Accepted`. Poll the URL in `links.self` to track progress. To skip the wait and receive an immediate `202`, send `Prefer: respond-async`.' parameters: - name: account_id in: path description: Cloudflare account ID. Required for all Registrar API operations. required: true schema: $ref: '#/components/schemas/registrar-api_identifier' - name: Prefer in: header description: 'Set to `respond-async` to receive an immediate `202 Accepted` without waiting for the operation to complete (RFC 7240). The header may be combined with other preferences using standard comma-separated syntax. ' schema: type: string requestBody: required: true content: application/json: examples: ca_with_contact_extensions: description: 'CA registrations require a registrant legal type. Provide the required value in `contact_extensions` as described by the live .ca registration schema. ' summary: Register a .ca domain with legal type value: auto_renew: false contact_extensions: ca_legal_type: CCT contacts: registrant: email: ada@example.ca phone: '+1.6135550100' postal_info: address: city: Ottawa country_code: CA postal_code: K1A 0B1 state: true street: 123 Queen St name: Ada Lovelace organization: Example Canada Inc domain_name: my-brand-example.ca years: 1 io_with_role_contacts: description: Some extension schemas accept additional standard contact roles such as `technical`, `administrator`, and `billing`. When these roles are provided explicitly, Cloudflare preserves the supplied role-specific contact data instead of deriving it from `contacts.registrant`. summary: Register with explicit role contacts value: auto_renew: false contacts: administrator: email: katherine@example.io phone: '+1.5555550102' postal_info: address: city: San Francisco country_code: US postal_code: '94103' state: CA street: 789 Mission St name: Katherine Johnson organization: Example Admin Inc billing: email: dorothy@example.io phone: '+1.5555550103' postal_info: address: city: San Francisco country_code: US postal_code: '94105' state: CA street: 101 Howard St name: Dorothy Vaughan organization: Example Billing Inc registrant: email: ada@example.io phone: '+1.5555555555' postal_info: address: city: Austin country_code: US postal_code: '78701' state: TX street: 123 Main St name: Ada Lovelace organization: Example Inc technical: email: grace@example.io phone: '+1.5555550101' postal_info: address: city: San Francisco country_code: US postal_code: '94105' state: CA street: 456 Market St name: Grace Hopper organization: Example Technical Inc domain_name: my-brand-example.io years: 1 minimal: description: 'The simplest registration request uses the following defaults. - `years` defaults to the extension''s minimum registration period (typically 1 year). - `auto_renew` defaults to `false`. - `privacy_mode` defaults to `redaction`. - Registrant contact falls back to the account''s default address book entry. ' summary: Minimal registration — just a domain name value: domain_name: my-new-startup.com multi_year: description: Register a domain for 3 years. summary: Register for multiple years value: domain_name: longterm-project.dev years: 3 uk_with_contact_extensions: description: '.uk registrations can require registrant type information. For organization registrants, include the company number when the live registration schema requires it. ' summary: Register a .uk domain with registrant type value: auto_renew: false contact_extensions: company_number: '12345678' registrant_type: LTD contacts: registrant: email: ada@example.co.uk phone: '+44.2071234567' postal_info: address: city: London country_code: GB postal_code: SW1A 1AA state: London street: 1 Example Street name: Ada Lovelace organization: Example UK Ltd domain_name: my-brand-example.uk years: 1 us_with_contact_extensions: description: 'Some extensions require registry-specific contact extension values in addition to the standard registrant contact. The extension discovery endpoint is authoritative for the required keys and allowed values. ' summary: Register a .us domain with contact extensions value: auto_renew: false contact_extensions: application_purpose: P3 nexus_category: C11 contacts: registrant: email: ada@example.com phone: '+1.5555555555' postal_info: address: city: Austin country_code: US postal_code: '78701' state: TX street: 123 Main St name: Ada Lovelace organization: Example Inc domain_name: my-brand-example.us years: 1 with_contact: description: 'Provide registrant contact data inline if the account does not have a default address book entry, or to override it for this registration. `postal_info.name` is the complete contact name in one field. Some registries require a complete personal name, including a family or last name where applicable, but this API does not accept separate first-name and last-name fields. ' summary: Register with explicit registrant contact value: auto_renew: true contacts: registrant: email: ada@example.com phone: '+1.5555555555' postal_info: address: city: Austin country_code: US postal_code: '78701' state: TX street: 123 Main St name: Ada Lovelace organization: Example Inc domain_name: example.com years: 1 schema: $ref: '#/components/schemas/registrar-api_registration_create_request' responses: '201': description: 'Registration completed successfully within the synchronous wait window. The workflow status will have `state: succeeded` and `completed: true`. ' headers: Preference-Applied: description: Echoed when the server honored a `Prefer` header. schema: type: string content: application/json: examples: completed: summary: Registration completed within timeout (most common) value: errors: [] messages: [] result: completed: true context: domain_name: example.com registration: auto_renew: true created_at: '2025-10-27T10:00:00Z' domain_name: example.com expires_at: '2026-10-27T10:00:00Z' locked: true privacy_mode: redaction status: active created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: succeeded updated_at: '2025-10-27T10:00:03Z' success: true schema: $ref: '#/components/schemas/registrar-api_workflow-status-response-single' '202': description: 'Registration is still processing. This occurs when the operation did not complete within the synchronous wait window, or when `Prefer: respond-async` was sent. Poll the URL in `links.self` to track progress. ' headers: Location: description: URL of the workflow status resource (same as `links.self`). schema: type: string Preference-Applied: description: Set to `respond-async` when the server honored the preference. schema: type: string content: application/json: examples: still_processing: summary: Registration still in progress value: errors: [] messages: [] result: completed: false context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: in_progress updated_at: '2025-10-27T10:00:10Z' success: true schema: $ref: '#/components/schemas/registrar-api_workflow-status-response-single' 4XX: description: Create registration failure. content: application/json: examples: account_domain_limit_exceeded: description: 'The account already owns the maximum supported number of domains. Domains created through either the dashboard or this API count toward the same account-wide limit. ' summary: Account has reached the domain limit value: errors: - code: 10000 message: 'Domain limit reached: you cannot register more than 500 domains.' source: pointer: /domain_name messages: [] result: null success: false domain_name_required: description: The required `domain_name` field was not provided. summary: Missing domain name value: errors: - code: 10000 message: domain_name is required source: pointer: /domain_name messages: [] result: null success: false invalid_auto_renew: description: The `auto_renew` field must be a boolean if present. summary: Invalid auto_renew value value: errors: - code: 10000 message: Must be a boolean source: pointer: /auto_renew messages: [] result: null success: false missing_contact: description: 'The request did not include a registrant contact, and the account has no default address book entry to fall back to. Either provide contacts.registrant in the request or set up a default address book entry at `https://dash.cloudflare.com/{account_id}/domains/registrations`. ' summary: No registrant contact and no default address book entry value: errors: - code: 10000 message: No registrant contact provided and no default address book entry found for this account. messages: [] result: null success: false registration_not_supported: description: 'The extension is not supported for registration through this API. This includes extensions that are unsupported by the API or do not support the required registration contact flow. ' summary: Registration not supported for extension value: errors: - code: 10000 message: Registration is not supported for this extension messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar.registrations x-fern-sdk-method-name: create /accounts/{account_id}/registrar/registrations/{domain_name}: get: operationId: registrar-domain-registration-get summary: Get Registration description: 'Returns the current state of a domain registration. This is the canonical read endpoint for a domain you own. It returns the full registration resource including current settings and expiration. When the registration resource is ready, both `created_at` and `expires_at` are present in the response.' parameters: - name: account_id in: path description: Cloudflare account ID. required: true schema: $ref: '#/components/schemas/registrar-api_identifier' - name: domain_name in: path description: Domain name to retrieve. required: true schema: $ref: '#/components/schemas/registrar-api_domain_name' responses: '200': description: Registration details. content: application/json: examples: active: summary: Active domain value: errors: [] messages: [] result: auto_renew: true created_at: '2025-01-15T10:00:00Z' domain_name: example.com expires_at: '2026-01-15T10:00:00Z' locked: true privacy_mode: redaction status: active success: true schema: $ref: '#/components/schemas/registrar-api_registration-response-single' 4XX: description: Get registration failure. content: application/json: examples: domain_not_found: summary: Domain not found value: errors: - code: 10000 message: Domain not found messages: [] result: null success: false invalid_domain_name: summary: Invalid domain name value: errors: - code: 10000 message: Invalid domain name messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar.registrations x-fern-sdk-method-name: get patch: operationId: registrar-domain-registration-update summary: Update Registration description: 'Updates an existing domain registration. By default, the server holds the connection for a bounded, server-defined amount of time while the update completes. Most updates finish within this window and return `200 OK` with a completed workflow status. If the update is still processing after this synchronous wait window, the server returns `202 Accepted`. Poll the URL in `links.self` to track progress. To skip the wait and receive an immediate `202`, send `Prefer: respond-async`. This endpoint currently supports updating `auto_renew` only.' parameters: - name: account_id in: path description: Cloudflare account ID. required: true schema: $ref: '#/components/schemas/registrar-api_identifier' - name: domain_name in: path description: Domain name to update. required: true schema: $ref: '#/components/schemas/registrar-api_domain_name' - name: Prefer in: header description: 'Set to `respond-async` to receive an immediate `202 Accepted` without waiting for the operation to complete (RFC 7240). ' schema: type: string enum: - respond-async requestBody: required: true content: application/json: examples: disable_auto_renew: summary: Disable auto-renewal value: auto_renew: false enable_auto_renew: summary: Enable auto-renewal value: auto_renew: true schema: $ref: '#/components/schemas/registrar-api_registration_update_request' responses: '200': description: 'Update completed successfully within the synchronous wait window. The workflow status will have `state: succeeded` and `completed: true`. ' headers: Preference-Applied: description: Echoed when the server honored a `Prefer` header. schema: type: string content: application/json: examples: completed: summary: Update completed within timeout (most common) value: errors: [] messages: [] result: completed: true context: domain_name: example.com registration: auto_renew: true created_at: '2025-01-15T10:00:00Z' domain_name: example.com expires_at: '2026-01-15T10:00:00Z' locked: true privacy_mode: redaction status: active created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: succeeded updated_at: '2025-10-27T10:00:02Z' success: true schema: $ref: '#/components/schemas/registrar-api_workflow-status-response-single' '202': description: 'Update is still processing. This occurs when the operation did not complete within the synchronous wait window, or when `Prefer: respond-async` was sent. Poll the URL in `links.self` to track progress. ' headers: Location: description: URL of the workflow status resource (same as `links.self`). schema: type: string Preference-Applied: description: Set to `respond-async` when the server honored the preference. schema: type: string content: application/json: examples: still_processing: summary: Update still in progress after timeout value: errors: [] messages: [] result: completed: false context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: in_progress updated_at: '2025-10-27T10:00:10Z' success: true schema: $ref: '#/components/schemas/registrar-api_workflow-status-response-single' 4XX: description: Update registration failure. content: application/json: examples: domain_not_found: summary: Domain not found value: errors: - code: 10000 message: Domain not found messages: [] result: null success: false invalid_auto_renew: summary: Invalid auto_renew value value: errors: - code: 10000 message: Must be a boolean if present source: pointer: /auto_renew messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar.registrations x-fern-sdk-method-name: update /accounts/{account_id}/registrar/registrations/{domain_name}/registration-status: get: operationId: registrar-domain-registration-get-status summary: Get Registration Status description: 'Returns the current status of a domain registration workflow. Use this endpoint to poll for completion when the POST response returned `202 Accepted`. The URL is provided in the `links.self` field of the workflow status response. Poll this endpoint until the workflow reaches a terminal state or a state that requires user attention. **Terminal states:** `succeeded` and `failed` are terminal and always have `completed: true`. **Non-terminal states:** - `action_required` has `completed: false` and will not resolve on its own. The workflow is paused pending user intervention. - `blocked` has `completed: false` and indicates the workflow is waiting on a third party such as the extension registry or losing registrar. Continue polling while informing the user of the delay. Use increasing backoff between polls. When `state: blocked`, use a longer polling interval and do not poll indefinitely. A naive polling loop that only checks `completed` can run indefinitely when `state: action_required`. Break explicitly on `action_required`: ```js let status; do { await new Promise(r => setTimeout(r, 2000)); status = await cloudflare.request({ method: ''GET'', path: reg.result.links.self, }); } while ( !status.result.completed && status.result.state !== ''action_required'' ); if (status.result.state === ''action_required'') { // Surface context.action and context.confirmation_sent_to to the user. // Do not re-submit the registration request. } ```' parameters: - name: account_id in: path description: Cloudflare account ID. Required for all Registrar API operations. required: true schema: $ref: '#/components/schemas/registrar-api_identifier' - name: domain_name in: path required: true schema: $ref: '#/components/schemas/registrar-api_domain_name' responses: '200': description: Registration workflow status. content: application/json: examples: action_required: description: 'Non-terminal but not transient. The workflow is paused and requires user action to proceed. An automated polling loop must break on this state — it will not resolve on its own. Surface context.action to the user. ' summary: User action required value: errors: [] messages: [] result: completed: false context: action: registrant_email_confirmation_pending confirmation_sent_to: a***@example.com domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: action_required updated_at: '2025-10-27T10:01:00Z' success: true blocked: description: 'Non-terminal. The workflow cannot make progress due to a third party (e.g., the extension''s registry or a losing registrar). Unlike action_required, no user action will help. Continue polling — the block may resolve when the third party responds. ' summary: Blocked by third party value: errors: [] messages: [] result: completed: false context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: blocked updated_at: '2025-10-27T10:05:00Z' success: true failed: description: 'Terminal state. The registration could not be completed. See error.code and error.message for the reason. Do not auto-retry without user review. ' summary: Registration failed value: errors: [] messages: [] result: completed: true context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' error: code: registry_rejected message: Registry rejected the registration request. links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: failed updated_at: '2025-10-27T10:00:08Z' success: true in_progress: description: 'The registration is still being processed. Continue polling this endpoint. In synchronous mode, the server only waits for a bounded amount of time before returning `202` — this status is what you see when polling after that timeout. Registrations will not remain in this state indefinitely; the workflow has an internal deadline after which it transitions to succeeded, failed, or blocked. ' summary: Registration in progress value: errors: [] messages: [] result: completed: false context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: in_progress updated_at: '2025-10-27T10:00:12Z' success: true succeeded: description: 'Terminal state. The domain has been registered. The full registration resource is included in context.registration — no additional GET request is needed. ' summary: Registration completed successfully value: errors: [] messages: [] result: completed: true context: domain_name: example.com registration: auto_renew: true created_at: '2025-10-27T10:00:00Z' domain_name: example.com expires_at: '2026-10-27T10:00:00Z' locked: true privacy_mode: redaction status: active created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/registration-status state: succeeded updated_at: '2025-10-27T10:00:03Z' success: true schema: $ref: '#/components/schemas/registrar-api_workflow-status-response-single' 4XX: description: Get status failure. content: application/json: examples: workflow_not_found: summary: No workflow found value: errors: - code: 10000 message: No workflow found for example.com messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar.registrations x-fern-sdk-method-name: get-registration-status /accounts/{account_id}/registrar/registrations/{domain_name}/update-status: get: operationId: registrar-domain-registration-get-update-status summary: Get Update Status description: 'Returns the current status of a domain update workflow. Use this endpoint to poll for completion when the PATCH response returned `202 Accepted`. The URL is provided in the `links.self` field of the workflow status response. Poll this endpoint until the workflow reaches a terminal state or a state that requires user attention. Use increasing backoff between polls. When the workflow remains blocked on a third party, use a longer polling interval and do not poll indefinitely.' parameters: - name: account_id in: path description: Cloudflare account ID. required: true schema: $ref: '#/components/schemas/registrar-api_identifier' - name: domain_name in: path required: true schema: $ref: '#/components/schemas/registrar-api_domain_name' responses: '200': description: Update workflow status. content: application/json: examples: failed: summary: Update failed value: errors: [] messages: [] result: completed: true context: domain_name: example.com created_at: '2025-10-27T10:00:00Z' error: code: registry_rejected message: Registry rejected the update request. links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: failed updated_at: '2025-10-27T10:00:45Z' success: true in_progress: summary: Update in progress value: errors: [] messages: [] result: completed: false context: domain_name: example.com fields_updated: - auto_renew pending_registry_confirmation: true created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: in_progress updated_at: '2025-10-27T10:00:05Z' success: true succeeded: summary: Update completed successfully value: errors: [] messages: [] result: completed: true context: domain_name: example.com fields_updated: - auto_renew created_at: '2025-10-27T10:00:00Z' links: resource: /accounts/abc/registrar/registrations/example.com self: /accounts/abc/registrar/registrations/example.com/update-status state: succeeded updated_at: '2025-10-27T10:00:30Z' success: true schema: $ref: '#/components/schemas/registrar-api_workflow-status-response-single' 4XX: description: Get update status failure. content: application/json: examples: workflow_not_found: summary: No workflow found value: errors: - code: 10000 message: No workflow found for example.com messages: [] result: null success: false schema: $ref: '#/components/schemas/registrar-api_api-response-common-failure' security: - api_token: [] - api_email: [] api_key: [] tags: - Registrar Registration x-fern-availability: generally-available x-fern-sdk-group-name: registrar.registrations x-fern-sdk-method-name: get-update-status components: parameters: registrar-api-sandbox_cursor_pagination_direction: description: 'Sort direction for results. Defaults to ascending order. ' in: query name: direction schema: type: string default: asc enum: - asc - desc registrar-api-sandbox_cursor_pagination_cursor: description: 'Opaque token from a previous response''s `result_info.cursor`. Pass this value to fetch the next page of results. Omit (or pass an empty string) for the first page. ' in: query name: cursor schema: type: string maxLength: 256 registrar-api_cursor_pagination_cursor: description: 'Opaque token from a previous response''s `result_info.cursor`. Pass this value to fetch the next page of results. Omit (or pass an empty string) for the first page. ' in: query name: cursor schema: type: string maxLength: 256 registrar-api-sandbox_cursor_pagination_per_page: description: Number of items to return per page. in: query name: per_page schema: type: integer default: 20 maximum: 50 minimum: 1 registrar-api_cursor_pagination_per_page: description: Number of items to return per page. in: query name: per_page schema: type: integer default: 20 maximum: 50 minimum: 1 registrar-api_cursor_pagination_direction: description: 'Sort direction for results. Defaults to ascending order. ' in: query name: direction schema: type: string default: asc enum: - asc - desc schemas: registrar-api_registration_update_request: description: 'Request to update an existing domain registration. This endpoint currently supports updating `auto_renew` only. ' type: object properties: auto_renew: description: 'Enable or disable automatic renewal. Setting this field to `true` authorizes Cloudflare to charge the account''s default payment method up to 30 days before domain expiry to renew the domain automatically. Renewal pricing may change over time based on registry pricing. ' type: boolean example: true minProperties: 1 registrar-api_registration-response-collection: allOf: - $ref: '#/components/schemas/registrar-api_api-response-common' - properties: result: type: array items: $ref: '#/components/schemas/registrar-api_registration' result_info: $ref: '#/components/schemas/registrar-api_cursor_result_info' required: - result - result_info type: object registrar-api_messages: type: array items: properties: code: type: integer minimum: 1000 message: type: string source: description: Location of the invalid value that caused the error. type: object properties: pointer: description: JSON Pointer to the invalid or missing request value. type: string required: - pointer required: - code - message type: object uniqueItems: true example: [] registrar-api-sandbox_registration_create_request: type: object properties: acknowledgements: description: 'Provides user acknowledgements for a specific extension or premium registration flow. The extension registration schema from the extension discovery endpoint identifies the required keys. ' type: object example: fees: currency: USD registration_fee: 10 renewal_fee: 10 additionalProperties: true auto_renew: description: 'Enable or disable automatic renewal. Defaults to `false` if omitted. Setting this field to `true` is an explicit opt-in authorizing Cloudflare to charge the account''s default payment method up to 30 days before domain expiry to renew the domain automatically. Renewal pricing may change over time based on registry pricing. ' type: boolean example: false default: false contact_extensions: description: 'Provides registry-specific contact extension values for the registrant. `GET /accounts/{account_id}/registrar/extensions/{extension}` identifies the required keys and allowed values for each extension in the `registration_schema.properties.contact_extensions` object. Examples include `.us` nexus fields, `.uk` registrant type fields, and `.ca` legal type fields. Omit this object when the extension''s registration schema excludes `contact_extensions`. ' type: object example: application_purpose: P3 nexus_category: C11 additionalProperties: true contacts: type: object allOf: - $ref: '#/components/schemas/registrar-api-sandbox_registration_contacts' domain_name: $ref: '#/components/schemas/registrar-api-sandbox_domain_name' privacy_mode: description: "Sets the WHOIS privacy mode for the registration. Defaults to `redaction`.\n- `off`: Disables WHOIS privacy.\n- `redaction`: Requests WHOIS redaction where the extension supports it.\n Some extensions exclude privacy and redaction.\n" type: string example: redaction default: redaction enum: - 'off' - redaction years: description: 'Sets the registration term from 1 to 10 years. When omitted, this field defaults to the registry''s minimum registration period for the extension. Most extensions require 1 year, while some require longer minimum terms (e.g., `.ai` requires 2 years). Each registry may also enforce its own maximum registration term. A request above that maximum fails. When uncertain, omit this field to use the default. ' type: integer example: 1 maximum: 10 minimum: 1 required: - domain_name registrar-api_identifier: description: Identifier. type: string example: 023e105f4ecef8ad9ca31a8372d0c353 maxLength: 32 readOnly: true registrar-api-sandbox_registration_contact_postal_info: description: 'Postal/mailing information for the contact. The `name` field is the complete contact name in one string. Some registries require a complete personal name, including a family or last name where applicable, but this API does not accept separate first-name and last-name fields for registration contacts. ' type: object properties: address: $ref: '#/components/schemas/registrar-api-sandbox_registration_contact_address' name: description: Full legal name of the contact, including all required name components for an individual or authorized representative. Some registries require a complete personal name that includes a family or last name where applicable. Provide the complete name in this single field, for example `Ada Lovelace`; do not send separate first-name or last-name fields. type: string example: Ada Lovelace organization: description: Organization or company name. Optional for individual registrants. type: string example: Example Inc required: - name - address registrar-api_workflow_status: description: Status of an async registration workflow. type: object properties: completed: description: Indicates whether the workflow reached a terminal state. A `succeeded` or `failed` state returns `true`; `pending`, `in_progress`, `action_required`, and `blocked` return `false`. type: boolean example: false context: description: 'Provides workflow-specific data. For domain-centric workflows, `context.domain_name` identifies the workflow subject. ' type: object additionalProperties: true created_at: type: string format: date-time error: type: - object - 'null' allOf: - $ref: '#/components/schemas/registrar-api_workflow_error' links: $ref: '#/components/schemas/registrar-api_workflow_links' state: description: "Describes the workflow lifecycle state.\n- `pending`: The workflow awaits processing.\n- `in_progress`: Processing started. Continue polling `links.self`.\n An internal deadline limits the duration of this state.\n- `action_required`: The workflow pauses for user action. See\n `context.action` for details. Stop automated polling until the user\n completes the required action.\n- `blocked`: A third party, such as the domain extension's registry or\n a losing registrar, prevents progress. Continue polling because the\n block may resolve when the third party responds.\n- `succeeded`: Terminal state. The operation completed successfully.\n `completed` equals `true`. For registrations,\n `context.registration` contains the resulting registration resource.\n- `failed`: Terminal state. The operation failed. `completed` equals\n `true`. See `error.code` and `error.message` for the reason. Require\n user review before retrying.\n" type: string example: in_progress enum: - pending - in_progress - action_required - blocked - succeeded - failed updated_at: type: string format: date-time required: - state - completed - created_at - updated_at - links registrar-api_registration_contact_postal_info: description: 'Postal/mailing information for the contact. The `name` field is the complete contact name in one string. Some registries require a complete personal name, including a family or last name where applicable, but this API does not accept separate first-name and last-name fields for registration contacts. ' type: object properties: address: $ref: '#/components/schemas/registrar-api_registration_contact_address' name: description: Full legal name of the contact, including all required name components for an individual or authorized representative. Some registries require a complete personal name that includes a family or last name where applicable. Provide the complete name in this single field, for example `Ada Lovelace`; do not send separate first-name or last-name fields. type: string example: Ada Lovelace organization: description: Organization or company name. Optional for individual registrants. type: string example: Example Inc required: - name - address registrar-api-sandbox_identifier: description: Identifier. type: string example: 023e105f4ecef8ad9ca31a8372d0c353 maxLength: 32 readOnly: true registrar-api-sandbox_registration-response-collection: allOf: - $ref: '#/components/schemas/registrar-api-sandbox_api-response-common' - properties: result: type: array items: $ref: '#/components/schemas/registrar-api-sandbox_registration' result_info: $ref: '#/components/schemas/registrar-api-sandbox_cursor_result_info' required: - result - result_info type: object registrar-api-sandbox_registration_contacts: description: 'Provides contact data for the registration request. The per-extension schema from `GET /accounts/{account_id}/registrar/extensions/{extension}` defines the accepted contact roles. Every currently supported extension requires only `contacts.registrant` from API callers. Callers may provide additional roles such as `technical`, `administrator`, and `billing` when the extension schema includes them. When a registry requires an omitted role, Cloudflare may derive that contact from `contacts.registrant`. When the request omits either the entire `contacts` object or `contacts.registrant`, the system uses the account''s default address book entry as the registrant contact. The account owner must configure this default at `https://dash.cloudflare.com/{account_id}/domains/registrations`, where they can create or update the address book entry and accept the required agreement. Dashboard settings currently provide the only way to manage address book entries. Without either a default address book entry or a registrant contact, the registration request fails validation. ' type: object properties: administrator: description: 'Optional administrator contact. Accepted only when the extension schema includes this role. When the registry requires an omitted contact, Cloudflare may derive it from `contacts.registrant`. ' allOf: - $ref: '#/components/schemas/registrar-api-sandbox_registration_contact' billing: description: 'Optional billing contact. Accepted only when the extension schema includes this role. When the registry requires an omitted contact, Cloudflare may derive it from `contacts.registrant`. ' allOf: - $ref: '#/components/schemas/registrar-api-sandbox_registration_contact' registrant: description: 'Optional registrant contact. If omitted, the account''s default address book entry is used instead. ' allOf: - $ref: '#/components/schemas/registrar-api-sandbox_registration_contact' technical: description: 'Optional technical contact. Accepted only when the extension schema includes this role. When the registry requires an omitted contact, Cloudflare may derive it from `contacts.registrant`. ' allOf: - $ref: '#/components/schemas/registrar-api-sandbox_registration_contact' registrar-api_cursor_result_info: description: 'Provides cursor-based pagination metadata. List endpoints use this metadata for cursor pagination. Pass the `cursor` value as a query parameter in the next request to fetch the next page. An empty string indicates the end of pagination. ' type: object properties: count: description: Number of items in the current result set. type: integer example: 20 cursor: description: 'Opaque cursor for fetching the next page. Pass this value as the `cursor` query parameter in a subsequent request. An empty string indicates the end of pagination. ' type: string example: eyJ0IjoiMjAyNS0wNi0xNVQxMjowMDowMC4wMDAwMDBaIiwibiI6ImJyYXZvLm5ldCJ9 per_page: description: Maximum number of items per page. type: integer example: 20 required: - cursor - per_page - count registrar-api_api-response-common-failure: type: object properties: errors: example: - code: 7003 message: No route for the URI allOf: - $ref: '#/components/schemas/registrar-api_messages' minItems: 1 messages: example: [] allOf: - $ref: '#/components/schemas/registrar-api_messages' result: type: - object - 'null' enum: - null success: description: Whether the API call was successful. type: boolean example: false enum: - false required: - success - errors - messages - result registrar-api-sandbox_registration-response-single: allOf: - $ref: '#/components/schemas/registrar-api-sandbox_api-response-common' - properties: result: $ref: '#/components/schemas/registrar-api-sandbox_registration' type: object registrar-api-sandbox_workflow_status: description: Status of an async registration workflow. type: object properties: completed: description: Indicates whether the workflow reached a terminal state. A `succeeded` or `failed` state returns `true`; `pending`, `in_progress`, `action_required`, and `blocked` return `false`. type: boolean example: false context: description: 'Provides workflow-specific data. For domain-centric workflows, `context.domain_name` identifies the workflow subject. ' type: object additionalProperties: true created_at: type: string format: date-time error: type: - object - 'null' allOf: - $ref: '#/components/schemas/registrar-api-sandbox_workflow_error' links: $ref: '#/components/schemas/registrar-api-sandbox_workflow_links' state: description: "Describes the workflow lifecycle state.\n- `pending`: The workflow awaits processing.\n- `in_progress`: Processing started. Continue polling `links.self`.\n An internal deadline limits the duration of this state.\n- `action_required`: The workflow pauses for user action. See\n `context.action` for details. Stop automated polling until the user\n completes the required action.\n- `blocked`: A third party, such as the domain extension's registry or\n a losing registrar, prevents progress. Continue polling because the\n block may resolve when the third party responds.\n- `succeeded`: Terminal state. The operation completed successfully.\n `completed` equals `true`. For registrations,\n `context.registration` contains the resulting registration resource.\n- `failed`: Terminal state. The operation failed. `completed` equals\n `true`. See `error.code` and `error.message` for the reason. Require\n user review before retrying.\n" type: string example: in_progress enum: - pending - in_progress - action_required - blocked - succeeded - failed updated_at: type: string format: date-time required: - state - completed - created_at - updated_at - links registrar-api_domain_name: description: 'Provides a fully qualified domain name (FQDN), including the extension (e.g., `example.com`, `mybrand.app`). The domain name uniquely identifies a registration. Cloudflare permits only one registration per domain, making the domain name a natural idempotency key for registration requests. ' type: string example: example.com x-auditable: true registrar-api_workflow-status-response-single: allOf: - $ref: '#/components/schemas/registrar-api_api-response-common' - properties: result: $ref: '#/components/schemas/registrar-api_workflow_status' type: object registrar-api-sandbox_domain_name: description: 'Provides a fully qualified domain name (FQDN), including the extension (e.g., `example.com`, `mybrand.app`). The domain name uniquely identifies a registration. Cloudflare permits only one registration per domain, making the domain name a natural idempotency key for registration requests. ' type: string example: example.com x-auditable: true registrar-api_registration_contact_address: description: Physical mailing address for the registrant contact. type: object properties: city: description: City or locality name. type: string example: Austin country_code: description: Two-letter country code per ISO 3166-1 alpha-2 (e.g., `US`, `GB`, `CA`, `DE`). type: string example: US postal_code: description: Postal or ZIP code. type: string example: '78701' state: description: State, province, or region. Use the standard abbreviation where applicable (e.g., `TX` for Texas, `ON` for Ontario). type: string example: TX street: description: Street address including building/suite number. type: string example: 123 Main St required: - street - city - state - postal_code - country_code registrar-api-sandbox_workflow_error: description: Provides error details when a workflow reaches the `failed` state. The workflow type (registration, update, etc.) and underlying registry response determine the specific codes and messages. Workflow error codes differ from immediate HTTP error `errors[].code` values in non-2xx responses. Surface `error.message` to the user for context. type: object properties: code: description: Machine-readable error code identifying the failure reason. type: string example: registry_rejected message: description: Human-readable explanation of the failure. May include registry-specific details. type: string example: Registry rejected the request. required: - code - message registrar-api-sandbox_registration_update_request: description: 'Request to update an existing domain registration. This endpoint currently supports updating `auto_renew` only. ' type: object properties: auto_renew: description: 'Enable or disable automatic renewal. Setting this field to `true` authorizes Cloudflare to charge the account''s default payment method up to 30 days before domain expiry to renew the domain automatically. Renewal pricing may change over time based on registry pricing. ' type: boolean example: true minProperties: 1 registrar-api-sandbox_registration_contact: description: 'Contact data for the domain registration. This information is submitted to the domain registry and, depending on extension and privacy settings, may appear in public WHOIS records. ' type: object properties: email: description: 'Email address for the registrant. Used for domain-related communications from the registry, including ownership verification and renewal notices. ' type: string format: email example: ada@example.com fax: description: 'Fax number in E.164 format (e.g., `+1.5555555555`). Optional. Most registrations do not require a fax number. ' type: string example: '+1.5555555555' phone: description: 'Phone number in E.164 format: `+{country_code}.{number}` without spaces or dashes. Examples: `+1.5555555555` (US), `+44.2071234567` (UK), `+81.312345678` (Japan).' type: string example: '+1.5555555555' postal_info: $ref: '#/components/schemas/registrar-api-sandbox_registration_contact_postal_info' required: - phone - email - postal_info registrar-api-sandbox_workflow-status-response-single: allOf: - $ref: '#/components/schemas/registrar-api-sandbox_api-response-common' - properties: result: $ref: '#/components/schemas/registrar-api-sandbox_workflow_status' type: object registrar-api_registration_contact: description: 'Contact data for the domain registration. This information is submitted to the domain registry and, depending on extension and privacy settings, may appear in public WHOIS records. ' type: object properties: email: description: 'Email address for the registrant. Used for domain-related communications from the registry, including ownership verification and renewal notices. ' type: string format: email example: ada@example.com fax: description: 'Fax number in E.164 format (e.g., `+1.5555555555`). Optional. Most registrations do not require a fax number. ' type: string example: '+1.5555555555' phone: description: 'Phone number in E.164 format: `+{country_code}.{number}` without spaces or dashes. Examples: `+1.5555555555` (US), `+44.2071234567` (UK), `+81.312345678` (Japan).' type: string example: '+1.5555555555' postal_info: $ref: '#/components/schemas/registrar-api_registration_contact_postal_info' required: - phone - email - postal_info registrar-api-sandbox_registration_contact_address: description: Physical mailing address for the registrant contact. type: object properties: city: description: City or locality name. type: string example: Austin country_code: description: Two-letter country code per ISO 3166-1 alpha-2 (e.g., `US`, `GB`, `CA`, `DE`). type: string example: US postal_code: description: Postal or ZIP code. type: string example: '78701' state: description: State, province, or region. Use the standard abbreviation where applicable (e.g., `TX` for Texas, `ON` for Ontario). type: string example: TX street: description: Street address including building/suite number. type: string example: 123 Main St required: - street - city - state - postal_code - country_code registrar-api_registration-response-single: allOf: - $ref: '#/components/schemas/registrar-api_api-response-common' - properties: result: $ref: '#/components/schemas/registrar-api_registration' type: object registrar-api-sandbox_cursor_result_info: description: 'Provides cursor-based pagination metadata. List endpoints use this metadata for cursor pagination. Pass the `cursor` value as a query parameter in the next request to fetch the next page. An empty string indicates the end of pagination. ' type: object properties: count: description: Number of items in the current result set. type: integer example: 20 cursor: description: 'Opaque cursor for fetching the next page. Pass this value as the `cursor` query parameter in a subsequent request. An empty string indicates the end of pagination. ' type: string example: eyJ0IjoiMjAyNS0wNi0xNVQxMjowMDowMC4wMDAwMDBaIiwibiI6ImJyYXZvLm5ldCJ9 per_page: description: Maximum number of items per page. type: integer example: 20 required: - cursor - per_page - count registrar-api_registration_contacts: description: 'Provides contact data for the registration request. The per-extension schema from `GET /accounts/{account_id}/registrar/extensions/{extension}` defines the accepted contact roles. Every currently supported extension requires only `contacts.registrant` from API callers. Callers may provide additional roles such as `technical`, `administrator`, and `billing` when the extension schema includes them. When a registry requires an omitted role, Cloudflare may derive that contact from `contacts.registrant`. When the request omits either the entire `contacts` object or `contacts.registrant`, the system uses the account''s default address book entry as the registrant contact. The account owner must configure this default at `https://dash.cloudflare.com/{account_id}/domains/registrations`, where they can create or update the address book entry and accept the required agreement. Dashboard settings currently provide the only way to manage address book entries. Without either a default address book entry or a registrant contact, the registration request fails validation. ' type: object properties: administrator: description: 'Optional administrator contact. Accepted only when the extension schema includes this role. When the registry requires an omitted contact, Cloudflare may derive it from `contacts.registrant`. ' allOf: - $ref: '#/components/schemas/registrar-api_registration_contact' billing: description: 'Optional billing contact. Accepted only when the extension schema includes this role. When the registry requires an omitted contact, Cloudflare may derive it from `contacts.registrant`. ' allOf: - $ref: '#/components/schemas/registrar-api_registration_contact' registrant: description: 'Optional registrant contact. If omitted, the account''s default address book entry is used instead. ' allOf: - $ref: '#/components/schemas/registrar-api_registration_contact' technical: description: 'Optional technical contact. Accepted only when the extension schema includes this role. When the registry requires an omitted contact, Cloudflare may derive it from `contacts.registrant`. ' allOf: - $ref: '#/components/schemas/registrar-api_registration_contact' registrar-api_workflow_error: description: Provides error details when a workflow reaches the `failed` state. The workflow type (registration, update, etc.) and underlying registry response determine the specific codes and messages. Workflow error codes differ from immediate HTTP error `errors[].code` values in non-2xx responses. Surface `error.message` to the user for context. type: object properties: code: description: Machine-readable error code identifying the failure reason. type: string example: registry_rejected message: description: Human-readable explanation of the failure. May include registry-specific details. type: string example: Registry rejected the request. required: - code - message registrar-api-sandbox_api-response-common-failure: type: object properties: errors: example: - code: 7003 message: No route for the URI allOf: - $ref: '#/components/schemas/registrar-api-sandbox_messages' minItems: 1 messages: example: [] allOf: - $ref: '#/components/schemas/registrar-api-sandbox_messages' result: type: - object - 'null' enum: - null success: description: Whether the API call was successful. type: boolean example: false enum: - false required: - success - errors - messages - result registrar-api-sandbox_registration: description: A domain registration resource representing the current state of a registered domain. type: object properties: auto_renew: description: Whether automatic renewal occurs before expiration. type: boolean example: true created_at: description: When the domain was registered. Present when the registration resource exists. type: string format: date-time example: '2025-01-15T10:00:00Z' domain_name: $ref: '#/components/schemas/registrar-api-sandbox_domain_name' expires_at: description: When the domain registration expires. Ready registrations include this value; only `registration_pending` and `transfer_pending` may return null. type: - string - 'null' format: date-time example: '2026-01-15T10:00:00Z' locked: description: Whether the domain is locked for transfer. type: boolean example: true privacy_mode: description: Current WHOIS privacy mode for the registration. type: string example: redaction enum: - 'off' - redaction status: description: 'Current registration status. - `active`: The domain operates with an active registration. - `registration_pending`: Registration remains in progress. - `transfer_pending`: Domain transfer is in progress. - `expired`: The domain registration expired. - `suspended`: The registry suspended the domain. - `redemption_period`: The domain entered the redemption grace period. - `pending_delete`: The registry scheduled the domain for deletion. ' type: string example: active enum: - active - registration_pending - transfer_pending - expired - suspended - redemption_period - pending_delete required: - domain_name - status - created_at - expires_at - auto_renew - privacy_mode - locked registrar-api_api-response-common: type: object properties: errors: $ref: '#/components/schemas/registrar-api_messages' messages: $ref: '#/components/schemas/registrar-api_messages' result: anyOf: - type: object - items: type: object type: array - type: string success: description: Whether the API call was successful. type: boolean example: true enum: - true required: - success - errors - messages - result registrar-api_registration_create_request: type: object properties: acknowledgements: description: 'Provides user acknowledgements for a specific extension or premium registration flow. The extension registration schema from the extension discovery endpoint identifies the required keys. ' type: object example: fees: currency: USD registration_fee: 10 renewal_fee: 10 additionalProperties: true auto_renew: description: 'Enable or disable automatic renewal. Defaults to `false` if omitted. Setting this field to `true` is an explicit opt-in authorizing Cloudflare to charge the account''s default payment method up to 30 days before domain expiry to renew the domain automatically. Renewal pricing may change over time based on registry pricing. ' type: boolean example: false default: false contact_extensions: description: 'Provides registry-specific contact extension values for the registrant. `GET /accounts/{account_id}/registrar/extensions/{extension}` identifies the required keys and allowed values for each extension in the `registration_schema.properties.contact_extensions` object. Examples include `.us` nexus fields, `.uk` registrant type fields, and `.ca` legal type fields. Omit this object when the extension''s registration schema excludes `contact_extensions`. ' type: object example: application_purpose: P3 nexus_category: C11 additionalProperties: true contacts: type: object allOf: - $ref: '#/components/schemas/registrar-api_registration_contacts' domain_name: $ref: '#/components/schemas/registrar-api_domain_name' privacy_mode: description: "Sets the WHOIS privacy mode for the registration. Defaults to `redaction`.\n- `off`: Disables WHOIS privacy.\n- `redaction`: Requests WHOIS redaction where the extension supports it.\n Some extensions exclude privacy and redaction.\n" type: string example: redaction default: redaction enum: - 'off' - redaction years: description: 'Sets the registration term from 1 to 10 years. When omitted, this field defaults to the registry''s minimum registration period for the extension. Most extensions require 1 year, while some require longer minimum terms (e.g., `.ai` requires 2 years). Each registry may also enforce its own maximum registration term. A request above that maximum fails. When uncertain, omit this field to use the default. ' type: integer example: 1 maximum: 10 minimum: 1 required: - domain_name registrar-api-sandbox_workflow_links: type: object properties: resource: description: URL to the domain resource. type: string example: /accounts/{account_id}/registrar/registrations/example.com self: description: URL to this status resource. type: string example: /accounts/{account_id}/registrar/registrations/example.com/registration-status required: - self registrar-api-sandbox_messages: type: array items: properties: code: type: integer minimum: 1000 message: type: string source: description: Location of the invalid value that caused the error. type: object properties: pointer: description: JSON Pointer to the invalid or missing request value. type: string required: - pointer required: - code - message type: object uniqueItems: true example: [] registrar-api_registration: description: A domain registration resource representing the current state of a registered domain. type: object properties: auto_renew: description: Whether automatic renewal occurs before expiration. type: boolean example: true created_at: description: When the domain was registered. Present when the registration resource exists. type: string format: date-time example: '2025-01-15T10:00:00Z' domain_name: $ref: '#/components/schemas/registrar-api_domain_name' expires_at: description: When the domain registration expires. Ready registrations include this value; only `registration_pending` and `transfer_pending` may return null. type: - string - 'null' format: date-time example: '2026-01-15T10:00:00Z' locked: description: Whether the domain is locked for transfer. type: boolean example: true privacy_mode: description: Current WHOIS privacy mode for the registration. type: string example: redaction enum: - 'off' - redaction status: description: 'Current registration status. - `active`: The domain operates with an active registration. - `registration_pending`: Registration remains in progress. - `transfer_pending`: Domain transfer is in progress. - `expired`: The domain registration expired. - `suspended`: The registry suspended the domain. - `redemption_period`: The domain entered the redemption grace period. - `pending_delete`: The registry scheduled the domain for deletion. ' type: string example: active enum: - active - registration_pending - transfer_pending - expired - suspended - redemption_period - pending_delete required: - domain_name - status - created_at - expires_at - auto_renew - privacy_mode - locked registrar-api_workflow_links: type: object properties: resource: description: URL to the domain resource. type: string example: /accounts/{account_id}/registrar/registrations/example.com self: description: URL to this status resource. type: string example: /accounts/{account_id}/registrar/registrations/example.com/registration-status required: - self registrar-api-sandbox_api-response-common: type: object properties: errors: $ref: '#/components/schemas/registrar-api-sandbox_messages' messages: $ref: '#/components/schemas/registrar-api-sandbox_messages' result: anyOf: - type: object - items: type: object type: array - type: string success: description: Whether the API call was successful. type: boolean example: true enum: - true required: - success - errors - messages - result securitySchemes: api_email: in: header name: X-Auth-Email type: apiKey api_key: in: header name: X-Auth-Key type: apiKey api_token: scheme: bearer type: http user_service_key: in: header name: X-Auth-User-Service-Key type: apiKey externalDocs: description: Cloudflare Radar Documentation url: https://developers.cloudflare.com/radar/ x-forge-commands: abuse-reports: description: Submit and track abuse reports for phishing, malware, and other policy violations on Cloudflare-proxied sites groups: appeals: description: Appeal eligibility for abuse reports emails: description: Emails sent for abuse reports mitigations: description: Mitigation actions taken in response to abuse reports accounts: description: Account settings, members, roles, subscriptions, and API tokens for your Cloudflare account groups: applications: description: Applications operations categories: description: Categories operations organizations: description: Move accounts between organizations profile: description: View and manage the profile for a Cloudflare account roles: description: View the roles available for assigning to account members, each defining a set of permissions subscriptions: description: View and manage plan subscriptions attached to this account tokens: description: Create and manage scoped API tokens for programmatic access to the Cloudflare API ai-gateway: description: Proxy, cache, rate-limit, and observe requests to AI providers — OpenAI, Anthropic, Workers AI, and more groups: custom-domains: description: Manage custom hostnames that route requests through an AI Gateway custom-providers: description: Manage account-level custom AI providers and their endpoint settings datasets: description: 'Deprecated: manage filtered collections of gateway logs used by evaluations' dynamic-routing: description: Route requests across multiple AI providers with fallback, load-balancing, and versioned deployments dynamic-routing.deployments: description: Deploy dynamic route versions and view deployment history dynamic-routing.versions: description: Create and inspect saved versions of a dynamic route evaluation-types: description: 'Deprecated: list the evaluator types that evaluations can use' evaluations: description: 'Deprecated: score the logs in a dataset with selected evaluator types' gateways: description: Create and configure AI Gateways for an account gateways.providers: description: Store and rotate upstream AI provider keys for a gateway logs: description: Inspect, annotate, and delete gateway request logs stored by Legacy Logs ai-search: description: 'Managed search-as-a-service: crawl, index, and query content with AI-powered relevance and chat completions' groups: items: description: Content indexed by AI Search instances jobs: description: Indexing job lifecycle for AI Search instances namespace: description: Logical groupings for organizing AI Search instances tokens: description: Credentials used by AI Search instances ai-security: description: Detect prompt injection, PII, and unsafe topics in traffic to your AI applications groups: custom-topics: description: Organization-specific topic categories used by AI Security for Apps content detection analytics: description: Zone-level traffic analytics — dashboard summaries, per-colo breakdowns, and Argo latency metrics groups: colo: description: Per-data-center (colo) traffic analytics breakdown for the zone dashboard: description: Aggregated zone dashboard analytics — requests, bandwidth, threats, and page views latency: description: Argo Smart Routing latency analytics showing time-to-first-byte improvements argo: description: Network optimization features that speed up and improve reliability of traffic to your origins groups: smart-routing: description: Route traffic through the fastest network paths to your origin using real-time latency data tiered-caching: description: Reduce origin load by having upper-tier data centers serve cache misses before reaching your origin basin-catalog: description: Iceberg-compatible data catalog for R2 — organize objects into tables and namespaces for SQL query engines groups: credentials: description: Catalog access credentials for external query engines (Spark, Trino, etc.) maintenance-configs: description: Table maintenance settings — compaction schedules and snapshot expiration policies namespaces: description: Logical namespaces that group related tables within the data catalog namespaces.tables: description: Tables within catalog namespaces namespaces.tables.maintenance-configs: description: Table-level maintenance configurations and operations namespaces.tables.maintenance-runs: description: History of maintenance runs performed on tables billing: description: Account billing profiles and usage data for Cloudflare subscriptions and add-on services groups: profiles: description: Billing profile with payment method, address, and invoice preferences usage: description: Metered usage data for billed services — requests, bandwidth, and feature consumption botnet-feed: description: Botnet threat intelligence feeds — IP and ASN-level data on known command-and-control infrastructure groups: asn: description: ASN-level botnet activity data showing networks with known C2 infrastructure configs: description: Botnet feed subscription configuration and notification preferences builds: description: Build and deploy Workers from connected repositories, then inspect build status and logs. groups: deploy-hooks: description: Manage branch-specific HTTP hooks that start builds. limits: description: View build-minute availability and refresh information. logs: description: Retrieve build logs. repos: description: Manage source repository connections for Workers Builds. tokens: description: Manage credentials used by Workers Builds to deploy Workers. triggers: description: Configure how repository changes build and deploy Workers. versions: description: Find builds associated with Worker versions. workers: description: Manage repository-backed build configuration for Workers. cache: description: Purge cached content and configure Cache Reserve, tiered caching, and variant serving groups: origin-cloud-regions: description: Manage Origin Cloud Regions routing and failover configurations settings: description: Configure Cache Reserve, tiered caching, and variant serving settings.regional-tiered-cache: description: Restrict tiered cache topology to data centers within a specific geographic region settings.reserve: description: Persistent storage tier that keeps cached assets even after eviction from edge caches settings.smart-tiered-cache: description: Automatically determine the best upper-tier data centers for tiered cache topology settings.variants: description: Serve different cached versions of an image based on the Accept header (WebP, AVIF, etc.) client-side-security: description: Client-Side Security — monitor JavaScript, connections, and cookies on your pages for supply-chain attacks groups: connections: description: Third-party connections made by scripts on your pages — track data exfiltration risks cookies: description: Cookies set by your pages with classification and same-site attribute tracking policies: description: Content Security Policies that control which scripts and connections are allowed on your pages scripts: description: JavaScript files detected on your pages with change tracking and malicious code detection settings: description: Fine tune Client-Side Security behaviors cloud-connector: description: Route traffic from Cloudflare directly to cloud provider services (AWS, Azure, GCP) without origin servers groups: rules: description: Routing rules that map request patterns to cloud provider endpoints cloudforce-one: description: Detection rule management APIs groups: binary-storage: description: Upload and retrieve malware samples and suspicious binaries for analysis requests: description: Additional request operations — priority listing and asset creation rules: description: Rule management operations groups: approvals: description: Approval workflow operations email: description: Email rule operations exemptions: description: Exemption rule operations managed: description: Managed rule operations stats: description: Rule statistics operations tree: description: Rule navigation tree operations scans: description: Scan URLs, IPs, and domains for threat intelligence indicators containers: description: Deploy and manage Containers applications on Cloudflare's global network groups: applications: description: Manage Containers applications applications.instances: description: Inspect Containers instances belonging to applications applications.rollouts: description: Manage rollouts for scheduler-backed applications applications.versions: description: Inspect versions of scheduler-backed applications registries: description: Manage Containers image registries registries.credentials: description: Generate image registry credentials content-scan: description: Malicious uploads detection, scan uploaded content in HTTP requests for malware and malicious payloads groups: expressions: description: Custom expressions that tell the scanner how to reach content objects it cannot parse on its own custom-pages: description: Manage custom error and challenge pages and their assets for accounts and zones groups: account-custom-pages: description: Manage account-level custom pages account-custom-pages.preview-tokens: description: Preview tokens for account-level custom pages assets: description: Manage account- and zone-level custom assets zone-custom-pages: description: Manage zone-level custom pages zone-custom-pages.preview-tokens: description: Preview tokens for zone-level custom pages d1: description: D1 is Cloudflare's managed, serverless database with SQLite's SQL semantics, built-in disaster recovery, and Worker and HTTP API access. groups: time-travel: description: use specific point-in-time backups of your D1 database x-forge-epilogue: For more information about Time Travel, see https://developers.cloudflare.com/d1/reference/time-travel diagnostics: description: Network diagnostic tools — traceroutes from Cloudflare's edge and endpoint health checks groups: endpoint-healthchecks: description: Monitor external endpoint availability with periodic HTTP/HTTPS health checks traceroutes: description: Run traceroutes from Cloudflare data centers to diagnose network path issues email-routing: description: Route incoming email to verified destination addresses or Workers with routing rules, catch-all behavior, and managed DNS records groups: addresses: description: Verified destination email addresses that can receive forwarded mail dns: description: Inspect or unlock the DNS records required by Email Routing rules: description: Match incoming email addresses and forward messages to destination mailboxes or Workers settings: description: Inspect and update Email Routing settings email-security: description: Cloud email security — investigate threats, manage allow/block policies, and detect phishing groups: analytics: description: Analytics and reporting — monthly report and per-day breakdowns of threat activity bulk-actions: description: Asynchronous jobs that move or release every message matching a search — create, monitor, and manage bulk jobs investigate: description: Search and investigate email messages — view detections, traces, raw content, and take remediation actions phishguard: description: PhishGuard user-reported phishing reports — view detected threats for a date range settings: description: Email security configuration — block senders, allow policies, content policies, domains, trusted domains, impersonation registry, and URL handling submissions: description: Reclassify submissions — track user and team reports of false positives and missed detections email-sending: description: Send transactional email and manage sending subdomains and their DNS configuration groups: limits: description: Inspect account-level sending quotas and current usage subdomains: description: Configure sending subdomains and keep their DNS records healthy suppressions: description: Prevent delivery to suppressed addresses and manage the account suppression list filters: description: Filter expressions used by legacy firewall rules to match requests — prefer Rulesets for new configurations firewall: description: Legacy firewall rules, zone lockdowns, access rules, user-agent blocking, and WAF packages groups: access-rules: description: IP-based access rules that allow, block, challenge, or whitelist traffic globally or per-zone lockdowns: description: Zone lockdown rules that restrict access to URLs by IP address or range rules: description: Legacy firewall rules with filter expressions — prefer Rulesets for new configurations ua-rules: description: Block or challenge requests based on the User-Agent header string waf: description: Legacy WAF managed rule packages, rule groups, individual rules, and override configurations zone-access-rules: description: Zone-scoped IP access rules for blocking or allowing traffic google-tag-gateway: description: Google Tag Gateway operations groups: config: description: Google Tag Gateway config operations healthchecks: description: Standalone health checks that monitor origin server availability from Cloudflare's edge groups: previews: description: Test a health check configuration before deploying it to production hyperdrive: description: Accelerate access to existing databases by caching queries and pooling connections at the edge iam: description: Identity and access management — permission groups, resource groups, user groups, and SSO connectors groups: permission-groups: description: View the permission groups that can be assigned to API tokens and policies resource-groups: description: Define scopes that limit which account resources a policy or token can access sso: description: Configure single sign-on connectors to authenticate account members through an external identity provider user-groups: description: Organize account members into groups for easier permission assignment images: description: Store, resize, and deliver optimized images globally — variants, signing keys, and direct uploads groups: flows: description: Zone-level transformation flows that control how images are resized and optimized on delivery import: description: Import images from S3 keys: description: Manage signing keys for generating private image URLs variants: description: Manage named resize variants for transforming images on delivery intel: description: Threat intelligence lookups — IP reputation, domain info, ASN details, WHOIS, and indicator feeds groups: asn: description: ASN intelligence — ownership, geolocation, and subnet details for autonomous systems attack-surface-report: description: Attack surface intelligence — exposed assets, vulnerabilities, and infrastructure mapping dns: description: Passive DNS data showing historical DNS resolution records for domains domain-history: description: Historical domain registration and categorization changes over time domains: description: Domain intelligence — risk scores, categories, and associated infrastructure indicator-feeds: description: Threat indicator feeds — subscribe to and manage curated lists of malicious IPs, domains, and URLs ip-lists: description: Curated IP lists used for threat detection and policy enforcement ips: description: IP address intelligence — geolocation, risk assessment, and hosting provider details miscategorizations: description: Report and track domain miscategorization corrections whois: description: WHOIS registration data for domains including registrant, registrar, and nameservers k2: description: Durable, ordered event streams that you produce records to and consume from with subscriptions groups: streams: description: K2 streams, their retention, and the HTTP and Workers binding inputs used to produce records streams.subscriptions: description: Subscriptions that consume a K2 stream, with committed-position lag leaked-credential-checks: description: Detect compromised credentials in login requests by checking against known breach databases groups: detections: description: Custom detection locations that tell the WAF where to find usernames and passwords in requests load-balancers: description: Distribute traffic across origin pools with health monitoring, geo-steering, and failover groups: monitor-groups: description: Group monitors together for shared configuration and bulk management monitor-groups.references: description: List references to monitor groups used by load balancer pools monitors: description: Health check configurations that probe origin servers and determine pool availability monitors.previews: description: Health check configurations that probe origin servers and determine pool availability monitors.references: description: Health check configurations that probe origin servers and determine pool availability pools: description: Origin server pools with weighted traffic distribution, health thresholds, and geographic preferences pools.health: description: Origin server pools with weighted traffic distribution, health thresholds, and geographic preferences pools.references: description: Origin server pools with weighted traffic distribution, health thresholds, and geographic preferences previews: description: Preview the result of a health check monitor configuration before applying it regions: description: Geographic regions used for regional pool steering and traffic policies searches: description: Search across all load balancer resources (pools, monitors, load balancers) by name or reference logs: description: Log control, retention, and raw log access — CMB config, ray ID lookups, and received fields groups: control: description: Log control operations received: description: Received log operations magic-network-monitoring: description: Flow-based network traffic monitoring with configurable alerting rules and VPC flow ingestion groups: configs: description: Account-level monitoring configuration — sampling rates, thresholds, and notification settings rules: description: Monitoring rules that define traffic thresholds and trigger alerts or prefix advertisements vpc-flows: description: Ingest VPC flow logs from cloud providers for network visibility and anomaly detection magic-transit: description: DDoS-protected network transit — GRE/IPsec tunnels, static routes, Magic WAN sites, connectors, and packet captures groups: advanced-dns-protection: description: Advanced Dns Protection operations advanced-tcp-protection: description: Advanced Tcp Protection operations apps: description: Application-aware traffic policies for Magic WAN that steer traffic by app type bgp-filter-profiles: description: BGP filter profiles for controlling which routes are allowed or denied on Magic Transit tunnels bgp-settings: description: BGP settings for controlling default ASN and route redistribution on Magic Transit tunnels cf-interconnects: description: Cloudflare Network Interconnect (CNI) links for direct physical or virtual peering gre-tunnels: description: GRE tunnel endpoints that connect your network to Cloudflare for Magic Transit ipsec-tunnels: description: IPsec tunnel endpoints with pre-shared key management for encrypted transit pcaps: description: Packet capture requests for debugging traffic flowing through Magic Transit tunnels routes: description: Static routes that direct IP prefix traffic through specific GRE/IPsec tunnels sites: description: Magic WAN branch sites — base CRUD, LAN/WAN interface configuration, ACLs, connectors, app configuration, and NetFlow config mcp: description: Manage MCP portals and upstream MCP servers for Cloudflare Access AI controls groups: portals: description: Manage MCP portals, attached servers, and Code Mode settings servers: description: Manage upstream MCP servers, credentials, capabilities, and sync state network-interconnects: description: Physical and virtual private interconnects between your infrastructure and Cloudflare's network groups: cnis: description: Cloud Network Interconnect (CNI) connections — private links from cloud providers to Cloudflare interconnects: description: Physical cross-connect and partner interconnect sessions with LOA and status tracking settings: description: Account-level interconnect settings and default configurations slots: description: Available interconnect facility slots showing port capacity at Cloudflare data centers organizations: description: Multi-user organizations that group accounts, members, and shared settings under a single entity groups: account-organizations: description: List organizations associated with a specific account accounts: description: Accounts operations members: description: Members operations members-batch-create: description: Members Batch Create operations organization-profile: description: View and update the public profile information for an organization shares: description: Shares operations origin-post-quantum-encryption: description: Enable post-quantum key exchange for connections between Cloudflare and your origin server pages: description: Full-stack application hosting with Git-integrated builds, preview deployments, and custom domains groups: projects: description: Pages projects, deployments, build logs, and custom domain bindings pipelines: description: Ingest, transform, and route event streams into R2, analytics, or other destinations in real time groups: sinks: description: Destinations where pipeline data is written — R2 buckets, HTTP endpoints, or other storage streams: description: Inbound data streams that feed events into a pipeline for processing precursor: description: Precursor settings for a zone queues: description: Reliable message queuing between Workers — produce, consume, and batch-process messages at scale groups: consumers: description: Workers that automatically receive and process messages from a queue messages: description: Push messages to a queue and pull or acknowledge them from consumers purge: description: Remove all pending messages from a queue subscriptions: description: Manage queue subscriptions for event-driven message routing r2: description: S3-compatible object storage with zero egress fees — buckets, lifecycle rules, event notifications, and data migration groups: buckets: description: Create and configure R2 buckets including CORS, lifecycle, custom domains, event notifications, and object locks buckets.jobs: description: Create and inspect background jobs for an R2 bucket buckets.local-uploads: description: R2 bucket local upload configuration super-slurper: description: Migrate data from external S3-compatible storage into R2 buckets with resumable transfer jobs temporary-credentials: description: Generate short-lived S3-compatible credentials scoped to specific buckets and operations r2-data-catalog: description: Iceberg-compatible data catalog for R2 — organize objects into tables and namespaces for SQL query engines groups: credentials: description: Catalog access credentials for external query engines (Spark, Trino, etc.) maintenance-configs: description: Table maintenance settings — compaction schedules and snapshot expiration policies namespaces: description: Logical namespaces that group related tables within the data catalog namespaces.tables: description: Tables within catalog namespaces namespaces.tables.maintenance-configs: description: Table-level maintenance configurations and operations namespaces.tables.maintenance-runs: description: History of maintenance runs performed on tables radar: description: Internet-wide traffic intelligence — BGP, DNS, HTTP trends, attack data, and network quality insights groups: agent-readiness: description: Agent readiness summary statistics across the Cloudflare network ai: description: AI inference trends and model usage statistics across the Cloudflare network annotations: description: Radar annotations marking significant Internet events (outages, cable cuts, etc.) as112: description: AS112 DNS sinkhole statistics — reverse DNS query volumes for private address space attacks: description: DDoS and application-layer attack trends, vectors, and target analysis bgp: description: BGP routing data — prefix announcements, AS-level stats, route leaks, and hijack events bots: description: Internet-wide bot traffic trends, categories, and distribution statistics ct: description: Certificate Transparency log monitoring and newly-issued certificate discovery datasets: description: Downloadable Radar datasets for offline analysis and research dns: description: Global DNS query trends — top domains, resolver stats, and DNSSEC adoption email: description: Email security trends — DMARC/SPF/DKIM adoption, spam, and phishing statistics entities: description: Look up ASNs, IPs, domains, and locations with metadata and traffic summaries geolocations: description: Geographic location metadata used for regional traffic analysis http: description: HTTP protocol trends — TLS versions, HTTP versions, browser share, and OS distribution leaked-credentials: description: Leaked credential detection trends and exposure statistics netflows: description: Network-layer traffic flow data and volumetric trend analysis origins: description: Cloud and hosting origin providers (e.g. Amazon, by region) and their traffic metrics post-quantum: description: Post-quantum encryption adoption and deployment trends across the Internet quality: description: Internet connection quality metrics — speed, latency, and jitter by geography and ASN ranking: description: Top domain rankings based on DNS query popularity across the Cloudflare network robots-txt: description: Robots.txt adoption and crawler directive trends across the web search: description: Search Radar data across IPs, ASNs, domains, and locations tcp-resets-timeouts: description: TCP connection reset and timeout statistics indicating network health issues tlds: description: Top-level domain (TLD) metadata and performance trends traffic-anomalies: description: Detected traffic anomalies and unusual patterns in Internet traffic flows verified-bots: description: Catalog of known good bots (Googlebot, Bingbot, etc.) and their traffic patterns rate-limits: description: Legacy per-zone rate limiting rules — prefer Advanced Rate Limiting in Rulesets for new configurations realtime: description: Real-time audio, video, and data services on Cloudflare's global network groups: kit: description: SDK-backed meetings, participants, recordings, livestreams, and webhooks kit.analytics: description: Usage and livestream analytics for RealtimeKit applications kit.analytics.livestreams: description: Livestream analytics for RealtimeKit applications kit.analytics.livestreams.daily: description: Daily livestream analytics for RealtimeKit applications kit.analytics.usage: description: Usage analytics for RealtimeKit applications kit.apps: description: RealtimeKit applications that group meetings, sessions, and configuration kit.livestreams: description: Independent and meeting-based livestreams and their sessions kit.livestreams.sessions: description: Sessions for RealtimeKit livestreams kit.meetings: description: Meetings, participants, access tokens, and meeting livestreams kit.meetings.active: description: Live meeting state and participant controls kit.meetings.active.polls: description: Polls for active meeting sessions kit.meetings.livestream: description: Livestream operations associated with RealtimeKit meetings kit.meetings.participants: description: Participants in RealtimeKit meetings kit.meetings.participants.tokens: description: Access tokens for RealtimeKit meeting participants kit.presets: description: Reusable meeting configuration for media, permissions, and interface behavior kit.recordings: description: Meeting and participant-track recordings and recording controls kit.recordings.active: description: Active recordings for RealtimeKit meetings kit.recordings.tracks: description: Participant-track recordings for RealtimeKit meetings kit.sessions: description: Historical session data, participants, chat, transcripts, and summaries kit.sessions.chat: description: Chat messages from historical RealtimeKit sessions kit.sessions.livestreams: description: Livestreams associated with historical RealtimeKit sessions kit.sessions.participants: description: Participants in historical RealtimeKit sessions kit.sessions.peers: description: Peer details from historical RealtimeKit sessions kit.sessions.summaries: description: Summaries of historical RealtimeKit sessions kit.sessions.transcripts: description: Transcripts from historical RealtimeKit sessions kit.webhooks: description: Webhook endpoints and supported events for RealtimeKit notifications kit.webhooks.events: description: Supported events for RealtimeKit webhooks moq: description: MoQ relays for publishing and subscribing to media streams moq.relays: description: Relays are isolated MoQ scopes that carry media between publishers and subscribers moq.relays.tokens: description: Tokens that authorize publishers and subscribers to connect to a relay sfu: description: SFU apps that route WebRTC media and data between participants sfu.apps: description: SFU application namespaces for sessions and tracks turn: description: TURN keys that help clients traverse NATs and firewalls turn.keys: description: Keys used to generate short-lived TURN credentials request-tracers: description: Trace how a request would be processed through Cloudflare's rules and configuration pipeline groups: traces: description: Simulate request processing to debug rule matches, transforms, and routing decisions resource-sharing: description: Share Cloudflare resources (zones, accounts) across organizations with granular access controls groups: recipients: description: Update share recipients resources: description: Individual resources (zones, configs) that have been shared with recipients rules: description: Resources used by Cloudflare rules and rulesets groups: lists: description: Custom account-level lists of IPs, hostnames, ASNs, or redirects used in rule expressions rum: description: Real User Measurement (Web Analytics) — track page loads, Core Web Vitals, and visitor metrics groups: rules: description: Rules that control which pages and paths are tracked by Web Analytics site-info: description: Web Analytics sites — register domains and get the JavaScript beacon snippet scim: description: SCIM 2.0 provisioning — manage users, groups, and identity provider sync for your account groups: groups: description: Groups operations resource-types: description: Resource Types operations schemas: description: Schemas operations service-provider-config: description: Service Provider Config operations users: description: Users operations secrets-store: description: Centralized secret management — store API keys, tokens, and credentials for use across Workers and other products groups: quota: description: Account quota limits for secrets stores, secrets count, and storage capacity secrets: description: Encrypted key-value secrets within a store. Pass --store-id to scope. stores: description: Secret stores that hold encrypted key-value secrets accessible by Workers and services security-center: description: Security posture dashboard — view and manage security insights, misconfigurations, and vulnerabilities groups: insights: description: Security findings and recommendations across your account — DNS, SSL, WAF misconfigurations, etc. zone-insights: description: Zone-scoped security insights — counts by class, severity, type, and dismissal security-txt: description: Manage the /.well-known/security.txt file that tells security researchers how to report vulnerabilities smart-shield: description: Smart Shield settings, health checks, and cache reserve management groups: cache-reserve-clear: description: Cache Reserve Clear operations health-checks: description: Health checks operations spectrum: description: Proxy and protect arbitrary TCP/UDP applications through Cloudflare's network with DDoS mitigation groups: analytics: description: Real-time and historical connection analytics for Spectrum applications apps: description: Spectrum application configurations that map protocols and ports to origin servers speed: description: Observatory speed tests — run Lighthouse audits, track performance trends, and schedule recurring tests groups: availabilities: description: Check which speed test regions and configurations are available for your zone pages: description: Tested pages with their performance history, trends, and individual test results schedule: description: Scheduled recurring speed tests that automatically run at regular intervals ssl: description: SSL/TLS certificate management — certificate packs, Universal SSL, verification, and TLS mode recommendations groups: automatic-upgrader: description: SSL automatic mode enrollment — get or update automatic SSL/TLS upgrader settings recommendations: description: Get the recommended SSL/TLS encryption mode based on your origin server's certificate configuration stream: description: Video encoding, storage, and delivery — upload, live-stream, clip, caption, and embed video at scale groups: audio-tracks: description: Add, edit, or remove additional audio tracks on a video captions: description: Upload, generate, or retrieve captions and subtitles for videos in multiple languages clip: description: Create a new video clip from an existing video by specifying start and end times copy: description: Import a video from a URL into Stream for processing and delivery direct-upload: description: Generate a tokenized URL that lets end-users upload video directly to Stream downloads: description: Create downloadable MP4 renditions of a video for offline viewing embed: description: Retrieve the HTML embed code snippet for a video keys: description: Signing keys used to generate short-lived signed URLs for private video playback live-inputs: description: Enable and disable live input streams token: description: Generate short-lived signed URL tokens for secure private video playback typed-downloads: description: Type-specific stream download creation and deletion videos: description: Aggregate video storage usage statistics for the account watermarks: description: Watermark profiles that overlay an image on every video in the account webhooks: description: Webhook notifications for video lifecycle events (ready, error, etc.) tenants: description: Multi-tenant account management — manage tenant accounts, entitlements, and memberships groups: account-types: description: Account Types operations accounts: description: Accounts operations entitlements: description: Entitlements operations memberships: description: Memberships operations turnstile: description: CAPTCHA-free bot verification widgets that protect forms and APIs without degrading user experience groups: widgets: description: Turnstile widget configurations — site keys, secret rotation, and challenge mode settings url-scanner: description: Scan URLs for phishing, malware, and other threats — submit scans and retrieve detailed results groups: response: description: Response operations responses: description: Raw HTTP response data captured during URL scans scan: description: Scan operations scans: description: URL scan requests and results — submit URLs for analysis and retrieve threat verdicts user: description: Your Cloudflare user profile, invitations, organizations, billing, and personal API tokens groups: billing: description: View billing history and payment profile for your user (deprecated — prefer account-level billing) firewall: description: Firewall operations load-balancers.monitors: description: Load Balancers operations load-balancers.monitors.preview: description: Load Balancers operations load-balancers.monitors.references: description: Load Balancers operations load-balancers.pools: description: Load Balancers operations load-balancers.pools.edit.pools: description: Load Balancers operations load-balancers.pools.health: description: Load Balancers operations load-balancers.pools.preview: description: Load Balancers operations load-balancers.pools.references: description: Load Balancers operations load-balancers.preview: description: Load Balancers operations load-balancing-analytics.events: description: Load Balancing Analytics operations subscriptions: description: View and manage zone-level plan subscriptions owned by your user tenants: description: Tenants operations tokens: description: Create and manage personal API tokens scoped to your user for programmatic API access user.analytics: description: User-level traffic analytics — aggregated totals and timeseries across all zones vectorize: description: Globally distributed vector database for building semantic search, recommendations, and RAG applications on Workers groups: deprecated-indexes: description: Deprecated v1 Vectorize index operations metadata-index: description: Metadata indexes for filtered vector search waiting-rooms: description: Virtual queues that throttle traffic to your site during peak demand with customizable waiting pages groups: account-waiting-rooms: description: Account-scoped waiting room listing events: description: Scheduled events that temporarily override waiting room settings for sales, launches, etc. page: description: Custom HTML waiting page templates and preview rendering rules: description: Rules that bypass or modify waiting room behavior for specific request patterns settings: description: Zone-level waiting room defaults and cookie configuration statuses: description: Real-time queue status showing active users, queued users, and estimated wait times workflows: description: Durable, multi-step workflows that run on Workers with automatic retries and state persistence groups: instances: description: Workflow instance operations versions: description: Workflow version operations zaraz: description: Server-side tag manager — load third-party tools (analytics, pixels, etc.) from Cloudflare's edge without client-side JS groups: config: description: Full Zaraz configuration including tools, triggers, and variables for the zone default: description: Default Zaraz configuration template used as a starting point for new zones export: description: Export the current Zaraz configuration as a portable JSON document history: description: Configuration version history — browse and restore previous Zaraz configurations publish: description: Publish pending Zaraz configuration changes to make them live on the zone workflow: description: Workflow state for Zaraz configuration changes (draft vs. published) zero-trust: description: Cloudflare's SASE platform — secure access, device posture, DLP, tunnels, gateway policies, and network segmentation groups: dex: description: Digital Experience Monitoring — synthetic tests, fleet-wide device metrics, and network path diagnostics dlp.custom-prompt-topics: description: Data Loss Prevention - manage custom prompt topics for AI-based content detection dlp.data-classes: description: Data Loss Prevention - manage data classes used to classify sensitive information dlp.data-tag-categories: description: Data Loss Prevention - manage categories that organize data tags dlp.data-tag-category-templates: description: Data Loss Prevention - browse templates for creating data tag categories dlp.data-tags: description: Data Loss Prevention - manage tags used to classify and organize sensitive data dlp.datasets: description: Data Loss Prevention - manage datasets, versions, and uploads dlp.document-fingerprints: description: Data Loss Prevention - manage document fingerprints for detecting matching documents dlp.email.account-mapping: description: Data Loss Prevention - configure account mappings for outbound email scanning dlp.email.rules: description: Data Loss Prevention - manage outbound email scanning rules and their priorities dlp.entries: description: Data Loss Prevention - list and manage detection entries dlp.limits: description: Data Loss Prevention - view account limits and resource quotas dlp.patterns: description: Data Loss Prevention - validate regular expressions used for content detection dlp.profiles: description: Data Loss Prevention - list and retrieve profiles dlp.profiles.custom: description: Data Loss Prevention - manage custom profiles dlp.profiles.predefined: description: Data Loss Prevention - manage predefined profiles dlp.sensitivity-group-templates: description: Data Loss Prevention - browse templates for creating sensitivity groups dlp.sensitivity-groups: description: Data Loss Prevention - manage sensitivity groups and their level ordering dlp.sensitivity-levels: description: Data Loss Prevention - manage sensitivity levels within sensitivity groups dlp.settings: description: Data Loss Prevention - manage account-level settings dlp.validators: description: Data Loss Prevention - list and retrieve content validators dlp.validators.proximity-words: description: Data Loss Prevention - manage proximity-word validators risk-scoring: description: User Risk Scoring - retrieve and reset user risk scores risk-scoring.behaviours: description: User Risk Scoring - manage behaviors used to calculate user risk scores risk-scoring.integrations: description: User Risk Scoring - manage integrations that provide risk score signals risk-scoring.integrations.references: description: User Risk Scoring - retrieve integrations by external reference risk-scoring.summary: description: User Risk Scoring - retrieve account risk score summaries zones: description: Zones are domains on Cloudflare — list, create, and configure domain settings groups: aegis: description: Aegis operations fonts: description: Fonts operations origin-h2-max-streams: description: Origin H2 Max Streams operations origin-max-http-version: description: Origin Max Http Version operations origin-tls-compliance-modes: description: Manage zone Origin TLS Compliance Modes setting rum: description: Rum operations speed-brain: description: Speed Brain operations