HYBRID-CHAINDEVELOPERS
DOCUMENTATIONv2
POST

Newsroom operations

Create article

/api/v2/admin/news/articles
AUTHENTICATIONBearer token · admin:news:writeAUTHORITATIVE OWNERnewsroom-serviceCONTRACT AUTHORITYGenerated Rust OpenAPISTATUSSource ready · production listed

PURPOSE + BUSINESS CONTEXT

Create a newsroom article draft.

WHEN THIS CALL IS USEFUL

Create a private, attributed structured-content draft after resolving a unique permanent slug and public presentation metadata.

OUTCOME · Create or advance

What changes

Creates revision 1, its content commitment, and an ARTICLE_CREATED proof event. It never publishes.

WHY IT MATTERS

  • Gives people and agents a contract-backed way to advance article.
  • Creates an attributed and versioned editorial workflow with permanent slugs, explicit publication actions, presentation metadata, and retained reasons for lifecycle changes.

ISOLATION + AUTHORITY

Editor identity, article UUID, permanent slug, structured body, metadata, revision version, schedule, publication, archive reason, public projection, and integrity verification remain distinct. Editorial authority does not grant tenant, identity, financial, wallet, settlement, matching, or trading authority.

BEFORE YOU CALL

  • Authenticate at the documented boundary: bearer+scope.
  • Supply the required slug (body), title (body), category (body), excerpt (body), body (body), author_name (body) exactly as defined by the live contract.
  • Resolve the editor authority, article UUID or unique permanent slug, current revision, requested lifecycle action, attribution, and required publication or archival reason.

WHAT TO DO NEXT

  • Re-read the article revision and lifecycle state, then confirm the public projection only when the requested action was publication.
  • Preserve the permanent slug, expected version, attribution, and reason across later schedule, publication, or archival actions.

AGENT GUIDANCE

  • Use article only for the purpose and lifecycle stage described by this operation; do not treat it as authority for an adjacent action.
  • Supply the required slug (body), title (body), category (body), excerpt (body), body (body), author_name (body) exactly as defined by the live contract.
  • Treat draft creation, content revision, scheduling, publication, public visibility, verification, archival, and external factual accuracy as separate concerns.
  • After a timeout or conflict, read authoritative state before deciding whether an equivalent retry is safe.
MACHINE CONTRACT

The exact deployed parameters, schemas, responses, security requirements, and Hybrid-Chain agent metadata are authoritative at this operation's production OpenAPI JSON Pointer. The readable tables below add integration guidance; the deployed OpenAPI controls if guidance and the machine contract ever differ.

Open the authoritative production contract

EXTENDED INTEGRATION GUIDANCE

Readable request and response reference

Examples illustrate integration intent; the referenced OpenAPI operation and component schemas define the executable shape.

PARAMETERS

Headers, path, query, and body

NAMELOCATIONPRESENCETYPE / RULES / PURPOSE
AuthorizationheaderRequired

Bearer tokenCredential containing the admin:news:write scope.EXAMPLEBearer hc_live_…

Idempotency-KeyheaderRequired

ASCII string · 1–128Caller-generated key reused for every retry of the same logical mutation.EXAMPLEnews-draft-agent-api-20260901

slugbodyRequired

lowercase URL slug · 3–160Stable, unique public slug.EXAMPLEagent-ready-api-reference

titlebodyRequired

string · 3–200Public headline.EXAMPLEHybrid-Chain publishes an agent-ready API reference

categorybodyRequired

string · 1–64Exact newsroom collection.EXAMPLEengineering

excerptbodyRequired

string · 1–1600Public card, search, and social summary.EXAMPLEThe V2 reference now exposes an executable OpenAPI contract and retained publication evidence.

bodybodyRequired

NewsContentBlock[] · 1–120Ordered paragraph, heading, quote, list, or callout blocks; HTML, scripts, secrets, and unknown block fields are rejected.EXAMPLE[{"type":"heading","text":"Built for agents","level":2,"items":[],"ordered":null},{"type":"paragraph","text":"Fetch the live OpenAPI document before generating calls.","level":null,"items":[],"ordered":null},{"type":"list","text":null,"level":null,"items":["Ingest","Build","Validate"],"ordered":true}]

author_namebodyRequired

string · 1–160Public byline only; the authenticated profile remains the ledger actor.EXAMPLEHybrid-Chain Editorial

eyebrowbodyOptional

string · max 80Short editorial label.EXAMPLEDeveloper platform

featuredbodyOptional

boolean · default falseHighlights the article in supported presentation surfaces.EXAMPLEtrue

tagsbodyOptional

