Horbit Developers
Comments

Leaves a comment

POST
/v1/public/blog/posts/{post}/comments

Returns the comment and its status: approved (live now) or pending (waiting for a moderator) — show the reader which. Spam is accepted silently and reported as pending.

Pass parentId to reply. Render website as a hidden honeypot field and leave it empty. Fails with 403 when comments are closed on the post, 409 on a duplicate.

Authorization

x-api-key
headerx-api-key<token>

A tenant API key — secret (htk_…) or, where allowed, publishable (hpk_…).

Path Parameters

post*string

The post's slug (recommended) or id.

Request Body

application/json
  1. body
body*string
authorName*string
authorEmail?string

Never shown publicly.

authorUrl?string
parentId?string

The comment this replies to.

visitorId?string

Your own stable, anonymous id for the reader (e.g. a uuid kept in localStorage). Used to remember their reactions. Falls back to ip + user agent.

website?string

Honeypot — render as a hidden input and leave empty. Anything here marks the comment as spam.

Response Body

Received. status is approved (live) or pending (awaiting a moderator).

response?unknownapplication/json
curl -X POST 'https://api.horbit.ng/v1/public/blog/posts/five-lessons-open-data-hackathon/comments' \  -H 'Content-Type: application/json' \  -d '{  "body": "Great write-up — the bit about licences was new to me.",  "authorName": "Ada Obi"}'
{  "status": true,  "message": "Comment received — it will appear once approved",  "data": {    "id": "c0ffee00c0ffee00c0ffee00c0ffee00",    "parentId": null,    "authorName": "Chidi Okafor",    "body": "Licences first — exactly what our lab needed to hear.",    "status": "pending",    "createdAt": "2026-10-25T11:02:00.000Z"  }}