curl --request POST \
--url https://api.dev.name.com/core/v1/transfers \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"authCode": "ABC123",
"domainName": "example.com",
"privacyEnabled": true,
"purchasePrice": 12.99
}
'import requests
url = "https://api.dev.name.com/core/v1/transfers"
payload = {
"authCode": "ABC123",
"domainName": "example.com",
"privacyEnabled": True,
"purchasePrice": 12.99
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
authCode: 'ABC123',
domainName: 'example.com',
privacyEnabled: true,
purchasePrice: 12.99
})
};
fetch('https://api.dev.name.com/core/v1/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dev.name.com/core/v1/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'authCode' => 'ABC123',
'domainName' => 'example.com',
'privacyEnabled' => true,
'purchasePrice' => 12.99
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dev.name.com/core/v1/transfers"
payload := strings.NewReader("{\n \"authCode\": \"ABC123\",\n \"domainName\": \"example.com\",\n \"privacyEnabled\": true,\n \"purchasePrice\": 12.99\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dev.name.com/core/v1/transfers")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"authCode\": \"ABC123\",\n \"domainName\": \"example.com\",\n \"privacyEnabled\": true,\n \"purchasePrice\": 12.99\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.name.com/core/v1/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"authCode\": \"ABC123\",\n \"domainName\": \"example.com\",\n \"privacyEnabled\": true,\n \"purchasePrice\": 12.99\n}"
response = http.request(request)
puts response.read_body{
"order": 12345,
"totalPaid": 12.99,
"transfer": {
"domainName": "example.com",
"status": "pending_transfer",
"email": "admin@example.com"
},
"warnings": {
"message": "Domain has registry statuses that may prevent a successful transfer. Please ensure the domain is unlocked and eligible at the losing registrar.",
"statuses": [
"clientTransferProhibited",
"clientUpdateProhibited"
]
}
}Create External Transfer In
Initiates a domain transfer into your name.com account from another registrar. You must provide the domain name and its valid transfer authorization code (EPP code). The domain must not be locked or under any transfer restrictions (e.g. clientTransferProhibited). If successful, the transfer is submitted and tracked through the ICANN transfer process. Once a transfer has been created, you can track its progress via the GetTransfer endpoint.
Transfer pricing: Omit purchasePrice for standard (non-premium) transfers. For premium transfers, pass transferPrice from Get Pricing For Domain as purchasePrice. If sent, it must match Get Pricing transferPrice exactly or the request will fail. Premium transfers without purchasePrice will fail. See the Domain pricing guide for how Get Pricing transferPrice relates to the years query parameter.
curl --request POST \
--url https://api.dev.name.com/core/v1/transfers \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"authCode": "ABC123",
"domainName": "example.com",
"privacyEnabled": true,
"purchasePrice": 12.99
}
'import requests
url = "https://api.dev.name.com/core/v1/transfers"
payload = {
"authCode": "ABC123",
"domainName": "example.com",
"privacyEnabled": True,
"purchasePrice": 12.99
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
authCode: 'ABC123',
domainName: 'example.com',
privacyEnabled: true,
purchasePrice: 12.99
})
};
fetch('https://api.dev.name.com/core/v1/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dev.name.com/core/v1/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'authCode' => 'ABC123',
'domainName' => 'example.com',
'privacyEnabled' => true,
'purchasePrice' => 12.99
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dev.name.com/core/v1/transfers"
payload := strings.NewReader("{\n \"authCode\": \"ABC123\",\n \"domainName\": \"example.com\",\n \"privacyEnabled\": true,\n \"purchasePrice\": 12.99\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dev.name.com/core/v1/transfers")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"authCode\": \"ABC123\",\n \"domainName\": \"example.com\",\n \"privacyEnabled\": true,\n \"purchasePrice\": 12.99\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.name.com/core/v1/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"authCode\": \"ABC123\",\n \"domainName\": \"example.com\",\n \"privacyEnabled\": true,\n \"purchasePrice\": 12.99\n}"
response = http.request(request)
puts response.read_body{
"order": 12345,
"totalPaid": 12.99,
"transfer": {
"domainName": "example.com",
"status": "pending_transfer",
"email": "admin@example.com"
},
"warnings": {
"message": "Domain has registry statuses that may prevent a successful transfer. Please ensure the domain is unlocked and eligible at the losing registrar.",
"statuses": [
"clientTransferProhibited",
"clientUpdateProhibited"
]
}
}Authorizations
Authenticate via HTTP Basic with your account username and API token. Examples use an explicit 'Authorization: Basic <base64(username:token)>' header; 'curl -u username:token' is equivalent. For sandbox, append "-test" to your username and use your sandbox token on api.dev.name.com.
Body
CreateTransferRequest passes the required transfer info to the CreateTransfer function.
CreateTransferRequest passes the required transfer info to the CreateTransfer function.
See the Domain pricing guide for how purchasePrice relates to Get Pricing transferPrice.
AuthCode is the authorization code for the transfer. Not all TLDs require authorization codes, but most do.
1"ABC123"
DomainName is the domain you want to transfer to name.com.
1"example.com"
Whether to include Whois Privacy with the transfer. Whois Privacy is free. If omitted, the account default from account settings is used. Privacy is only added when the TLD supports it.
true
PurchasePrice is the USD inbound transfer fee, before VAT. VAT is applied when applicable and must not be included here. If sent, must match Get Pricing transferPrice exactly or the request will fail.. Omit for standard (non-premium) transfers. Required for premium transfers — use transferPrice from Get Pricing.
12.99
Response
A successful response.
CreateTransferResponse returns the newly created transfer resource as well as the order information.
Order is an identifier for this purchase.
12345
TotalPaid is the total amount paid, including VAT when applicable. Whois Privacy is free and is not included in this amount.
12.99
Transfer contains all relevant data for a domain transfer to name.com.
Show child attributes
Show child attributes
Optional transfer warnings surfaced by the API when non-blocking registry statuses are detected.
Show child attributes
Show child attributes
Was this page helpful?