Use GET /v2/domains/{domainId}/contacts to read the contact assignments stored for a domain in your reseller account. This helps you display the registered contact roles, prepare a reviewed update and investigate differences between your billing system and the domain record.
IN THIS ARTICLE
01 Find the correct domain
- Authenticate with a current credential that has
domains:read. - Search
/v2/domains, compare the full domain name and retain its returned identifier. - Request the contacts route without a mutation body.
- Follow the collection metadata if the result is paginated.
GET /v2/domains/DOMAIN_ID/contacts
02 Interpret assignments and snapshots
Contact assignments identify a role and its associated stored contact information. Read the returned role and snapshot structure rather than assuming the old integration's flat contact object. The current connector maps supported roles such as registrant, admin, technical and billing according to the registry workflow.
A reusable contact profile and the snapshot assigned to a domain serve different purposes. Editing the saved profile does not necessarily update every domain that previously used its details.
03 Use contact data carefully
Display only information the authorised user needs. Contact details can include names, organisation, address, telephone and email. Keep the response out of public diagnostics and do not assume that a field absent from public RDAP is absent from the authenticated domain record.
If you compare the result with WHMCS, map field names explicitly. The current API uses names such as first_name, last_name, phone_e164, postal_code and country_code in supported contact payloads. Do not reuse malformed old examples with different field naming.
04 Example: retrieve contacts without exposing them in a public log
Use the server-side PHP request helper in the API getting-started article with an authorised domains:read credential. Resolve DOMAIN_ID from your owned domain inventory first. Run this in your private integration process, not in a browser script that exposes the API key.
$domainId = 'DOMAIN_ID';
$result = nabtechRequest('GET', '/v2/domains/' . rawurlencode($domainId) . '/contacts');
if ($result['http_status'] !== 200 ||
!is_array($result['response']['data'] ?? null)) {
throw new RuntimeException('Could not read domain contacts.');
}
$assignments = $result['response']['data'];
// Map only the required contact roles into the authorised account view.
Read the result: The successful data collection contains the stored assignments for that owned domain. Keep the contact snapshots associated with their roles rather than assuming the first returned row is the registrant. Do not print the full response into a publicly accessible debug page.
This read does not synchronize registrar data or update a contact profile. If the stored details are unexpected, inspect the relevant operation and approved synchronization workflow before submitting an identity change. Retain a redacted request reference for support.
What should I do when the returned domain contacts look wrong?
Check the last synchronization and relevant operation history. If a contact update is pending, wait for its outcome instead of submitting another copy. Confirm the intended registrant with the owner before changing identity data.
For an actual update, use the separate PUT contacts workflow and satisfy registry verification requirements. Reading a stored assignment is not proof that a newly requested registrar update completed or that a contact change is exempt from transfer restrictions.
Related articles
- Update domain contact roles with the current v2 API
- Get started with the current Nabtech Domain Nexus v2 API
- Synchronize a domain's current provider state through the v2 API
- List domains and other API resources without missing later pages
- Manage reseller team records and replace their role assignments