---
title: Get Registration Status
---

[Skip to content](#%5Ftop) 

[API Reference](https://developers.cloudflare.com/api/go)

[Registrar Sandbox](https://developers.cloudflare.com/api/go/resources/registrar%5Fsandbox)

[Registration Status](https://developers.cloudflare.com/api/go/resources/registrar%5Fsandbox/subresources/registration%5Fstatus)

Copy Markdown

Open in **Claude**

Open in **ChatGPT**

Open in **Cursor**

---

**Copy Markdown**

**View as Markdown**

# Get Registration Status

client.RegistrarSandbox.RegistrationStatus.Get(ctx, domainName, query) (\*[RegistrationStatusGetResponse](https://developers.cloudflare.com/api/go/resources/registrar%5Fsandbox#%28resource%29%20registrar%5Fsandbox.registration%5Fstatus%20%3E%20%28model%29%20RegistrationStatusGetResponse%20%3E%20%28schema%29), error)

GET/accounts/{account\_id}/registrar-sandbox/registrations/{domain\_name}/registration-status

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.
}
```

##### Security

API Token

The preferred authorization scheme for interacting with the Cloudflare API. [Create a token](https://developers.cloudflare.com/fundamentals/api/get-started/create-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 RegistrationStatusGetParams

AccountID param.Field\[string\]

Identifier.

maxLength32

##### ReturnsExpand Collapse 

type RegistrationStatusGetResponse 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

Links RegistrationStatusGetResponseLinks

Self string

URL to this status resource.

Resource stringOptional

URL to the domain resource.

State RegistrationStatusGetResponseState

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 RegistrationStatusGetResponseStatePending RegistrationStatusGetResponseState \= "pending"

const RegistrationStatusGetResponseStateInProgress RegistrationStatusGetResponseState \= "in\_progress"

const RegistrationStatusGetResponseStateActionRequired RegistrationStatusGetResponseState \= "action\_required"

const RegistrationStatusGetResponseStateBlocked RegistrationStatusGetResponseState \= "blocked"

const RegistrationStatusGetResponseStateSucceeded RegistrationStatusGetResponseState \= "succeeded"

const RegistrationStatusGetResponseStateFailed RegistrationStatusGetResponseState \= "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 RegistrationStatusGetResponseErrorOptional

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 Registration Status

Go

HTTPHTTP

TypeScriptTypeScript

PythonPython

GoGo

TerraformTerraform

```
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"),
  )
  registrationStatus, err := client.RegistrarSandbox.RegistrationStatus.Get(
    context.TODO(),
    "example.com",
    registrar_sandbox.RegistrationStatusGetParams{
      AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", registrationStatus.Completed)
}

```

200 example

200 example

200 example

200 example

200 example

4XX example

```
{
  "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
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "completed": false,
    "context": {
      "blocked_by": "registry",
      "detail": "Awaiting registry confirmation. This may take up to 24 hours.",
      "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
}
```

```
{
  "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
}
```

```
{
  "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
}
```

```
{
  "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
}
```

```
{
  "errors": [
    {
      "code": 10000,
      "message": "No workflow found for example.com"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
```

##### Returns Examples

200 example

200 example

200 example

200 example

200 example

4XX example

```
{
  "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
}
```

```
{
  "errors": [],
  "messages": [],
  "result": {
    "completed": false,
    "context": {
      "blocked_by": "registry",
      "detail": "Awaiting registry confirmation. This may take up to 24 hours.",
      "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
}
```

```
{
  "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
}
```

```
{
  "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
}
```

```
{
  "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
}
```

```
{
  "errors": [
    {
      "code": 10000,
      "message": "No workflow found for example.com"
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
```