{"command":{"effect":"write","timeoutSeconds":30,"inputSchema":{"type":"object","description":"Starts a domain registration workflow.\n\n### Prerequisites\n- The account must not already be at the maximum supported domain limit.\n    A single account may own up to 500 domains in total across registrations\n    created through either the dashboard or this API.\n- The domain must be on a supported extension for programmatic registration.\n- Use `POST /domain-check` immediately before calling this endpoint to confirm\n    real-time availability and pricing.\n\n### Defaults\n- `years`: defaults to the extension's minimum registration period (1 year for\n    most extensions, but varies — for example, `.ai` (if supported) requires a minimum of 2 years).\n- `auto_renew`: defaults to `false`. Setting it to `true` is an explicit\n    opt-in authorizing Cloudflare to charge the account's default payment\n    method up to 30 days before domain expiry to renew the registration.\n    Renewal pricing may change over time based on registry pricing.\n- `privacy_mode`: defaults to `redaction`.\n\n### Premium domains\nPremium domain registration is not currently supported by this API.\nIf `POST /domain-check` returns `tier: premium`, do not call this\nendpoint for that domain.\n\n### Response behavior\nBy default, the server holds the connection for a bounded, server-defined\namount of time while the registration completes. Most registrations finish\nwithin this window and return `201 Created` with a completed workflow status.\n\nIf the registration is still processing after this synchronous wait window,\nthe server returns `202 Accepted`. Poll the URL in `links.self` to track progress.\n\nTo skip the wait and receive an immediate `202`, send `Prefer: respond-async`.","properties":{"path":{"type":"object","properties":{"account_id":{"$ref":"#/definitions/registrar-api-sandbox_identifier","description":"Cloudflare account ID. Required for all Registrar API operations."}},"required":["account_id"],"additionalProperties":false},"headers":{"type":"object","properties":{"Prefer":{"type":"string","description":"Set to `respond-async` to receive an immediate `202 Accepted` without\nwaiting for the operation to complete (RFC 7240).\n\nThe header may be combined with other preferences using standard\ncomma-separated syntax.\n"}},"required":[],"additionalProperties":false},"body":{"$ref":"#/definitions/registrar-api-sandbox_registration_create_request","examples":[{"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}]}},"required":["path","body"],"additionalProperties":false,"definitions":{"registrar-api-sandbox_identifier":{"description":"Identifier.","type":"string","maxLength":32,"examples":["023e105f4ecef8ad9ca31a8372d0c353"]},"registrar-api-sandbox_registration_create_request":{"type":"object","properties":{"acknowledgements":{"description":"Provides user acknowledgements for a specific extension or premium\nregistration flow. The extension registration schema from the\nextension discovery endpoint identifies the required keys.\n","type":"object","additionalProperties":true,"examples":[{"fees":{"currency":"USD","registration_fee":10,"renewal_fee":10}}]},"auto_renew":{"description":"Enable or disable automatic renewal. Defaults to `false` if omitted.\nSetting this field to `true` is an explicit opt-in authorizing\nCloudflare to charge the account's default payment method up to 30\ndays before domain expiry to renew the domain automatically.\nRenewal pricing may change over time based on registry pricing.\n","type":"boolean","default":false,"examples":[false]},"contact_extensions":{"description":"Provides registry-specific contact extension values for the registrant.\n`GET /accounts/{account_id}/registrar/extensions/{extension}` identifies\nthe required keys and allowed values for each extension in the\n`registration_schema.properties.contact_extensions` object.\n\nExamples include `.us` nexus fields, `.uk` registrant type fields,\nand `.ca` legal type fields. Omit this object when the extension's\nregistration schema excludes `contact_extensions`.\n","type":"object","additionalProperties":true,"examples":[{"application_purpose":"P3","nexus_category":"C11"}]},"contacts":{"type":"object","allOf":[{"$ref":"#/definitions/registrar-api-sandbox_registration_contacts"}]},"domain_name":{"$ref":"#/definitions/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","default":"redaction","enum":["off","redaction"],"examples":["redaction"]},"years":{"description":"Sets the registration term from 1 to 10 years. When omitted, this\nfield defaults to the registry's minimum registration period for the\nextension. Most extensions require 1 year, while some require longer\nminimum terms (e.g., `.ai` requires 2 years).\n\nEach registry may also enforce its own maximum registration term. A\nrequest above that maximum fails. When uncertain, omit this field to\nuse the default.\n","type":"integer","maximum":10,"minimum":1,"examples":[1]}},"required":["domain_name"]},"registrar-api-sandbox_registration_contacts":{"description":"Provides contact data for the registration request.\n\nThe per-extension schema from\n`GET /accounts/{account_id}/registrar/extensions/{extension}` defines the\naccepted contact roles. Every currently supported extension requires only\n`contacts.registrant` from API callers. Callers may provide additional roles\nsuch as `technical`, `administrator`, and `billing` when the extension\nschema includes them. When a registry requires an omitted role, Cloudflare\nmay derive that contact from `contacts.registrant`.\n\nWhen the request omits either the entire `contacts` object or\n`contacts.registrant`, the system uses the account's default address book\nentry as the registrant contact. The account owner must configure this\ndefault at `https://dash.cloudflare.com/{account_id}/domains/registrations`,\nwhere they can create or update the address book entry and accept the\nrequired agreement. Dashboard settings currently provide the only way to\nmanage address book entries.\n\nWithout either a default address book entry or a registrant contact, the\nregistration request fails validation.\n","type":"object","properties":{"administrator":{"description":"Optional administrator contact. Accepted only when the extension\nschema includes this role. When the registry requires an omitted\ncontact, Cloudflare may derive it from `contacts.registrant`.\n","allOf":[{"$ref":"#/definitions/registrar-api-sandbox_registration_contact"}]},"billing":{"description":"Optional billing contact. Accepted only when the extension schema\nincludes this role. When the registry requires an omitted contact,\nCloudflare may derive it from `contacts.registrant`.\n","allOf":[{"$ref":"#/definitions/registrar-api-sandbox_registration_contact"}]},"registrant":{"description":"Optional registrant contact. If omitted, the account's default\naddress book entry is used instead.\n","allOf":[{"$ref":"#/definitions/registrar-api-sandbox_registration_contact"}]},"technical":{"description":"Optional technical contact. Accepted only when the extension schema\nincludes this role. When the registry requires an omitted contact,\nCloudflare may derive it from `contacts.registrant`.\n","allOf":[{"$ref":"#/definitions/registrar-api-sandbox_registration_contact"}]}}},"registrar-api-sandbox_domain_name":{"description":"Provides a fully qualified domain name (FQDN), including the extension\n(e.g., `example.com`, `mybrand.app`). The domain name uniquely identifies\na registration. Cloudflare permits only one registration per domain, making\nthe domain name a natural idempotency key for registration requests.\n","type":"string","examples":["example.com"]},"registrar-api-sandbox_registration_contact":{"description":"Contact data for the domain registration. This information\nis submitted to the domain registry and, depending on extension and\nprivacy settings, may appear in public WHOIS records.\n","type":"object","properties":{"email":{"description":"Email address for the registrant. Used for domain-related\ncommunications from the registry, including ownership verification\nand renewal notices.\n","type":"string","format":"email","examples":["ada@example.com"]},"fax":{"description":"Fax number in E.164 format (e.g., `+1.5555555555`). Optional.\nMost registrations do not require a fax number.\n","type":"string","examples":["+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","examples":["+1.5555555555"]},"postal_info":{"$ref":"#/definitions/registrar-api-sandbox_registration_contact_postal_info"}},"required":["phone","email","postal_info"]},"registrar-api-sandbox_registration_contact_postal_info":{"description":"Postal/mailing information for the contact. The `name` field is the\ncomplete contact name in one string. Some registries require a complete\npersonal name, including a family or last name where applicable, but this\nAPI does not accept separate first-name and last-name fields for\nregistration contacts.\n","type":"object","properties":{"address":{"$ref":"#/definitions/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","examples":["Ada Lovelace"]},"organization":{"description":"Organization or company name. Optional for individual registrants.","type":"string","examples":["Example Inc"]}},"required":["name","address"]},"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","examples":["Austin"]},"country_code":{"description":"Two-letter country code per ISO 3166-1 alpha-2 (e.g., `US`, `GB`, `CA`, `DE`).","type":"string","examples":["US"]},"postal_code":{"description":"Postal or ZIP code.","type":"string","examples":["78701"]},"state":{"description":"State, province, or region. Use the standard abbreviation where applicable (e.g., `TX` for Texas, `ON` for Ontario).","type":"string","examples":["TX"]},"street":{"description":"Street address including building/suite number.","type":"string","examples":["123 Main St"]}},"required":["street","city","state","postal_code","country_code"]}}},"name":"Create Registration","id":"cloudflare.sandbox-registrar-domain-registration-create","example":{"path":{"account_id":"023e105f4ecef8ad9ca31a8372d0c353"},"body":{"domain_name":"example.com"}},"maxRequests":1,"summary":false}}