---
title: "Email the claim link for an unclaimed page to its human, plus one reminder as it runs out."
method: POST
path: "/sites/{idOrSlug}/keep"
tags: ["Sites"]
---

# Email the claim link for an unclaimed page to its human, plus one reminder as it runs out.

`POST /sites/{idOrSlug}/keep`

## Request

- Base URL: `https://api.stacktr.ee`
- URL: `https://api.stacktr.ee/sites/{idOrSlug}/keep`
- Auth: none required

For a page published without an account. The `claim_token` from the publish response is the credential; no key, no OAuth, no wallet. The address receives the claim link and the deadline now, and one reminder inside four hours of expiry or after it. It is stored on the page, used for those two emails only, and cleared when the page is claimed. Use this when the person you publish for is not reading your output: the claim link in a JSON body reaches nobody. Claiming works for the 30 days an expired page is held and brings it back at the same address. Same `claim_token` sent again for the same address inside ten minutes answers `sent: false` without a second email.

## Request body

- object
  - `claim_token` string, required: From the publish response of this page.
  - `email` string, email, required: Where the claim link goes.
  - `consent` boolean: True when the person whose address this is said yes to the two emails. Ask them first; send true only when they did.
  - `via` string: Optional: which surface asked (api, drop, drop_webmcp, widget, page). Analytics only; unknown values are recorded as api.
  - `source` string: Optional label for what asked, a plain slug. Analytics only.

## Response `200`

Address recorded.

- object
  - `ok` boolean, required
  - `sent` boolean, required: false when the same address was emailed for this page inside the last ten minutes.
  - `email` string
  - `expires_at` integer, nullable
  - `expires_at_iso` string, nullable

## Other responses

- `400`: Missing claim_token or an address that is not an email.
- `403`: The claim_token does not match this page.
- `409`: The page already belongs to an account.
- `410`: Past the hold, burned, or taken down: nothing left to claim.
- `429`: `keep_email_limit`: this page has already sent 3 keep emails, the most one page can. The claim link (or keep_url) still works.
- `502`: The email could not be sent. The claim link itself still works.

---

[API](https://skmtc.dev/stacktr/apis/stacktree-api.md) · [All operations](https://skmtc.dev/stacktr/apis/stacktree-api/llms.txt) · [OpenAPI document](https://skmtc.dev/stacktr/apis/stacktree-api/revisions/5878cce46977?raw)
