propgate docs

API reference › DomainsTimeline

Domain timeline

GET/v1/domains/:id/timeline
FieldTypeDescription
limitnumberDefault 50, max 200.

No CLI command yet — the timeline is API-only.

curl -s https://api.propgate.dev/v1/domains/019fcf7a-2b3c-7d4e-9f5a-6b7c8d9e0f1a/timeline \
  -H "authorization: Bearer pg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
{
  "data": [
    {
      "current": "pass",
      "object": "record_change",
      "observedAt": "2026-08-03T14:02:11.000Z",
      "previous": "fail:DKIM_RECORD_MISSING",
      "requirementKey": "dkim"
    }
  ],
  "error": null,
  "meta": null
}

Newest first. An entry is appended only when an observation actually differs from the previous one for that requirement key — a check that sees the same thing writes nothing at all. Check the same domain twice in a row and this list does not grow.

That's deliberate, not an optimisation applied later: logging every check result would be 360k rows a day at 10k domains. It cannot be retrofitted without losing history, which is why it's a property of what gets written, not of what gets queried.

What is compared is the requirement's observed state — pass, or fail:<code> — not the raw record text. Several different record values can satisfy one requirement identically, and comparing text would write an entry every time a customer reordered their SPF mechanisms without changing what it authorises.