Get Transfer Status
Returns the current status of a domain transfer workflow.
Use this endpoint to poll transfer progress after initiating a transfer
with POST /accounts/{account_id}/registrar/registrations/{domain_name}/transfer-in.
The URL is provided in the links.self field of the transfer response.
Transfer timelines
Transfers typically take 1–10 days due to ICANN-mandated approval windows.
Workflow states
Terminal states: succeeded and failed are terminal and always
have completed: true.
Non-terminal states:
in_progress: Transfer has been submitted to the registry and is being processed. Continue polling.blocked: The workflow is waiting on the losing registrar or registry to release the domain. This is the most common state for transfers and is entirely normal — it means the ICANN transfer approval window is in effect. The losing registrar has up to 5 days to approve or reject. Continue polling with longer intervals (e.g., every 30–60 minutes).action_required: The user needs to take action (e.g., the FOA email needs to be accepted). Seecontextfor details on what is needed.pending: Transfer workflow created but not yet started processing.
Polling guidance
Adjust your polling interval based on the current workflow state:
pendingorin_progress: Poll every 30 seconds.blocked: The transfer is waiting on a third party (e.g., losing registrar approval). Poll every 30–60 minutes.action_required: Stop polling. The workflow will not advance until the user takes action. Checkcontextfor details on what is needed.succeededorfailed: Terminal — stop polling.
Security
API Token
The preferred authorization scheme for interacting with the Cloudflare API. Create a token.
API Email + API Key
The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.
The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.
Parameters
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.
Get Transfer Status
import os
from cloudflare import Cloudflare
client = Cloudflare(
api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted
)
workflow_status = client.registrar.transfer_in_status.get(
domain_name="example.com",
account_id="023e105f4ecef8ad9ca31a8372d0c353",
)
print(workflow_status.completed){
"errors": [],
"messages": [],
"result": {
"completed": false,
"context": {
"domain_name": "example.com",
"foa_required": true,
"transfer_status": "awaiting_foa"
},
"created_at": "2025-10-27T10:00:00Z",
"links": {
"resource": "/accounts/abc/registrar/registrations/example.com",
"self": "/accounts/abc/registrar/registrations/example.com/transfer-in-status"
},
"state": "action_required",
"updated_at": "2025-10-27T12:00:00Z"
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"completed": false,
"context": {
"domain_name": "example.com",
"transfer_status": "awaiting_approval"
},
"created_at": "2025-10-27T10:00:00Z",
"links": {
"resource": "/accounts/abc/registrar/registrations/example.com",
"self": "/accounts/abc/registrar/registrations/example.com/transfer-in-status"
},
"state": "blocked",
"updated_at": "2025-10-28T14:30:00Z"
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"completed": true,
"context": {
"domain_name": "example.com"
},
"created_at": "2025-10-27T10:00:00Z",
"error": {
"code": "transfer_rejected",
"message": "Transfer rejected"
},
"links": {
"resource": "/accounts/abc/registrar/registrations/example.com",
"self": "/accounts/abc/registrar/registrations/example.com/transfer-in-status"
},
"state": "failed",
"updated_at": "2025-10-30T12:00:00Z"
},
"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/transfer-in-status"
},
"state": "in_progress",
"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",
"links": {
"resource": "/accounts/abc/registrar/registrations/example.com",
"self": "/accounts/abc/registrar/registrations/example.com/transfer-in-status"
},
"state": "succeeded",
"updated_at": "2025-10-30T08:15:00Z"
},
"success": true
}{
"errors": [
{
"code": 10000,
"message": "No workflow found for example.com"
}
],
"messages": [],
"result": null,
"success": false
}Returns Examples
{
"errors": [],
"messages": [],
"result": {
"completed": false,
"context": {
"domain_name": "example.com",
"foa_required": true,
"transfer_status": "awaiting_foa"
},
"created_at": "2025-10-27T10:00:00Z",
"links": {
"resource": "/accounts/abc/registrar/registrations/example.com",
"self": "/accounts/abc/registrar/registrations/example.com/transfer-in-status"
},
"state": "action_required",
"updated_at": "2025-10-27T12:00:00Z"
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"completed": false,
"context": {
"domain_name": "example.com",
"transfer_status": "awaiting_approval"
},
"created_at": "2025-10-27T10:00:00Z",
"links": {
"resource": "/accounts/abc/registrar/registrations/example.com",
"self": "/accounts/abc/registrar/registrations/example.com/transfer-in-status"
},
"state": "blocked",
"updated_at": "2025-10-28T14:30:00Z"
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"completed": true,
"context": {
"domain_name": "example.com"
},
"created_at": "2025-10-27T10:00:00Z",
"error": {
"code": "transfer_rejected",
"message": "Transfer rejected"
},
"links": {
"resource": "/accounts/abc/registrar/registrations/example.com",
"self": "/accounts/abc/registrar/registrations/example.com/transfer-in-status"
},
"state": "failed",
"updated_at": "2025-10-30T12:00:00Z"
},
"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/transfer-in-status"
},
"state": "in_progress",
"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",
"links": {
"resource": "/accounts/abc/registrar/registrations/example.com",
"self": "/accounts/abc/registrar/registrations/example.com/transfer-in-status"
},
"state": "succeeded",
"updated_at": "2025-10-30T08:15:00Z"
},
"success": true
}{
"errors": [
{
"code": 10000,
"message": "No workflow found for example.com"
}
],
"messages": [],
"result": null,
"success": false
}