Skip to main content
POST
Create Domain

Authorizations

Authorization
string
header
required

An account-scoped user token or a user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************. See Auth & API keys for how to get each one.

Headers

Idempotency-Key
string

A unique key that makes this request safe to retry. See Idempotent requests.

Maximum string length: 255
Example:

"d9105228-4a08-46b1-8b91-42fed586d383"

Api-Version-Date
string

Pins the request to a dated API version.

Example:

"2026-10-06-2"

Body

application/json
domain
string
required

Bare hostname, such as example.com or checkout.example.com. A bought domain must be a root domain. Wildcards, paths, schemes, and ports are not accepted.

Example:

"store.example.com"

account_id
string

Account ID, prefixed biz_. Required for user credentials; otherwise defaults to the credential's account.

app_id
string

App ID, prefixed app_, for the domain to serve. The app must belong to the account. Required with mode: external.

Example:

"app_xxxxxxxxxxxxxx"

metadata
object

Custom string keys and values.

Example:
mode
enum<string>
default:managed

managed buys the domain through Whop; external connects a domain you registered elsewhere.

Available options:
external,
managed
Example:

"external"

payment_method_id
string

Saved card to charge for a bought domain and its renewals, prefixed payt_. It must belong to the signed-in user.

replace_existing
boolean
default:false

With mode: external, explicitly transfer a domain from its current owner after publishing this new claim's TXT proof. Create the claim after the current owner verified.

Response

Domain created

account_id
string | null
required

ID of the account claiming or owning this domain, prefixed biz_. null for a search result.

Example:

"biz_xxxxxxxxxxxxxx"

amount_due
object | null
required

The charge the domain owes now. null when nothing is owed.

app_id
string | null
required

ID of the app the domain serves, prefixed app_. null for a search result or a bought domain without an app.

Example:

"app_xxxxxxxxxxxxxx"

auto_renew
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.

Example:

true

created_at
string | null
required

When the domain was created, as an ISO 8601 timestamp. null for a search result.

Example:

"2026-01-01T12:00:00.000Z"

dns_records
object[]
required
domain
string
required

Normalized hostname, such as checkout.example.com.

Example:

"shop.com"

expires_at
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.

Example:

null

id
string | null
required

Domain ID, prefixed dom_. null for a search result.

Example:

"dom_xxxxxxxxxxxxxx"

issues
object[]
required
metadata
object
required

Custom string keys and values attached to this domain. Empty for a search result.

Example:
mode
enum<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,
managed,
null
Example:

"managed"

payment_method_id
string | null
required

ID of the saved card charged for a bought domain, prefixed payt_. null when none is set.

Example:

null

public_record
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.

purchase_url
string | null
required

Link to pay the charge the domain owes now: its registration, or a yearly renewal. null when nothing is owed.

Example:

"https://whop.com/checkout/ch_xxxxxxxxxxxxxx/"

registration_quote
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.

status
enum<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,
removed,
null
Example:

"awaiting_payment"

updated_at
string | null
required

When the domain was last updated, as an ISO 8601 timestamp. null for a search result.

Example:

"2026-01-01T12:00:00.000Z"

verification_expires_at
string | null
required

When an unverified claim is automatically deleted, 48 hours after creation, as an ISO 8601 timestamp.

Example:

"2026-01-01T12:00:00.000Z"