Skip to content
Start here

Get Update Status

client.RegistrarSandbox.UpdateStatus.Get(ctx, domainName, query) (*UpdateStatusGetResponse, error)
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
ParametersExpand Collapse
domainName 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.

query UpdateStatusGetParams
AccountID param.Field[string]

Identifier.

maxLength32
ReturnsExpand Collapse
type UpdateStatusGetResponse struct{…}

Status of an async registration workflow.

Completed bool

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

CreatedAt Time
formatdate-time
State UpdateStatusGetResponseState

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:
const UpdateStatusGetResponseStatePending UpdateStatusGetResponseState = "pending"
const UpdateStatusGetResponseStateInProgress UpdateStatusGetResponseState = "in_progress"
const UpdateStatusGetResponseStateActionRequired UpdateStatusGetResponseState = "action_required"
const UpdateStatusGetResponseStateBlocked UpdateStatusGetResponseState = "blocked"
const UpdateStatusGetResponseStateSucceeded UpdateStatusGetResponseState = "succeeded"
const UpdateStatusGetResponseStateFailed UpdateStatusGetResponseState = "failed"
UpdatedAt Time
formatdate-time
Context map[string, unknown]Optional

Provides workflow-specific data.

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

Error UpdateStatusGetResponseErrorOptional

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.

Get Update Status

package main

import (
  "context"
  "fmt"

  "github.com/cloudflare/cloudflare-go"
  "github.com/cloudflare/cloudflare-go/option"
  "github.com/cloudflare/cloudflare-go/registrar_sandbox"
)

func main() {
  client := cloudflare.NewClient(
    option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
  )
  updateStatus, err := client.RegistrarSandbox.UpdateStatus.Get(
    context.TODO(),
    "example.com",
    registrar_sandbox.UpdateStatusGetParams{
      AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", updateStatus.Completed)
}
{
  "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
}