Get a domain version

​

Returns a single lifecycle event from a domain's append-only history, addressed by its per-domain version number. The event carries two things:

  • snapshot: the complete frozen state of the domain at that version (status, expiry, auto-renew, term, roid, sponsoring registrar, external registrar, contacts, nameservers, EPP statuses, DNSSEC DS records).
  • changes: the field-level deltas versus the previous version, so a client can render Expiry: 1 Jan 2025 -> 1 Jan 2026 without diffing snapshots itself. The first (registration) version reports its seeded values as null -> value. Status, external registrar and primary team report no change against a previous version that did not record them.

Change kinds

Each entry in changes has a kind describing how to render it:

Kind Meaning from/to shape
date timestamp field (expiry) RFC 3339 string
toggle boolean (auto-renew) bool
count integer (term) number
text scalar string (status, roid, sponsoring registrar, external registrar) string
list set field (nameservers, EPP statuses, DS records) array
reference a contact role or the primary team object or id
Permissions
Key type Accepted Permission required Notes
Org API key yes domain:read Key must be scoped to the org that owns the domain.
Personal API key yes domain:read Requires X-Org-ID for the owning org; caller needs a role granting domain:read and team visibility of the domain.
Error Codes
Code HTTP Description
domain_version.get.unauthorized 401 No authenticated identity
domain_version.get.no_org 403 No active organization in scope
domain_version.get.invalid_id 400 Malformed domain id
domain_version.get.invalid_version 400 Version is not a positive integer
domain_version.get.not_found 404 Domain or version does not exist, or the domain belongs to another organization
domain_version.get.no_team_access 403 Domain belongs to the organization but is outside the caller's team scope
domain_version.get.failed 500 Version lookup failed

Path Parameters

  • Domain id (dom_...)

  • Version number (1-based)

Responses

  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for get/domains/{id}/versions/{version}
curl 'https://api.nametrust.com/domains/{id}/versions/1'
{
  "object": "domain_version",
  "occurred_at": "2026-01-01T00:00:00Z",
  "id": "domv_01h455vb4pex5vsknk084sn02q",
  "domain_id": "dom_01h455vb4pex5vsknk084sn02q",
  "version": 3,
  "change_type": "renewed",
  "change_summary": "Renewed for 1 year",
  "snapshot": {
    "object": "domain_version_snapshot",
    "primary_team_id": "team_01h455vb4pex5vsknk084sn02q",
    "secondary_team_ids": [
      "team_01h455vb4pex5vsknk084sn02q"
    ],
    "contacts": [
      {
        "object": "domain_version_contact",
        "street2": "Suite 200",
        "city": "Mountain View",
        "region": "California",
        "postal_code": "94043",
        "country_code": "US",
        "disclose": false,
        "verification_status": "verified",
        "is_active": true,
        "source": "inherited",
        "role": "registrant",
        "first_name": "Jane",
        "last_name": "Doe",
        "org_name": "Acme Inc",
        "email": "jane@acme.com",
        "phone": "+1.5555550100",
        "fax": "+1.5555550101",
        "street1": "100 Main St"
      }
    ],
    "nameservers": [
      "ns1.example.com"
    ],
    "epp_statuses": [
      "clientTransferProhibited"
    ],
    "dnssec": {
      "object": "domain_version_dnssec",
      "max_sig_life": 604800,
      "ds_records": [
        {
          "object": "domain_version_ds",
          "key_tag": 12345,
          "algorithm": 13,
          "digest_type": 2,
          "digest": "49FD46E6C4B45C55D4AC",
          "dnskey": {
            "object": "domain_version_dnskey",
            "flags": 257,
            "protocol": 3,
            "algorithm": 13,
            "public_key": "GojIhhXUN/u4v54ZQqGSnyhWJwaubCvTmeexv7bR6edbkrSqQpF64cYbcB7wNcP+e+MAnLr+Wi9xMWyQLc8NAA=="
          }
        }
      ],
      "key_records": [
        {
          "object": "domain_version_key_record",
          "flags": 257,
          "protocol": 3,
          "algorithm": 13,
          "public_key": "GojIhhXUN/u4v54ZQqGSnyhWJwaubCvTmeexv7bR6edbkrSqQpF64cYbcB7wNcP+e+MAnLr+Wi9xMWyQLc8NAA=="
        }
      ]
    },
    "subordinate_hosts": [
      {
        "object": "domain_version_host",
        "hostname": "ns1.example.com",
        "addresses": [
          "1.1.1.1"
        ]
      }
    ],
    "status": "active",
    "auto_renew": true,
    "period": {
      "object": "period",
      "count": 1,
      "unit": "y"
    },
    "expires_at": "2027-01-01T00:00:00Z",
    "roid": "D123-EXMP",
    "sponsoring_registrar": "registrar-1234",
    "external_registrar": {
      "object": "registrar",
      "name": "godaddy"
    },
    "auth_info": "****"
  },
  "changes": [
    {
      "object": "domain_version_change",
      "field": "expires_at",
      "label": "Expiry",
      "kind": "date",
      "from": {},
      "to": {}
    }
  ],
  "changed_by": {
    "object": "actor",
    "kind": "user",
    "method": "session",
    "user": {
      "object": "user",
      "last_login_at": "2025-06-15T09:30:00Z",
      "last_active_at": "2025-06-15T09:30:00Z",
      "id": "user_01h455vb4pex5vsknk084sn02q",
      "email": "jane@acme.com",
      "first_name": "Jane",
      "last_name": "Doe",
      "avatar_url": "https://example.com/avatar.jpg",
      "mfa_enabled": true,
      "created_at": "2025-06-01T12:00:00Z",
      "updated_at": "2025-06-15T09:30:00Z"
    },
    "personal_key": {
      "object": "actor_personal_key",
      "id": "pkey_01h455vb4pex5vsknk084sn02q"
    },
    "org_key": {
      "object": "actor_org_key",
      "id": "okey_01h455vb4pex5vsknk084sn02q"
    }
  }
}