Manage domains, DNS zones, and contacts via RealtimeRegister API. Use when: checking domain availability, registering/renewing domains, managing DNS records, creating contacts, tracking async processes. Trigger phrases: "domain availability", "register domain", "DNS records", "RealtimeRegister", "rr command", "domain expiry", "transfer domain"
CLI for RealtimeRegister domain registrar. Manage domains, DNS, contacts, and processes.
# Install
brew install dedene/tap/rr
# Authenticate (stores in keyring)
rr auth login
# Or use environment variable
export RR_API_KEY=your-api-key
# Set customer handle (required for contacts)
rr config set customer mycustomer
All commands return . Use and to paginate:
list--limit--offsetrr domain list --limit 100 # First 100
rr domain list --limit 100 --offset 100 # Next 100
Loop to get all results:
offset=0; while true; do
batch=$(rr domain list --limit 100 --offset $offset --json)
[ "$(echo "$batch" | jq length)" -eq 0 ] && break
echo "$batch" | jq -r '.[].domainName'
offset=$((offset + 100))
done
Always use --json for parsing. TSV (--plain) for simple scripting.
rr domain list # Table (human-readable)
rr domain list --json # JSON (for parsing)
rr domain list --plain # TSV (tab-separated)
| Command | Description |
|---|---|
rr domain list | List domains (paginated, default 50) |
rr domain get <domain> | Get domain details |
rr domain check <domain> | Check availability |
rr domain check-bulk <domains...> | Bulk check (max 50) |
rr domain register <domain> | Register domain |
rr domain renew <domain> | Renew domain |
rr domain transfer-in <domain> | Initiate transfer |
| Command | Description |
|---|---|
rr contact list | List contacts (paginated, default 50) |
rr contact create <handle> | Create contact |
rr contact update <handle> | Update contact |
| Command | Description |
|---|---|
rr zone list | List zones (paginated, default 50) |
rr zone list --name <domain> | Filter zones by exact zone name |
rr zone list --managed|--unmanaged | Filter by managed status |
rr zone list --service BASIC|PREMIUM | Filter by DNS service tier |
rr zone get <id> | Get zone with records |
rr zone get --domain <domain> | Get zone directly from a domain |
rr zone record add <zoneID> | Add DNS record |
rr zone sync <id> --file records.yaml | Sync from YAML |
| Command | Description |
|---|---|
rr status | Account overview |
rr process list | List processes (paginated, default 50) |
rr tld list | List available TLDs |
rr domain check example.com --json
rr domain register example.com --registrant mycontact --period 1 -y
rr domain check-bulk domain1.com domain2.net domain3.io --json
rr contact create myhandle \
--name "John Doe" --email [email protected] \
--phone "+1.5551234567" --country US
ZONE_ID=$(rr zone get --domain example.com --json | jq -r '.id')
rr zone record add $ZONE_ID --type A --name www --content 1.2.3.4 --ttl 3600
When you already know the domain, prefer rr zone get --domain <domain>.
Use rr zone list --name, --managed, --unmanaged, or --service when you need discovery or narrowing.
rr domain list --expiring-within 30 --json | jq '.[].domainName'
# Get all domain names
rr domain list --json | jq -r '.[].domainName'
# Check if available
rr domain check example.com --json | jq -r '.available'
# Filter by status
rr domain list --json | jq '.[] | select(.status=="active")'
| Exit Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 3 | Authentication error |
| 4 | API error |
Common fixes:
not authenticated → rr auth logincustomer not configured → rr config set customer <handle>rate limited → Wait and retry, or use bulk endpoints| Variable | Description |
|---|---|
RR_API_KEY | API key (overrides keyring) |
RR_CUSTOMER | Customer handle |
RR_JSON | Enable JSON output |
# Skip confirmation prompts
rr domain delete example.com -y
brew install dedene/tap/rr