Help articlesOverview

Help articles

Articles are the content your users read. Use the API to list, search, retrieve, create, update, and delete them.

An article is the content unit customers read on your help center — a how-to, an FAQ answer, a troubleshooting guide. Articles carry an HTML body, a draft/published status, and per-visitor helpfulness and view counts.

Every Help Center endpoint requires the knowledgebase feature on your plan — reads included, not just writes. Calls from an organization without it return 403.

One parent, never two

Every article is filed under exactly one parent:

  • a category, via category_id — the usual case, and
  • a collection, via collection_id — for a standalone topic that doesn't need a category.

Sending both, or neither, is a 422. The rule is enforced in the database itself, so an article can never end up in an ambiguous state.

Because nothing is denormalized, moving a category between collections can never leave an article's breadcrumbs stale — the collection is always resolved through whichever parent is set.

Public visibility

An article is visible on your public help center and in-app widget only when both conditions hold:

FieldRequired value
status_code"published"
show_on_portaltrue

A published article with show_on_portal: false is effectively unlisted — useful for content you link to directly but don't want browsable.

The help article object

Returned by List. Retrieve returns these fields plus content, author_id, collection, category, and related_articles.

idstring
Required

A unique identifier for the article (UUID).

collection_idstring

UUID of the parent collection when the article is filed directly in one. null otherwise.

category_idstring

UUID of the parent category. null when the article is filed directly in a collection.

titlestring
Required

The article's title.

slugstring
Required

URL-safe identifier, unique within your organization. The last segment of the public URL.

excerptstring

Short summary shown in listings and search results. May be null.

status_codestring
Required

Either "draft" or "published".

show_on_portalboolean
Required

Whether the article may appear on your public help center and widget. Must be true and status_code must be "published" for it to be visible.

favouriteboolean
Required

An internal star for your team. Never shown to customers and never exposed on the public portal.

seq_numberstring

The article's curated position, as a decimal string. Read-only — reorder by drag-and-drop in the dashboard.

helpful_countinteger
Required

How many distinct visitors voted "yes" on "was this helpful?". Derived, not a stored counter.

not_helpful_countinteger
Required

How many distinct visitors voted "no".

view_countinteger
Required

How many distinct people have read the article. A visitor re-opening it never inflates this.

published_atstring

ISO 8601 timestamp of first publication. null while the article is still a draft.

created_atstring
Required

ISO 8601 timestamp at which the article was created.

updated_atstring
Required

ISO 8601 timestamp of the most recent change.

Example help article object

{
  "id": "aa1c3ef8-b8cd-cd15-01ba-77bb77bb77bb",
  "collection_id": null,
  "category_id": "884c3ef8-b8cd-cd15-01ba-44bb44bb44bb",
  "title": "Reset your password",
  "slug": "reset-your-password",
  "excerpt": "How to reset your password from the sign-in screen.",
  "status_code": "published",
  "show_on_portal": true,
  "favourite": false,
  "seq_number": "1000.0000",
  "helpful_count": 42,
  "not_helpful_count": 3,
  "view_count": 512,
  "published_at": "2026-08-02T11:00:00Z",
  "created_at": "2026-08-01T10:20:00",
  "updated_at": "2026-08-05T14:02:00"
}

Engagement metrics

helpful_count, not_helpful_count, and view_count are derived from the underlying vote and view records rather than stored as counters, and all three count distinct people:

  • A visitor can vote helpful, switch to not-helpful, or retract — but never stack votes.
  • A visitor re-reading an article never increments view_count twice.

These are read-only through the API. Votes and views are visitor actions recorded by the portal and widget; there is no endpoint to write them.

Each article can carry a curated, ordered list of related articles, shown beneath it on the portal. Set the whole list at once with related_article_ids on create or update:

  • The order you send is the order displayed.
  • Every id must be an article in your organization, or the call fails with 400.
  • On update, the field replaces the entire set. Send [] to clear it; omit it to leave it alone.
  • Links to drafts and unlisted articles are kept but simply not surfaced publicly.

Content format

content is HTML — the same format the dashboard's rich-text editor produces. Send well-formed markup (<p>, <h2>, <ul>, <a>, <img>, <code>, and so on). There is no Markdown conversion; if you author in Markdown, render it to HTML before sending.

What you can do