DomainsTransfers

Transfer a domain in

POST
/v1/domains/transfers

Starts a transfer in from another registrar: holds the transfer price for this ending and answers 202 with a transfer whose status you poll. A wrong auth code is never known this early - only the losing registrar or the registrant finds that out, which can take days - so it never fails this call; it only ever shows up later as this transfer ending rejected. Send an Idempotency-Key header so a retry can never start a second one.

Authorization

apiKey
headerAuthorizationBearer <token>

An API key from the Developers page. rhq_test_ keys reach the sandbox, rhq_live_ keys the live side.

Header Parameters

Idempotency-Key?string

A value unique to this request, such as a UUID. A retry with the same key within 24 hours returns the first outcome instead of running again.

Length8 <= length <= 200

Request Body

application/json
  1. body
domain*string
Length3 <= length <= 253
authCode*string

The code the losing registrar issued, often called the auth or EPP code

Length1 <= length <= 64
customerId*string

Required: every purchase belongs to one of your customers

Response Body

Accepted: the registrar has not finished this change yet

application/json
  1. response

Accepted: the registrar has not finished this change yet

id*string
domain*string
status*string
Value in"pending""completed""rejected""cancelled""failed"
customerId*|

The customer this was bought for, if any

unitPrice*integer

What the transfer itself costs, in minor units

Range0 <= value
addsYear*boolean

Whether completing this transfer adds a year to the registration

paidTotal*integer

0 until the transfer completes, then unitPrice

Range0 <= value
subState*|

A plain-English sentence about the registrar’s own finer sub-state while pending - waiting for the registry, the losing registrar or the registrant’s own approval. Null once it is no longer pending

domainId*|

The domain this created once it completed. Null until then

createdAt*string
Formatdate-time
resolvedAt*|

When it finished, whichever way. Null while pending

curl -X POST "https://example.com/v1/domains/transfers" \  -H "Idempotency-Key: 2f1c9a52-7d0e-4a8e-9a53-0c1f6f3f2b11" \  -H "Content-Type: application/json" \  -d '{    "domain": "northwind-telecom.com",    "authCode": "string",    "customerId": "cus_01K6XJ4Q8ZT3M9R5V2B7WDHNCA"  }'
{  "id": "dtx_01K6XJ4Q8ZT3M9R5V2B7WDHNCA",  "domain": "northwind-telecom.com",  "status": "pending",  "customerId": "cus_01K6XJ4Q8ZT3M9R5V2B7WDHNCA",  "unitPrice": 1440,  "addsYear": true,  "paidTotal": 1440,  "subState": "string",  "domainId": "dom_01K6XJ4Q8ZT3M9R5V2B7WDHNCA",  "createdAt": "2026-10-07T11:04:31.000Z",  "resolvedAt": "2026-10-07T11:04:31.000Z"}