Skip to main content
The Learn Hub provides curated articles to help users get the most out of HelpGenie. Progress is tracked per user — viewing an article automatically updates last_viewed_at, and users can explicitly mark articles complete or incomplete. Only published articles are returned.

Actions

all / list

Returns a paginated list of published articles with the current user’s progress joined. Parameters
FieldTypeRequiredDescription
limitnumberNoMax results, default 100, max 500
offsetnumberNoPagination offset, default 0
filters.startHerebooleanNoOnly return “Start Here” articles
filters.categorystringNoFilter by category slug
filters.searchTermstringNoCase-insensitive title search
startHerebooleanNoShorthand for filters.startHere
Response
{
  "articles": [
    {
      "id": "article-uuid",
      "title": "Getting started with your first Genie",
      "slug": "getting-started-first-genie",
      "category": "setup",
      "is_start_here": true,
      "order_index": 1,
      "completed_at": null,
      "last_viewed_at": "2024-01-05T10:00:00Z"
    }
  ],
  "count": 24,
  "limit": 100,
  "offset": 0
}

get

Returns a single published article by slug (preferred) or id. Automatically records last_viewed_at for the current user as a side effect. Parameters
FieldTypeRequiredDescription
slugstringConditionalArticle slug — preferred lookup key
idstringConditionalArticle UUID — used if slug is not provided
At least one of slug or id is required. Response
{
  "article": {
    "id": "article-uuid",
    "title": "Getting started with your first Genie",
    "slug": "getting-started-first-genie",
    "category": "setup",
    "is_start_here": true,
    "order_index": 1,
    "body_markdown": "## Introduction\n\nWelcome to HelpGenie...",
    "completed_at": null,
    "last_viewed_at": "2024-01-07T10:00:00Z"
  }
}

progress

Returns all progress records for the current user — one entry per article they have viewed or completed. Parameters — none Response
{
  "progress": [
    {
      "article_id": "article-uuid",
      "completed_at": "2024-01-06T09:00:00Z",
      "last_viewed_at": "2024-01-06T09:00:00Z"
    }
  ]
}

mark-complete

Marks an article as completed for the current user. Sets both completed_at and last_viewed_at to now. Parameters
FieldTypeRequiredDescription
idstringConditionalArticle UUID (request ID)
articleIdstringConditionalArticle UUID (data field) — used if id not provided
Response
{
  "success": true,
  "article_id": "article-uuid",
  "completed_at": "2024-01-07T10:00:00Z"
}

mark-incomplete

Clears the completed_at timestamp for an article, marking it as not completed. Parameters
FieldTypeRequiredDescription
idstringConditionalArticle UUID (request ID)
articleIdstringConditionalArticle UUID (data field)
Response
{
  "success": true,
  "article_id": "article-uuid"
}

Error codes

CodeMeaning
VALIDATION_ERRORMissing article ID or slug
NOT_FOUNDArticle not found or not published
INTERNAL_ERRORUnexpected server error