Domains

Changes a domain's capabilities or metadata. Pass a capability to add it or change its settings, or null to release it; capabilities you leave out don't change. Passing a capability that needs action again retries it. Releasing every capability keeps the domain, idle; delete it to remove it.

patch/domains/{id}

Request

  • Base URL
    https://api.whop.com/api/v1
  • URL
    https://api.whop.com/api/v1/domains/{id}
  • Auth
    HTTP bearer

Request body

apple_payobject nullable

Accept Apple Pay at checkout on the domain. It needs no other capability. Whop registers the domain with Apple: it stays pending until Apple answers, then turns ready, or action_required when Apple couldn't fetch the domain association file. Serve the file, then check the domain to register it again. Pass null to turn Apple Pay off: Whop removes the domain from Apple, and the domain stays, like releasing any other capability.

emailobject nullable

Send and receive email on the domain. Only a domain bought through Whop, or a subdomain of one in the same account, can have it. Whop publishes the DNS records and stays pending until its email provider verifies them, then turns ready. Pass null to remove email.

metadataobject

Replacement custom string keys and values.

pixelobject nullable

Track page views on the domain with the Whop pixel. It needs no other capability: it stays pending until the pixel records a page view, and turns action_required if it goes 7 days without one. Pass null to stop tracking.

verificationobject nullable

Prove you control the domain's DNS: Whop returns a TXT record to publish in issues, and whoever publishes it owns the domain on Whop. Pass null to release it. Can't be combined with registration.

Example request

{
  "metadata": {
    "project": "storefront"
  },
  "registration": {
    "auth_code": "Tr4nsfer-Code"
  },
  "transfer": {
    "destination": "internal"
  },
  "website": {
    "app_id": "app_xxxxxxxxxxxxxx"
  }
}

Response

Domain updated

account_idstring nullable required

ID of the account the domain belongs to, prefixed biz_.

created_atstring nullable required

When the domain was created, as an ISO 8601 timestamp.

domainstring required

Normalized hostname, such as checkout.example.com.

idstring nullable required

Domain ID, prefixed dom_. null when no domain on Whop has this hostname.

metadataobject required

Custom string keys and values attached to this domain. Empty when the domain isn't yours.

status'idle' | 'pending' | 'ready' | 'action_required' | 'releasing' | 'null' nullable required

The most pressing state of the domain's capabilities: releasing, then action_required, then pending, then ready. idle when it wants nothing.

updated_atstring nullable required

When the domain was last updated, as an ISO 8601 timestamp.

Example response

{
  "account_id": "biz_xxxxxxxxxxxxxx",
  "apple_pay": {
    "state": "pending"
  },
  "availability": {
    "available": true,
    "price": {
      "amount": "-1234.56",
      "currency": "usd",
      "decimals": 2,
      "display_decimals": 2
    },
    "renewal_price": {
      "amount": "-1234.56",
      "currency": "usd",
      "decimals": 2,
      "display_decimals": 2
    },
    "score": 75,
    "transfer_price": {
      "amount": "-1234.56",
      "currency": "usd",
      "decimals": 2,
      "display_decimals": 2
    }
  },
  "created_at": "2026-01-01T12:00:00.000Z",
  "domain": "shop.com",
  "email": {
    "state": "pending"
  },
  "id": "dom_xxxxxxxxxxxxxx",
  "issues": [
    {
      "capability": "verification",
      "code": "verification_required",
      "dns_records": [
        {
          "name": "_whop.shop.example.com",
          "type": "TXT",
          "value": "whop-domain-verification=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        }
      ],
      "message": "Publish this TXT record to prove you own the domain. Verification runs automatically."
    }
  ],
  "metadata": {
    "project": "website"
  },
  "owned_by": {
    "id": "biz_xxxxxxxxxxxxxx",
    "route": "biz_xxxxxxxxxxxxxx",
    "title": "Rival Shop"
  },
  "pixel": {
    "state": "pending"
  },
  "platform": {
    "state": "pending"
  },
  "public_record": {
    "expires_at": "2026-01-01T12:00:00.000Z",
    "name_servers": [
      "ns1.example.com"
    ],
    "registered_at": "2026-01-01T12:00:00.000Z",
    "registrant": {
      "address": "Burlington\nMA",
      "contact_url": "https://registrar.example/contact/example.com",
      "country": "US",
      "organization": "Privacy Protect, LLC"
    },
    "registrar": {
      "iana_id": "9999",
      "name": "Example Registrar, Inc.",
      "url": "https://registrar.example"
    },
    "statuses": [
      "client transfer prohibited"
    ],
    "updated_at": "2026-01-01T12:00:00.000Z"
  },
  "registration": {
    "amount_due": {
      "amount": "-1234.56",
      "currency": "usd",
      "decimals": 2,
      "display_decimals": 2
    },
    "auto_renew": true,
    "method": "transfer",
    "phase": "awaiting_payment",
    "purchase_url": "https://whop.com/checkout/ch_xxxxxxxxxxxxxx/",
    "renewal_price": {
      "amount": "-1234.56",
      "currency": "usd",
      "decimals": 2,
      "display_decimals": 2
    },
    "state": "pending"
  },
  "status": "pending",
  "transfer": {
    "destination": "internal",
    "state": "ready"
  },
  "updated_at": "2026-01-01T12:00:00.000Z",
  "verification": {
    "state": "pending",
    "verification_expires_at": "2026-01-01T12:00:00.000Z"
  },
  "website": {
    "app": {
      "base_url": "https://domains-spec-site.whop.site",
      "id": "app_xxxxxxxxxxxxxx"
    },
    "state": "pending"
  }
}

Changes

    • warning

      added the new transfer enum value to the // response property for the response status

    • info

      added the new optional request property

    • info

      added the required property to the response with the status

    • info

      added the required property ///// to the response with the status