propgate docs

CLIdomains

domains

domains add and domains list are thin clients over POST /v1/domains and GET /v1/domains — the cURL beside each command issues the identical request, so the two references agree on the shape.

domains add --profile

Registration is a write, not a verification. It does not touch DNS.

curl -X POST https://api.propgate.dev/v1/domains \
  -H "authorization: Bearer pg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "content-type: application/json" \
  -d '{"name":"yourdomain.dev","profile":"sending"}'
yourdomain.dev registered as 019fcf4f-....

Nothing has been checked yet — the sweeper will pick it up.

--profile is required — a domain that names no profile has nothing to be checked against, so the API refuses it with a 422 rather than accepting a domain with no meaning. Nothing has been checked yet: state: pending here means "nobody has looked", not "broken". The sweeper picks up the first check on its own schedule.

domains list --state

curl "https://api.propgate.dev/v1/domains?state=failed" \
  -H "authorization: Bearer pg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
failed      yourdomain.dev              3/5           checked 2026-08-04 22:10
failed      other.example                0/4           checked 2026-08-05 01:02

--state filters to one of the five states domain_state defines: pending, verifying, verified, degraded, or failed. Omit it to list everything. An empty result prints its own line rather than nothing at all — a blank terminal after a real command looks like a failure:

No domains yet. Add one with `propgate domains add <domain> --profile <key>`.