Skip to content
Start here

Get Update Status

GET/accounts/{account_id}/registrar-sandbox/registrations/{domain_name}/update-status

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.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Path ParametersExpand Collapse
account_id: string

Identifier.

maxLength32
domain_name: string

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.

ReturnsExpand Collapse
errors: array of object { code, message, source }
code: number
minimum1000
message: string
source: optional object { pointer }

Location of the invalid value that caused the error.

pointer: string

JSON Pointer to the invalid or missing request value.

messages: array of object { code, message, source }
code: number
minimum1000
message: string
source: optional object { pointer }

Location of the invalid value that caused the error.

pointer: string

JSON Pointer to the invalid or missing request value.

result: object { completed, created_at, links, 4 more }

Status of an async registration workflow.

completed: boolean

Indicates whether the workflow reached a terminal state. A succeeded or failed state returns true; pending, in_progress, action_required, and blocked return false.

created_at: string
formatdate-time
state: "pending" or "in_progress" or "action_required" or 3 more

Describes the workflow lifecycle state.

  • pending: The workflow awaits processing.
  • in_progress: Processing started. Continue polling links.self. An internal deadline limits the duration of this state.
  • action_required: The workflow pauses for user action. See context.action for details. Stop automated polling until the user completes the required action.
  • blocked: A third party, such as the domain extension’s registry or a losing registrar, prevents progress. Continue polling because the block may resolve when the third party responds.
  • succeeded: Terminal state. The operation completed successfully. completed equals true. For registrations, context.registration contains the resulting registration resource.
  • failed: Terminal state. The operation failed. completed equals true. See error.code and error.message for the reason. Require user review before retrying.
One of the following:
"pending"
"in_progress"
"action_required"
"blocked"
"succeeded"
"failed"
updated_at: string
formatdate-time
context: optional map[unknown]

Provides workflow-specific data.

For domain-centric workflows, context.domain_name identifies the workflow subject.

error: optional object { code, message }

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.

code: string

Machine-readable error code identifying the failure reason.

message: string

Human-readable explanation of the failure. May include registry-specific details.

success: true

Whether the API call was successful.

Get Update Status

curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/registrar-sandbox/registrations/$DOMAIN_NAME/update-status \
    -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
{
  "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
}
{
  "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
}
{
  "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
}
{
  "errors": [
    {
      "code": 10000,
      "message": "No workflow found for example.com"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
Returns Examples
{
  "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
}
{
  "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
}
{
  "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
}
{
  "errors": [
    {
      "code": 10000,
      "message": "No workflow found for example.com"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}