Skip to main content
POST
Mark content as externally posted
After your integration publishes content to an external content management system (CMS) or website, call POST /v1/public/content/{id}/posted to record its URL in Hrizn. Authentication required: X-API-Key Scope required: content:write Plan entitlement required: API Access (API_ACCESS) The API key’s associated site constrains both the content lookup and the conditional write. Missing content and content belonging to another site return the same 404 not_found. Authorization is checked again on every request, including retries.

Verify the saved state

Call GET /v1/public/content/{id} with content:read on the same site’s key. Its publishing object returns posted_url, marked_posted_at, and publish_state, alongside the unchanged canonical_url. The top-level status still describes generation. Hrizn’s existing content UI reflects the saved marker and URL on normal refetch or reopening the content.

Path parameters

string
required
The Hrizn content UUID returned when you created the content. Keep this ID alongside the external URL in your integration. An external CMS ID, job ID, or IdeaCloud ID is not a content ID.

Request body

string
required
An absolute HTTP or HTTPS URL with no embedded credentials. Hrizn trims surrounding whitespace before validation; the trimmed URL must be at most 4096 characters.
The body accepts only posted_url. Unknown fields are rejected. Send no site, customer, actor, external publication timestamp, or event-version fields; tenant scope and attribution come from the authenticated request.

Response

marked_posted_at is the time the server first recorded the report, not an independently verified publication date or a timestamp supplied by your CMS. URL corrections preserve this time. publish_state: "published" acknowledges the recorded external publication report.

Retries and URL corrections

  • A retry with the current URL is a no-op and preserves the first marked time.
  • A different URL replaces the recorded URL and preserves the first marked time.
  • The last successfully applied update wins. There is no event version or ordering based on the CMS publication date.
  • Serialize URL corrections for each content ID and stop retrying superseded URLs. An old retry submitted after a correction can otherwise replace the correction.
  • For 409 conflict caused by concurrent update contention, retry only the latest intended payload.
This endpoint does not support response caching through X-Idempotency-Key. Its same-current-URL no-op behavior is separate from the idempotency-key contract. Every call re-runs authorization.

What this callback records

Hrizn reuses the existing manual posted marker and stores the reported URL. The callback does not crawl or independently verify the page, perform publishing, change generation state, change CMS publishing state, or modify telemetry.
Recording an external publication does not add the item to the integrated published-content feed or unlock publish-data. Those endpoints retain their existing CMS publishing requirements.

Backfill existing publications

Use your integration’s known Hrizn content-ID/URL pairs and send one request per pair. The server records when each report is received, rather than backdating it to the original publication. This callback provides no scanning, batch, or unpublish operation, and adds no MCP tools.

Errors

  • 400 validation_error: invalid content UUID, invalid URL, or unknown body fields.
  • 401: missing or invalid API key.
  • 403 forbidden: the API key lacks content:write.
  • 403 plan_upgrade_required: the key-associated site lacks the API_ACCESS entitlement.
  • 404 not_found: missing content or content belonging to another site; the responses are indistinguishable.
  • 409 conflict: concurrent update contention; retry the latest intended payload.
  • 429: rate limit exceeded; follow the rate-limit guidance.
  • 503 service_unavailable: publication recording is temporarily unavailable.
  • 500: unexpected internal server error.
Failures use the standard error envelope. A reported URL is not proof that a page is live; keep publication verification in your integration.

Authorizations

X-API-Key
string
header
required

Your Hrizn API key (prefix hzk_)

Path Parameters

id
string<uuid>
required

Hrizn content UUID returned by create; never an external CMS, job, or IdeaCloud ID.

Body

application/json
posted_url
string<uri>
required

Absolute HTTP(S) URL with no embedded credentials. Surrounding whitespace is trimmed before validation; the trimmed URL must be at most 4096 characters.

Maximum string length: 4096
Example:

"https://www.example.com/blog/hybrid-suv-guide"

Response

External publication recorded, corrected, or already current

data
object
required
Last modified on September 11, 2026