← All docs

CMS instant updates

Use this optional signed POST endpoint when you want geodeck to refresh llms.txt, clean page copies, sitemap updates, and related search updates within minutes of a content change. If you do not need instant updates, your hosted files and audits still remain useful.

What endpoint do I post to?

POST https://geodeck.icu/api/webhook/cms
X-geodeck-Signature: sha256=<hex hmac of raw body>
Content-Type: application/json

What does the payload look like?

{
  "domain": "example.com",
  "url":    "https://example.com/blog/post-slug",
  "event":  "publish"
}

event must be one of publish, update, or unpublish.

Batch submission

{
  "domain": "example.com",
  "urls": [
    "https://example.com/blog/post-one",
    "https://example.com/blog/post-two"
  ],
  "event": "update"
}

Batch mode accepts up to 500 same-host URLs per signed request. In batch mode, omit title, summary, content, and html.

How do I sign the request?

Compute HMAC-SHA256 of the raw request body using the domain's webhook secret. Send hex-encoded with the sha256= prefix.

echo -n "$BODY" | openssl dgst -sha256 -hmac "$SECRET" -hex

What HTTP responses can I expect?

  • 202 Accepted – payload queued.
  • 401 Unauthorized – missing/invalid signature.
  • 401 Unauthorized – domain unknown or not registered.
  • 402 Payment Required – monthly ping quota exceeded.

How should I retry on failure?

On a 5xx response from us, retry with exponential backoff (1s, 5s, 30s, 5m). After the third failure, surface the error in your CMS log.

Keep reading the rest of the geodeck documentation, or jump to the platform pages.

Platform