string[] · max 16Search and classification tags.EXAMPLE["api","agents"]

productsbodyOptional

slug[] · max 16Related product slugs.EXAMPLE["developer-platform"]

social_linksbodyOptional

string map · max 16Allowlisted public presentation links.EXAMPLE{"canonical":"https://hybrid-chain.com/news/agent-ready-api-reference"}

seo_titlebodyOptional

string · max 220Search title; defaults to title.EXAMPLEAgent-ready Hybrid-Chain API

seo_descriptionbodyOptional

string · max 320Search description; defaults to excerpt.EXAMPLEIntegrate Hybrid-Chain V2 from its live OpenAPI 3.1 contract.

editorial_datebodyOptional

RFC 3339 timestamp | nullPrivate proposed publication date; creation still remains DRAFT.EXAMPLE2026-09-03T16:00:00Z

REQUEST

JSON body example

{
  "slug": "agent-ready-api-reference",
  "title": "Hybrid-Chain publishes an agent-ready API reference",
  "eyebrow": "Developer platform",
  "category": "engineering",
  "excerpt": "The V2 reference now exposes an executable OpenAPI contract and retained publication evidence.",
  "body": [
    {
      "type": "heading",
      "text": "Built for agents",
      "level": 2,
      "items": [],
      "ordered": null
    },
    {
      "type": "paragraph",
      "text": "Fetch the live OpenAPI document before generating calls.",
      "level": null,
      "items": [],
      "ordered": null
    },
    {
      "type": "list",
      "text": null,
      "level": null,
      "items": [
        "Ingest",
        "Build",
        "Validate"
      ],
      "ordered": true
    }
  ],
  "author_name": "Hybrid-Chain Editorial",
  "featured": true,
  "tags": [
    "api",
    "agents"
  ],
  "products": [
    "developer-platform"
  ],
  "social_links": {
    "canonical": "https://hybrid-chain.com/news/agent-ready-api-reference"
  },
  "seo_title": "Agent-ready Hybrid-Chain API",
  "seo_description": "Integrate Hybrid-Chain V2 from its live OpenAPI 3.1 contract.",
  "editorial_date": null
}

RESPONSES

Status and payload examples

