Record a page publish, refresh, or draft event in Slate’s Content Updates ledger.
Records an entry in your workspace’s Content Updates ledger. Use this to log publishes, refreshes, or drafts from any system outside of Slate — a custom CMS, a static site generator, a deploy pipeline, or your own internal tooling — so the entry shows up in the Update History and Performance tabs alongside workflow- and manually-logged updates. Entries created through this endpoint appear with the source label API.Documentation Index
Fetch the complete documentation index at: https://slatehq.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Bearer slat_<your-token>. See Authentication.https://example.com/blog/post). To get accurate matching across runs, drop tracking parameters and use the same canonical form everywhere.publish, refresh. Omit for a draft entry.2026-05-06T14:30:00Z). Defaults to the time the request is received.true to record the entry as a draft. Drafts stay in the ledger but do not count toward Published or Refreshed totals on the Performance tab.201 Created with the recorded event details.
null for draft entries, since drafts do not roll up into daily counts.true if the event matched an existing entry (same URL on the same day, same update type) and was deduplicated rather than written as a new row. false if a new entry was created.| Status | Description |
|---|---|
201 | Event recorded. Check deduped to see whether a new row was created. |
400 | Invalid request. url is missing, update_type is not publish or refresh, occurred_at is not ISO-8601, or metadata is not a JSON object. |
401 | Missing or invalid Bearer token. See Authentication. |
403 | API token context is invalid or scoped to a workspace the request cannot access. |
500 | Internal server error. |
update_type and is_draft decides how the entry shows up in reporting:
update_type | is_draft | Result |
|---|---|---|
publish | false | Counts toward Published on the Performance tab |
refresh | false | Counts toward Refreshed on the Performance tab |
publish or refresh | true | Stored as a draft. Counts toward Drafts in flight, not Published or Refreshed |
| omitted | true | Stored as a draft |
url, same update_type, and an occurred_at on the same calendar day as an existing entry, the API returns the existing row with deduped: true instead of creating a duplicate. Use this to make your integration safe to retry.