Mark content as externally posted
Report the live URL after your integration publishes Hrizn content
POST
Mark content as externally posted
After your integration publishes content to an external content management system (CMS) or website, call
The body accepts only
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
CallGET /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.
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 conflictcaused by concurrent update contention, retry only the latest intended payload.
What this callback records
Hrizn reuses the existingmanual 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 lackscontent:write.403 plan_upgrade_required: the key-associated site lacks theAPI_ACCESSentitlement.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.
Authorizations
Your Hrizn API key (prefix hzk_)
Path Parameters
Hrizn content UUID returned by create; never an external CMS, job, or IdeaCloud ID.
Body
application/json
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:
4096Example:
"https://www.example.com/blog/hybrid-suv-guide"
Response
External publication recorded, corrected, or already current
Last modified on September 11, 2026