201Private DRAFT revision 1 with its content commitment, immutable revision record, and ARTICLE_CREATED proof event.Mutation completed · JSON RESPONSE+
{
  "article_uuid": "7d41f32773b64855a72106a62ea6a5f1",
  "slug": "agent-ready-api-reference",
  "title": "Hybrid-Chain publishes an agent-ready API reference",
  "eyebrow": "Developer platform",
  "category": "engineering",
  "excerpt": "The V2 reference now exposes an executable OpenAPI contract and retained publication evidence.",
  "author_name": "Hybrid-Chain Editorial",
  "status": "DRAFT",
  "featured": true,
  "tags": [
    "api",
    "agents"
  ],
  "products": [
    "developer-platform"
  ],
  "social_links": {
    "canonical": "https://hybrid-chain.com/news/agent-ready-api-reference"
  },
  "seo_title": "Agent-ready Hybrid-Chain API",
  "seo_description": "Integrate Hybrid-Chain V2 from its live OpenAPI 3.1 contract.",
  "reading_minutes": 2,
  "published_at": null,
  "scheduled_at": null,
  "editorial_date": null,
  "revision": 1,
  "content_commitment": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "previous_commitment": null,
  "created": "2026-09-01T18:30:00Z",
  "updated": "2026-09-01T18:30:00Z",
  "body": [
    {
      "type": "heading",
      "text": "Built for agents",
      "level": 2,
      "items": [],
      "ordered": null
    },
    {
      "type": "paragraph",
      "text": "Fetch the live OpenAPI document before generating calls.",
      "level": null,
      "items": [],
      "ordered": null
    },
    {
      "type": "list",
      "text": null,
      "level": null,
      "items": [
        "Ingest",
        "Build",
        "Validate"
      ],
      "ordered": true
    }
  ],
  "revisions": [
    {
      "revision_uuid": "53537df98c224331accff4ab99e8d1ac",
      "revision": 1,
      "change_summary": "Initial private draft",
      "content_commitment": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "previous_commitment": null,
      "published_at": null,
      "created": "2026-09-01T18:30:00Z"
    }
  ],
  "proof_chain": [
    {
      "sequence": 1,
      "type": "ARTICLE_CREATED",
      "payload_hash": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      "previous_event_hash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
      "event_hash": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
      "created": "2026-09-01T18:30:00Z"
    }
  ]
}
INTEGRATION DECISION
CALLER ACTION
Accept the returned representation or receipt, then re-read the article revision and lifecycle state, then confirm the public projection only when the requested action was publication.
RETRY SAFETY
Do not repeat a successful mutation merely to confirm it. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions.
STATE RECONCILIATION
Persist returned identifiers, versions, commitments, and receipts. Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
401The bearer credential is missing, invalid, or expired.Authentication required · JSON RESPONSE+
{
  "code": "invalid_credentials",
  "message": "The bearer credential is missing, invalid, or expired."
}
INTEGRATION DECISIONinvalid_credentials
CALLER ACTION
Discard the rejected credential, complete the documented authentication or reassertion flow, and rebuild any request signature with fresh timestamps and nonces.
RETRY SAFETY
Retry only with a newly valid credential and fresh replay-protection values. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions.
STATE RECONCILIATION
Assume the outcome is unknown only when the connection failed after transmission; otherwise authentication failed before domain work. Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.
403The credential lacks exact admin:news:write authority or required publication policy.Authority or policy denied · JSON RESPONSE+
{
  "code": "insufficient_scope",
  "message": "The credential lacks exact admin:news:write authority or required publication policy."
}
INTEGRATION DECISIONinsufficient_scope
CALLER ACTION
Verify the exact scope, tenant or workspace membership, owner boundary, step-up purpose, feature policy, and resource eligibility. Never broaden authority automatically.
RETRY SAFETY
Do not retry until the missing authority or policy condition has been deliberately resolved with least privilege.
STATE RECONCILIATION
Confirm the caller and resource resolve to the same authority boundary for tenant-scoped administrative aggregates, workloads, controls, reviews, and audit-safe operational projections.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.
409The expected revision is stale, the slug conflicts, or the idempotency key was reused with another body.State reconciliation required · JSON RESPONSE+
{
  "code": "newsroom_conflict",
  "message": "The expected revision is stale, the slug conflicts, or the idempotency key was reused with another body."
}
INTEGRATION DECISIONnewsroom_conflict
CALLER ACTION
Stop the mutation sequence and fetch the latest authoritative resource, lifecycle state, version, ETag, reservation, or existing idempotency result.
RETRY SAFETY
Retry only after reconciling the conflict. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions.
STATE RECONCILIATION
Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.
422The fields, action, reason, structured blocks, identifier, or Idempotency-Key are invalid.Request must change · JSON RESPONSE+
{
  "code": "invalid_newsroom_request",
  "message": "The fields, action, reason, structured blocks, identifier, or Idempotency-Key are invalid."
}
INTEGRATION DECISIONinvalid_newsroom_request
CALLER ACTION
Rebuild the request from the live OpenAPI operation and correct the rejected method, media type, header, parameter, or body field.
RETRY SAFETY
Do not retry the same invalid request. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions.
STATE RECONCILIATION
Compare the submitted values with the documented constraints before another call. Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.
503The authoritative Core publication ledger is unavailable.Dependency unavailable or outcome uncertain · JSON RESPONSE+
{
  "code": "newsroom_unavailable",
  "message": "The authoritative Core publication ledger is unavailable."
}
INTEGRATION DECISIONnewsroom_unavailable
CALLER ACTION
Preserve the exact request and treat the outcome as uncertain until authoritative state proves whether it committed.
RETRY SAFETY
Reconcile before retrying. For one logical mutation, retain the same Idempotency-Key and byte-equivalent request. Never reuse that key for changed instructions. Use bounded backoff with jitter.
STATE RECONCILIATION
Refresh the exact managed resource and its tenant, role, policy, version, workload, and audit state before another administrative action.
ESCALATE WHEN
Escalate when tenant binding, administrator role, step-up purpose, control version, workload state, or audit evidence remains ambiguous.

OPERATIONAL NOTES

Security and lifecycle guarantees

  • Creation always remains DRAFT. editorial_date is proposed metadata and does not schedule, publish, deploy, or syndicate the article.
  • Use only documented structured content blocks. paragraph, heading, quote, list, and callout have typed fields; scripts, credentials, raw HTML, arbitrary objects, and unknown request fields fail closed.
  • author_name is a public byline, never authority. The bearer-derived authenticated profile is the actor retained by the Core publication ledger.
  • Reuse the same Idempotency-Key only for a byte-equivalent retry of one logical draft. Preserve article_uuid, revision, content_commitment, revision_uuid, and proof event hashes after success.
DOCUMENTATION STATUS

This route is implemented in canonical gateway source and appears in the production OpenAPI snapshot observed 2026-09-11T06:35:11.572Z. Authentication, tenant, feature, venue, and market policy still apply.

Verify the exact production OpenAPI operation Return to the V2 directory