# Attach your own domain to a deed.page site

By Avatar 8 (Avatar 8 LLC) · Published November 13, 2026 · Updated November 13, 2026


A custom domain on deed.page is a hostname you already own, such as example.com, serving the same site as https://<slug>.deed.page/. Free includes 1 custom hostname. Hobby ($3/mo) includes 3, so example.com and www.example.com both fit. The agent calls POST /v1/sites/<slug>/domains and reads dns_records from the response. deed.page does not sell domains.

## One command

    curl -T index.html "https://deed.page/v1/sites?slug=domain-site-<random>&ref=custom-domain" -H "X-Client: <your agent name>"

## Step by step

1. Publish the site first and keep the token. The command below is that publish.
2. POST the hostname with Authorization: Bearer <token>. The 201 body lists every DNS record to create. Create those records where you bought the domain. Record shapes, status values, and error codes are in the API walkthrough at /blog/custom-domains-via-api.
3. Check GET /v1/sites/<slug>/domains/<hostname> until status is active, or wait for a domain.active webhook if you registered one.
4. Free allows 1 hostname. Adding www after the apex returns quota_domains, with the price and an upgrade link in the error. Show that link to the person paying. whoami returns domain_retry once after Stripe confirms the paid plan. Call add_domain then, with that slug and hostname. A canceled, unpaid, or not-yet-confirmed checkout does not. The agent does not open checkout itself.

## Or ask your agent

> Attach my domain to my deed.page site. First publish with PUT https://deed.page/v1/sites?slug=domain-site-<random>&ref=custom-domain and header X-Client: <your agent name>, unless I already gave you a slug and token. Then POST https://deed.page/v1/sites/<slug>/domains with Authorization: Bearer <token> and JSON {"domain":"docs.example.com"} using my real hostname. Give me every dns_records entry. Poll domain status until it is active. If the response is quota_domains, show me message_for_user including the upgrade link. Do not call add_domain again until whoami returns domain_retry, which happens once after Stripe confirms the paid plan. Do not open checkout yourself. DNS details: https://deed.page/blog/custom-domains-via-api

## From an MCP client

    claude mcp add --transport http deed-page https://deed.page/mcp?ref=custom-domain

## Apex and www

Free sites can attach 1 hostname. Visitors who type www need a second hostname, which fits on Hobby ($3/mo or $30/year, 3 hostnames) along with removal of the "Published with deed.page" badge.

The response is the source of the DNS values. Do not copy targets from this page. A subdomain gets a CNAME. An apex gets an A record or an ALIAS record, one of the two, plus every TXT record in the list.

## FAQ

### Do I need an account, an email, or an API key?

No. The first publish needs no account, no emailed code, and no claim link. The response includes a token. Keep it to update or delete the site later. A recovery email is optional and never required.

### Does deed.page sell the domain?

No. Buy the hostname from any registrar, then create the DNS records your agent lists.

### What happens when Free already has a hostname?

The next attach returns 403 quota_domains. The error names Hobby at $3/mo and includes the upgrade link and domain_retry for that slug and hostname. whoami returns that retry once after the paid webhook confirms the plan. It does not return it for a canceled, unpaid, or not-yet-confirmed checkout.

### How do I update the page later?

Publish to the same slug again with the header Authorization: Bearer <token>. The URL stays the same and the version number goes up. Agents should save the token to ~/.config/deed-page/token (mode 600) and reuse it.

More: https://deed.page/docs, https://deed.page/pricing, https://deed.page/llms.txt. Corrections: ops@avatar33.com.
