Changelog

Updates for the Aftermarket Portfolio API.

Released

2026-11-05 — Estimated value, lease-to-own down payments, new listing statuses, and fixes

New: Estimated value

You can now retrieve an algorithm-generated estimated value for your domains directly through the API. Request it with includes=estimatedValue on Get domains and Get domain to get back an estimatedValue.price field. You can also sort your entire portfolio by the estimatedValue.price using order=ESTIMATED_VALUE_ASC or order=ESTIMATED_VALUE_DESC — handy for finding your highest-value domains at a glance. See the new Estimated Value guide for details.

New: Set lease-to-own down payments via the API

leaseDownPaymentAmount can now be set programmatically on Create domain, Replace domain, Update domain, and Upsert multiple domains — the up-front payment collected at the start of a lease-to-own purchase. This was previously only configurable from the Afternic seller UI, so integrators managing LTO terms at scale can now do it directly through the API. Omit the field to leave a stored value unchanged, or send 0 to clear it.

New listing statuses

listStatus now supports 7 new values — OWNERSHIP_REVIEW, OWNERSHIP_UNVERIFIED, VERIFIED_OWNER_CONFLICT, INVENTORY_COMPLIANCE_ISSUE, TLD_UNSUPPORTED, UNREGISTERED_DOMAIN, and UNKNOWN — giving much finer visibility into exactly why a domain isn't actively listed. OPTED_OUT has been removed as a valid value (passing listStatus=OPTED_OUT to Get domains now returns a 400 Bad Request validation error instead of being accepted). See the new Listing Statuses guide for what each current value means and how to resolve it.

Fixes and documentation corrections

  • GET /domains, GET /domains/{domain}, and Get multiple domains by name now consistently include tld (the domain's calculated top-level domain, e.g. co.uk) on every response.
  • GET /stats and GET /stats/{domain}'s startDate is the end of the returned date range (inclusive), not the start — days counts backward from startDate. The behavior is unchanged; the reference docs and the Common Workflows guide were corrected to describe it accurately.
  • Update domain's resource=true now always returns the updated domain data, even when the patch was a no-op (the fields sent already matched the domain's current values). Previously a no-op patch returned a bare 204 regardless of resource. Replace domain now also documents and supports resource=true the same way, for a no-op replace.
  • Compatibility change: on Upsert multiple domains, a request-wide validation failure (the request body itself is invalid, rather than one domain in it) now always returns 400 Bad Request / BAD_REQUEST. If your integration branches on status or error code for this case, check it against 400/BAD_REQUEST going forward. A per-domain validation failure (one item in the batch) is unaffected — that continues to return 200 with the failure reported on that item.
  • intakeLeads and intakeViews are no longer omitted when their value is 0. These are already returned by default (no includes value needed) on Get domains, Get domain, and Get multiple domains by name; previously a domain with zero leads or views had the field stripped entirely, making it indistinguishable from "not returned."
  • Create job documents type as defaulting to BULK_JOB when omitted, but omitting it was rejected with a 400 MALFORMED_INPUT / "Invalid type provided for bulk operation job" error instead. Omitting type now correctly creates a BULK_JOB, matching the documented default.
  • Get job and Get jobs's jobState response field now documents REJECTED and PENDING_REVIEW as valid values, alongside the existing 7. Both have always been returned for jobs in those states; only the documentation was missing them. The behavior is unchanged.

2026-10-28 — offerCount is now a no-op

  • The offerCount value for the includes query parameter on GET /domains, GET /domains/{domain}, and Get multiple domains by name is now a no-op: the offerCount field has been removed from the response. It is still accepted for backwards compatibility but is due to be deprecated and removed from includes soon.
  • GET /domains's pagination.first/last/next/previous links could include extra, empty query parameters for filters you didn't set (e.g. &hidden=&listStatus=). This has been fixed to return back the appropriate pagination parameters.

2026-10-26 — Stats error responses documented

  • GET /stats and GET /stats/{domain} can return 404 for a missing resource, and 422 for a validation failure.

2026-10-25 — Stats days parameter correction

  • The days query parameter on GET /stats and GET /stats/{domain} was documented with a maximum of 366. The actual maximum is 365.

On this page