Check domain transfer eligibility
Performs real-time, authoritative eligibility checks directly against needed requirements.
Use this endpoint to verify a domain is available before
attempting a transfer via POST /registrations/:domain_name/transfer-in.
Note: This endpoint uses POST to accept a list of domains in the request body. It is a read-only operation — it does not create, modify, or reserve any domains.
Behavior
- Maximum 10 domains per request
- Pricing is only returned for domains where
transferable: true - Results are not cached; each request queries the registry & other needed upstreams
Extension Support
All .uk extensions (.uk, .co.uk, etc) do not support auth codes. As such,
Cloudflare will ignore the auth_code section of this request for .uk domains.
This means that a .uk domain depends on public data to obtain domain information,
so it might be a few minutes outdated.
Workflow
- Call this endpoint with domains the user wants to transfer.
- For each domain where
transferable: true, present pricing to the user. - For each domain where
transferable: false, present reasons to the user - Proceed to
POST /registrations/:domain_name/transfer-inonly for thetransferable: truedomains.
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.
Check domain transfer eligibility
package main
import (
"context"
"fmt"
"github.com/cloudflare/cloudflare-go"
"github.com/cloudflare/cloudflare-go/option"
"github.com/cloudflare/cloudflare-go/registrar"
)
func main() {
client := cloudflare.NewClient(
option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
)
response, err := client.Registrar.TransferCheck(context.TODO(), registrar.RegistrarTransferCheckParams{
AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
Domains: cloudflare.F([]registrar.RegistrarTransferCheckParamsDomain{registrar.RegistrarTransferCheckParamsDomain{
DomainName: cloudflare.F("example.co.uk"),
}}),
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Domains)
}
{
"errors": [],
"messages": [],
"result": {
"domains": {
"example.com": {
"name": "example.com",
"pricing": {
"currency": "USD",
"renewal_cost": "10.11",
"transfer_cost": "8.57"
},
"reasons": [],
"transferable": true
},
"mybrand.net": {
"name": "mybrand.net",
"pricing": {
"currency": "USD",
"renewal_cost": "12.50",
"transfer_cost": "9.99"
},
"reasons": [],
"transferable": true
}
}
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"domains": {
"example.com": {
"name": "example.com",
"reasons": [
{
"code": "invalid_auth_code"
}
],
"transferable": false
}
}
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"domains": {
"cloudflare.com": {
"name": "cloudflare.com",
"reasons": [
{
"code": "domain_on_cloudflare"
}
],
"transferable": false
},
"locked-example.com": {
"name": "locked-example.com",
"reasons": [
{
"code": "domain_locked"
}
],
"transferable": false
},
"move-ready.net": {
"name": "move-ready.net",
"pricing": {
"currency": "USD",
"renewal_cost": "12.50",
"transfer_cost": "9.99"
},
"reasons": [],
"transferable": true
},
"pending-transfer.dev": {
"name": "pending-transfer.dev",
"reasons": [
{
"code": "registry_status"
}
],
"transferable": false
}
}
},
"success": true
}{
"errors": [
{
"code": 10000,
"message": "Internal API failure for domain flaky-example.com",
"source": {
"pointer": "/domains/1"
}
}
],
"messages": [],
"result": {
"domains": {
"stable-example.com": {
"name": "stable-example.com",
"pricing": {
"currency": "USD",
"renewal_cost": "10.11",
"transfer_cost": "8.57"
},
"reasons": [],
"transferable": true
}
}
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"domains": {
"example.horse": {
"name": "example.horse",
"reasons": [
{
"code": "extension_not_supported"
}
],
"transferable": false
},
"invalid@@domain": {
"name": "invalid@@domain",
"reasons": [
{
"code": "domain_unsupported"
}
],
"transferable": false
}
}
},
"success": true
}{
"errors": [
{
"code": 10000,
"message": "object at root is missing required properties: domains",
"source": {
"pointer": "/domains"
}
}
],
"messages": [],
"result": null,
"success": false
}{
"errors": [
{
"code": 10000,
"message": "Duplicate domain name",
"source": {
"pointer": "/domains/1"
}
}
],
"messages": [],
"result": null,
"success": false
}{
"errors": [
{
"code": 10000,
"message": "array at `/domains` is too long (maximum: 10)",
"source": {
"pointer": "/domains"
}
}
],
"messages": [],
"result": null,
"success": false
}{
"errors": [
{
"code": 10000,
"message": "Internal API failure for domain example.com",
"source": {
"pointer": "/domains/0"
}
},
{
"code": 10000,
"message": "Internal API failure for domain mybrand.net",
"source": {
"pointer": "/domains/1"
}
}
],
"messages": [],
"result": null,
"success": false
}Returns Examples
{
"errors": [],
"messages": [],
"result": {
"domains": {
"example.com": {
"name": "example.com",
"pricing": {
"currency": "USD",
"renewal_cost": "10.11",
"transfer_cost": "8.57"
},
"reasons": [],
"transferable": true
},
"mybrand.net": {
"name": "mybrand.net",
"pricing": {
"currency": "USD",
"renewal_cost": "12.50",
"transfer_cost": "9.99"
},
"reasons": [],
"transferable": true
}
}
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"domains": {
"example.com": {
"name": "example.com",
"reasons": [
{
"code": "invalid_auth_code"
}
],
"transferable": false
}
}
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"domains": {
"cloudflare.com": {
"name": "cloudflare.com",
"reasons": [
{
"code": "domain_on_cloudflare"
}
],
"transferable": false
},
"locked-example.com": {
"name": "locked-example.com",
"reasons": [
{
"code": "domain_locked"
}
],
"transferable": false
},
"move-ready.net": {
"name": "move-ready.net",
"pricing": {
"currency": "USD",
"renewal_cost": "12.50",
"transfer_cost": "9.99"
},
"reasons": [],
"transferable": true
},
"pending-transfer.dev": {
"name": "pending-transfer.dev",
"reasons": [
{
"code": "registry_status"
}
],
"transferable": false
}
}
},
"success": true
}{
"errors": [
{
"code": 10000,
"message": "Internal API failure for domain flaky-example.com",
"source": {
"pointer": "/domains/1"
}
}
],
"messages": [],
"result": {
"domains": {
"stable-example.com": {
"name": "stable-example.com",
"pricing": {
"currency": "USD",
"renewal_cost": "10.11",
"transfer_cost": "8.57"
},
"reasons": [],
"transferable": true
}
}
},
"success": true
}{
"errors": [],
"messages": [],
"result": {
"domains": {
"example.horse": {
"name": "example.horse",
"reasons": [
{
"code": "extension_not_supported"
}
],
"transferable": false
},
"invalid@@domain": {
"name": "invalid@@domain",
"reasons": [
{
"code": "domain_unsupported"
}
],
"transferable": false
}
}
},
"success": true
}{
"errors": [
{
"code": 10000,
"message": "object at root is missing required properties: domains",
"source": {
"pointer": "/domains"
}
}
],
"messages": [],
"result": null,
"success": false
}{
"errors": [
{
"code": 10000,
"message": "Duplicate domain name",
"source": {
"pointer": "/domains/1"
}
}
],
"messages": [],
"result": null,
"success": false
}{
"errors": [
{
"code": 10000,
"message": "array at `/domains` is too long (maximum: 10)",
"source": {
"pointer": "/domains"
}
}
],
"messages": [],
"result": null,
"success": false
}{
"errors": [
{
"code": 10000,
"message": "Internal API failure for domain example.com",
"source": {
"pointer": "/domains/0"
}
},
{
"code": 10000,
"message": "Internal API failure for domain mybrand.net",
"source": {
"pointer": "/domains/1"
}
}
],
"messages": [],
"result": null,
"success": false
}