---
title: "Create Record Watch"
method: POST
path: "/watch/record"
tags: ["watch"]
---

# Create Record Watch

`POST /watch/record`

## Request

- Base URL: `https://dnsdoctor.dev/api/v1`
- URL: `https://dnsdoctor.dev/api/v1/watch/record`
- Auth: none declared

Buy a DNS record watch: one record, read authoritatively, up to 24 hours.

Anonymous; **402 on every call**. The propagation create's gate order: inert
503, the 422 on a malformed target, the fleet-wide caps' 429, then the lane —
everything that can refuse refuses before any money moves.

## Request body

- WatchRecordIn: The record watch's terms. Target validation is `resolve_query`'s. `window_hours` is bounded at the MODEL, the propagation watch's reasoning: the published `input_schema` says 1 to 24, and a sub-hour window would pro-rate toward a `$0` offer on an always-paid surface.
  - `domain` string, required
  - `kind` string, required: Which record to watch: spf, dmarc, txt, mx, cname, a or aaaa. The watch reports `met` when the authoritative answer set differs from the first one recorded — a name whose A/AAAA answers legitimately rotate (an ELB/ALB or GSLB hostname) meets on the rotation, not on your change.
  - `host` string, nullable: A label under the domain (txt, cname, a and aaaa only), e.g. `www`.
  - `window_hours` number

## Response `200`

Successful Response

- WatchCreated: The minted handle plus the terms it was sold on. Deterministic throughout: an echo of what the buyer asked for, the price that was settled, and where to poll. No prose, no record, no prescription — the D94 invariant carries onto every watch surface.
  - `watch_id` string, required
  - `kind` string, required
  - `target` string, required
  - `record_type` string, nullable, required
  - `expected_value` string, nullable, required
  - `state` string, required
  - `cadence_seconds` integer, required
  - `window_hours` number, required
  - `price_usd` string, required
  - `created_at` string, required
  - `expires_at` string, required
  - `results_expire_at` string, required
  - `poll_url` string, required

## Other responses

- `402`: Payment required — retry with an x402 payment header.
- `422`: Validation Error

---

[API](https://skmtc.dev/dnsdoctor/apis/dns-doctor-api.md) · [All operations](https://skmtc.dev/dnsdoctor/apis/dns-doctor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dnsdoctor/apis/dns-doctor-api/revisions/1d0114806e76?raw)
