mode is external: pay at its purchase_url, or set payment_method_id to charge a saved card, and Whop registers the domain and runs its DNS. Thirty days before a bought domain expires, Whop opens a renewal charge at purchase_url and, while auto_renew is on, charges the saved card for it. An unpaid domain stops serving its app when it expires but stays renewable at purchase_url until the registry’s grace period ends, and is then removed.
A connected domain returns DNS records to publish instead. Verification and certificates run automatically, and unverified claims expire after 48 hours. A claim doesn’t reserve the hostname. Either kind serves its app once its hostname and certificate are active.
To find a domain to buy, pass search to List Domains or a hostname to Retrieve Domain.
Endpoints
Attributes
string | null
required
Domain ID, prefixed
dom_. null for a search result.string | null
required
ID of the account claiming or owning this domain, prefixed
biz_. null for
a search result.object | null
required
The charge the domain owes now.
null when nothing is owed.Properties
Properties
string
required
The amount in major units, as an exact decimal string —
"10.00" is ten
dollars. A string so no float rounds it in transit.string
required
Three-letter ISO 4217 currency code, lowercase.
integer
required
How many decimal places the amount CARRIES — the precision the charge itself
runs at.
integer
required
How many decimal places to SHOW. Usually equal to
decimals, and deliberately not always: COP is charged in centavos but written in whole pesos, so it is 2 and 0. Format the number in your own locale using this.string | null
required
ID of the app the domain serves, prefixed
app_. null for a search result
or a bought domain without an app.boolean | null
required
Whether Whop charges the saved payment method to renew a bought domain before
it expires.
null for connected domains and search results.string | null
required
When the domain was created, as an ISO 8601 timestamp.
null for a search
result.object[]
required
DNS records to publish for a connected domain: TXT for ownership, A/AAAA for root domains through Whop’s Apex Proxying IPs, and CNAME for subdomains. Empty for bought domains and search results.
string
required
Normalized hostname, such as checkout.example.com.
string | null
required
When the registration of a bought domain expires unless renewed, as an ISO
8601 timestamp.
null for connected domains and search results.object[]
required
What needs attention before the domain can serve its app or renew. Empty for a search result.
Properties
Properties
string
required
What needs attention, as a stable code.Available options:
ownership_required, dns_required, provider_validation, certificate_pending, expiring_soon, ownership_conflict, account_unavailable, check_failed, domain_unavailable, premium_not_supported, unsupported_tld, registration_unavailable, registration_premium, registration_failed, renewal_failed, payment_action_requiredstring
required
What needs attention before the domain can serve its app or renew.
object
required
Custom string keys and values attached to this domain. Empty for a search
result.
string | null
required
managed for a domain bought and renewed through Whop; external for a domain registered elsewhere and connected with DNS records. null for a search result.Available options: external, managedstring | null
required
ID of the saved card charged for a bought domain, prefixed
payt_. null
when none is set.object | null
required
The domain’s public registration record (RDAP), read when you retrieve it by hostname.
null for your own domains, available domains, or a record that couldn’t be read.Properties
Properties
boolean | null
required
Whether the domain’s delegation is signed with DNSSEC, or
null when the
registry doesn’t say.string | null
required
When the current registration expires, as an ISO 8601 timestamp, or
null
when the record omits it.string[]
required
The name servers the domain delegates to, lowercase, such as
ns1.example.com. Empty when the record lists none.string | null
required
When the domain was first registered, as an ISO 8601 timestamp, or
null when
the record omits it.object | null
required
Who the domain is registered to, often a privacy service or
Redacted For Privacy. null when the record publishes no registrant.Properties
Properties
string | null
required
Registrant postal address as published, with lines separated by line breaks.
Often only a state or region.
null when withheld.string | null
required
A web form for contacting the registrant, published when the registrar
withholds their email.
null when there is none.string | null
required
Registrant country as an ISO 3166-1 alpha-2 code, such as
US, or null when
withheld.string | null
required
Registrant email address, often a privacy forwarding address, or
null when
withheld.string | null
required
Registrant name, or
null when withheld.string | null
required
Registrant organization, often a privacy service, or
null when withheld.string | null
required
Registrant phone number, or
null when withheld.object | null
required
The registrar that manages the domain, or
null when the record doesn’t name one.string[]
required
The domain’s registry statuses in RDAP form, such as
client transfer prohibited. Empty when the record lists none.string | null
required
When the registration record last changed, as an ISO 8601 timestamp, or
null when the record omits it.string | null
required
Link to pay the charge the domain owes now: its registration, or a yearly
renewal.
null when nothing is owed.object | null
required
Whether you can register the domain and what it costs. Set for search results and hostname lookups;
null for your own domains.Properties
Properties
boolean
required
Whether the domain can be registered now.
Whether the registry charges more than its standard price for this domain.
object | null
required
What the first year of registration costs.
null when the domain is not available.Properties
Properties
string
required
The amount in major units, as an exact decimal string —
"10.00" is ten
dollars. A string so no float rounds it in transit.string
required
Three-letter ISO 4217 currency code, lowercase.
integer
required
How many decimal places the amount CARRIES — the precision the charge itself
runs at.
integer
required
How many decimal places to SHOW. Usually equal to
decimals, and deliberately not always: COP is charged in centavos but written in whole pesos, so it is 2 and 0. Format the number in your own locale using this.object | null
required
What each yearly renewal costs after the first year.
null when the domain is not available.Properties
Properties
string
required
The amount in major units, as an exact decimal string —
"10.00" is ten
dollars. A string so no float rounds it in transit.string
required
Three-letter ISO 4217 currency code, lowercase.
integer
required
How many decimal places the amount CARRIES — the precision the charge itself
runs at.
integer
required
How many decimal places to SHOW. Usually equal to
decimals, and deliberately not always: COP is charged in centavos but written in whole pesos, so it is 2 and 0. Format the number in your own locale using this.integer
required
How desirable the domain is, from 0 to 100. Short, real-word names on
well-known extensions score highest.
object | null
required
What moving the domain to Whop costs if you own it elsewhere, including a year of registration.
null when it’s available or can’t be transferred.Properties
Properties
string
required
The amount in major units, as an exact decimal string —
"10.00" is ten
dollars. A string so no float rounds it in transit.string
required
Three-letter ISO 4217 currency code, lowercase.
integer
required
How many decimal places the amount CARRIES — the precision the charge itself
runs at.
integer
required
How many decimal places to SHOW. Usually equal to
decimals, and deliberately not always: COP is charged in centavos but written in whole pesos, so it is 2 and 0. Format the number in your own locale using this.string | null
required
Domain lifecycle. Only active domains serve their app.
null for a search result.Available options: pending_verification, awaiting_payment, registering, provisioning, active, action_required, deleting, expired, failed, removedstring | null
required
When the domain was last updated, as an ISO 8601 timestamp.
null for a
search result.string | null
required
When an unverified claim is automatically deleted, 48 hours after creation, as
an ISO 8601 timestamp.
Domain

