jeCheckDevelopers
Get an API key

Help center

Search and read the jeCheck help center (jecheck.io/docs): how features work, where settings are, rules for scores, permissions and plans. Articles are returned in Markdown, in English by default. Available to every token.

GETList help sections and articles

GET /help/sections

The table of contents of the help center: sections in display order with their articles.

Token scoperead
Permission Any employee; results follow the token's visibility
MCP toolhelp_sections · read-only

Query parameters

locale string
Language of the articles; falls back to English when the language has no articles. Default en.
enrukkuzkahysrde

Responses

StatusDescription
200OK
401unauthorized — Missing, invalid, revoked or expired token
403forbidden · insufficient_scope · plan_required — Plan without API access
422validation_failed — Invalid parameters — see error.fields
429rate_limited — Too many requests — retry after Retry-After seconds
Request
curl 'https://app.jecheck.io/api/ext/v1/help/sections?locale=en' \
  -H 'Authorization: Bearer $JECHECK_TOKEN'
const res = await fetch('https://app.jecheck.io/api/ext/v1/help/sections?locale=en', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.JECHECK_TOKEN}`,
  },
});
const { data } = await res.json();
import os, requests

res = requests.get(
    "https://app.jecheck.io/api/ext/v1/help/sections",
    headers={"Authorization": f"Bearer {os.environ['JECHECK_TOKEN']}"},
    params={"locale":"en"},
)
res.raise_for_status()
data = res.json()["data"]
$client = new GuzzleHttp\Client(['base_uri' => 'https://app.jecheck.io/api/ext/v1/']);

$res = $client->request('GET', 'help/sections', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('JECHECK_TOKEN')],
    'query' => [
        'locale' => 'en',
    ],
]);
$data = json_decode($res->getBody(), true)['data'];
{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "help_sections",
        "arguments": {
            "locale": "en"
        }
    }
}
Response 200
{
  "data": [
    {
      "key": "tasks",
      "title": "Tasks",
      "app_url": "https://app.jecheck.io/ui/tasks",
      "articles": [
        {
          "section": "tasks",
          "slug": "statuses",
          "title": "Task statuses",
          "description": "What each task status means and who can move a task.",
          "updated": "2026-10-17",
          "reading_time_minutes": 3,
          "url": "https://jecheck.io/en/docs/tasks/statuses"
        }
      ]
    }
  ]
}

GETRead a help article

GET /help/articles/{section}/{slug}

Full article in Markdown. section and slug come from help.sections or help.search results.

Token scoperead
Permission Any employee; results follow the token's visibility
MCP toolhelp_article · read-only

Path parameters

section string Required
Section key, e.g. tasks. Maximum length 64.
slug string Required
Article slug, e.g. statuses. Maximum length 128.

Query parameters

locale string
Language of the articles; falls back to English when the language has no articles. Default en.
enrukkuzkahysrde

Responses

StatusDescription
200OK
401unauthorized — Missing, invalid, revoked or expired token
403forbidden · insufficient_scope · plan_required — Plan without API access
404not_found — The record does not exist or is not visible to the token
422validation_failed — Invalid parameters — see error.fields
429rate_limited — Too many requests — retry after Retry-After seconds
Request
curl 'https://app.jecheck.io/api/ext/v1/help/articles/string/string?locale=en' \
  -H 'Authorization: Bearer $JECHECK_TOKEN'
const res = await fetch('https://app.jecheck.io/api/ext/v1/help/articles/string/string?locale=en', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.JECHECK_TOKEN}`,
  },
});
const { data } = await res.json();
import os, requests

res = requests.get(
    "https://app.jecheck.io/api/ext/v1/help/articles/string/string",
    headers={"Authorization": f"Bearer {os.environ['JECHECK_TOKEN']}"},
    params={"locale":"en"},
)
res.raise_for_status()
data = res.json()["data"]
$client = new GuzzleHttp\Client(['base_uri' => 'https://app.jecheck.io/api/ext/v1/']);

$res = $client->request('GET', 'help/articles/string/string', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('JECHECK_TOKEN')],
    'query' => [
        'locale' => 'en',
    ],
]);
$data = json_decode($res->getBody(), true)['data'];
{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "help_article",
        "arguments": {
            "section": "string",
            "slug": "string",
            "locale": "en"
        }
    }
}
Response 200
{
  "data": {
    "section": "tasks",
    "slug": "statuses",
    "title": "Task statuses",
    "description": "What each task status means and who can move a task.",
    "updated": "2026-10-17",
    "reading_time_minutes": 3,
    "url": "https://jecheck.io/en/docs/tasks/statuses",
    "markdown": "Every task moves through statuses…\n\n## New\n\nThe task is created…"
  }
}