Bulk transfer domains in
curl --request POST \
--url https://www.atom.com/api/registrar/v1/domains/transfer-bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"domains": [
{
"domain_name": "example.com",
"authcode": "Ab1!Cd2@Ef3#"
}
]
}
'import requests
url = "https://www.atom.com/api/registrar/v1/domains/transfer-bulk"
payload = { "domains": [
{
"domain_name": "example.com",
"authcode": "Ab1!Cd2@Ef3#"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({domains: [{domain_name: 'example.com', authcode: 'Ab1!Cd2@Ef3#'}]})
};
fetch('https://www.atom.com/api/registrar/v1/domains/transfer-bulk', 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://www.atom.com/api/registrar/v1/domains/transfer-bulk",
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([
'domains' => [
[
'domain_name' => 'example.com',
'authcode' => 'Ab1!Cd2@Ef3#'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://www.atom.com/api/registrar/v1/domains/transfer-bulk"
payload := strings.NewReader("{\n \"domains\": [\n {\n \"domain_name\": \"example.com\",\n \"authcode\": \"Ab1!Cd2@Ef3#\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://www.atom.com/api/registrar/v1/domains/transfer-bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"domains\": [\n {\n \"domain_name\": \"example.com\",\n \"authcode\": \"Ab1!Cd2@Ef3#\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.atom.com/api/registrar/v1/domains/transfer-bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"domains\": [\n {\n \"domain_name\": \"example.com\",\n \"authcode\": \"Ab1!Cd2@Ef3#\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Bulk transfer complete: 2 initiated, 0 failed",
"data": {
"cart_id": 12345,
"payment_method": "account_balance",
"total_requested": 2,
"total_valid": 2,
"succeeded": 2,
"failed": 0,
"total_charged": 20.34,
"total_refunded": 0,
"results": [
{
"domain": "example.com",
"status": "Transfer Initiated",
"error": "Domain is locked for transfer",
"price_breakdown": {
"unit_price": 9.99,
"icann_fee": 0.18,
"is_premium": false
}
}
]
}
}{
"success": false,
"error": "Bad Request",
"message": "Invalid input provided"
}{
"success": false,
"error": "Unauthorized",
"message": "Invalid registrar API token or access has been revoked. Please request registrar API access from your dashboard."
}{
"success": false,
"error": "Bad Request",
"message": "Invalid input provided"
}{
"success": false,
"error": "Bad Request",
"message": "Invalid input provided"
}{
"success": false,
"error": "Bad Request",
"message": "Invalid input provided"
}Domain Transfers
Bulk transfer domains in
Initiate transfer-in for up to 10 domains in a single request. All domains are validated and priced first; a single payment is charged for the aggregate total. Transfers are then initiated one by one. Domains that fail to transfer are individually refunded to your account balance (if paid via balance) or flagged for manual review (if paid via card).
POST
/
registrar
/
v1
/
domains
/
transfer-bulk
Bulk transfer domains in
curl --request POST \
--url https://www.atom.com/api/registrar/v1/domains/transfer-bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"domains": [
{
"domain_name": "example.com",
"authcode": "Ab1!Cd2@Ef3#"
}
]
}
'import requests
url = "https://www.atom.com/api/registrar/v1/domains/transfer-bulk"
payload = { "domains": [
{
"domain_name": "example.com",
"authcode": "Ab1!Cd2@Ef3#"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({domains: [{domain_name: 'example.com', authcode: 'Ab1!Cd2@Ef3#'}]})
};
fetch('https://www.atom.com/api/registrar/v1/domains/transfer-bulk', 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://www.atom.com/api/registrar/v1/domains/transfer-bulk",
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([
'domains' => [
[
'domain_name' => 'example.com',
'authcode' => 'Ab1!Cd2@Ef3#'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://www.atom.com/api/registrar/v1/domains/transfer-bulk"
payload := strings.NewReader("{\n \"domains\": [\n {\n \"domain_name\": \"example.com\",\n \"authcode\": \"Ab1!Cd2@Ef3#\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://www.atom.com/api/registrar/v1/domains/transfer-bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"domains\": [\n {\n \"domain_name\": \"example.com\",\n \"authcode\": \"Ab1!Cd2@Ef3#\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.atom.com/api/registrar/v1/domains/transfer-bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"domains\": [\n {\n \"domain_name\": \"example.com\",\n \"authcode\": \"Ab1!Cd2@Ef3#\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Bulk transfer complete: 2 initiated, 0 failed",
"data": {
"cart_id": 12345,
"payment_method": "account_balance",
"total_requested": 2,
"total_valid": 2,
"succeeded": 2,
"failed": 0,
"total_charged": 20.34,
"total_refunded": 0,
"results": [
{
"domain": "example.com",
"status": "Transfer Initiated",
"error": "Domain is locked for transfer",
"price_breakdown": {
"unit_price": 9.99,
"icann_fee": 0.18,
"is_premium": false
}
}
]
}
}{
"success": false,
"error": "Bad Request",
"message": "Invalid input provided"
}{
"success": false,
"error": "Unauthorized",
"message": "Invalid registrar API token or access has been revoked. Please request registrar API access from your dashboard."
}{
"success": false,
"error": "Bad Request",
"message": "Invalid input provided"
}{
"success": false,
"error": "Bad Request",
"message": "Invalid input provided"
}{
"success": false,
"error": "Bad Request",
"message": "Invalid input provided"
}Authorizations
Registrar API Bearer token. Obtain from dashboard at /dashboard/seller/api-access after requesting Registrar API access.
Body
application/json
List of domains to transfer (max 10 per request)
Maximum array length:
10Show child attributes
Show child attributes
⌘I