Transfer a domain in
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.
apiKeyAuthorizationBearer <token>An API key from the Developers page. rhq_test_ keys reach the sandbox, rhq_live_ keys the live side.
Idempotency-Key?stringA 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.
8 <= length <= 200application/json- body
domain*string3 <= length <= 253authCode*stringThe code the losing registrar issued, often called the auth or EPP code
1 <= length <= 64customerId*stringRequired: every purchase belongs to one of your customers
Accepted: the registrar has not finished this change yet
application/json- response
Accepted: the registrar has not finished this change yet
id*stringdomain*stringstatus*string"pending""completed""rejected""cancelled""failed"customerId*|The customer this was bought for, if any
unitPrice*integerWhat the transfer itself costs, in minor units
0 <= valueaddsYear*booleanWhether completing this transfer adds a year to the registration
paidTotal*integer0 until the transfer completes, then unitPrice
0 <= valuesubState*|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*stringdate-timeresolvedAt*|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"}List a domain's history GET
Everything that was done to this domain, newest first: what it was, when, and who asked for it. The same events a webhook carries, read back per domain - one row per thing done, so putting a domain on hold reads as the hold itself rather than also as a settings change.
List domain transfers GET
Transfers in you have started, newest first.