KB Articles

Updated 11 Oct, 2026 08:44 PM in API

Knowledge base articles are the help pages on your site, each in a section. With the API you can list and search them, read them in Markdown and HTML, and write, publish and delete them, for example to keep your knowledge base in step with docs you write elsewhere.

Examples use your token in $TENDER_TOKEN (see Authentication). Writing needs a token with Read and write access.

List articles

curl -H "Accept: application/vnd.tender-v1+json" \
     -H "Authorization: Bearer $TENDER_TOKEN" \
     https://api.tenderapp.com/yoursite/faqs
{
  "faqs": [
    {
      "title": "Welcome to Juniper",
      "permalink": "welcome-to-juniper",
      "created_at": "2026-06-11T06:47:11Z",
      "updated_at": "2026-06-11T06:47:11Z",
      "published_at": "2026-06-11T06:47:11Z",
      "keywords": "intro overview start",
      "beta": false,
      "important": false,
      "version": 1,
      "rating_positive": null,
      "rating_negative": null,
      "html_href": "https://yoursite.tenderapp.com/kb/getting-started/welcome-to-juniper",
      "href": "https://api.tenderapp.com/yoursite/faqs/5",
      "section_href": "https://api.tenderapp.com/yoursite/sections/3"
    }
  ],
  "offset": 0,
  "total": 13,
  "per_page": 30
}

Each article in the list has all its fields, body and formatted_body included (left out above). Articles come 30 to a page (?page=2 for the next).

The list has both published articles and drafts. For one kind only:

https://api.tenderapp.com/yoursite/faqs/published
https://api.tenderapp.com/yoursite/faqs/draft

For one section's articles, add ?section_id=5 or use the section's faqs_href (see Sections).

Search articles

faqs/search with a query searches titles, text and keywords:

curl -H "Accept: application/vnd.tender-v1+json" \
     -H "Authorization: Bearer $TENDER_TOKEN" \
     "https://api.tenderapp.com/yoursite/faqs/search?query=calendar"
{
  "faqs": [
    {
      "title": "Welcome to Juniper",
      "href": "https://api.tenderapp.com/yoursite/faqs/5",
      "html_href": "https://yoursite.tenderapp.com/kb/getting-started/welcome-to-juniper"
    },
    {
      "title": "Syncing with Google Calendar",
      "href": "https://api.tenderapp.com/yoursite/faqs/11",
      "html_href": "https://yoursite.tenderapp.com/kb/integrations/syncing-with-google-calendar"
    }
  ],
  "offset": 0,
  "total": 2,
  "per_page": 30
}
  • Only published articles are found; drafts aren't searched.
  • Results come in knowledge base order (section by section), not ranked by how well they match.
  • Add section_id to search one section, or use sections/5/search?query=....
  • If search is unavailable for a moment, you get an empty list rather than an error.

Get one article

An article's id is the number at the end of its href.

curl -H "Accept: application/vnd.tender-v1+json" \
     -H "Authorization: Bearer $TENDER_TOKEN" \
     https://api.tenderapp.com/yoursite/faqs/8
{
  "title": "Recurring tasks",
  "body": "Any task can repeat. Open the task, click the due date and choose **Repeat**.\n\n## How the next one is created\n\nThe next task appears when the current one is completed, or on its due date, whichever comes first.\nTimes follow the project's time zone, so a task due at 9:00 stays at 9:00 when daylight saving time changes.\n",
  "formatted_body": "<div><p>Any task can repeat. Open the task, click the due date and choose <strong>Repeat</strong>.</p>\n<h2><a name=\"how-the-next-one-is-created\" class=\"anchor\" href=\"#how-the-next-one-is-created\"></a>How the next one is created</h2>\n<p>The next task appears when the current one is completed, or on its due date, whichever comes first.<br>\nTimes follow the project's time zone, so a task due at 9:00 stays at 9:00 when daylight saving time changes.</p></div>",
  "permalink": "recurring-tasks",
  "created_at": "2026-07-11T06:47:11Z",
  "updated_at": "2026-07-11T06:47:11Z",
  "published_at": "2026-07-11T06:47:11Z",
  "keywords": "repeat recurring schedule weekly",
  "beta": false,
  "important": false,
  "version": 1,
  "rating_positive": 1,
  "rating_negative": 0,
  "html_href": "https://yoursite.tenderapp.com/kb/tasks-timelines/recurring-tasks",
  "href": "https://api.tenderapp.com/yoursite/faqs/8",
  "section_href": "https://api.tenderapp.com/yoursite/sections/4"
}

Article fields

Field What it is
title The article's title.
body The text as written, in Markdown.
formatted_body The text as HTML, the way your site shows it. Each heading has an anchor you can link to. Read only.
keywords Extra words people might search for, separated by spaces. Search looks at them as well as the title and text.
permalink The article's name in its web address, made from the title unless you set it.
published_at When the article was or will be published. A date in the future means it's a draft; drafts with no date of their own show 2028-01-01T00:00:00Z.
beta, important Only people with beta or important access see the article. An article in a beta or important section is always beta or important too.
version Goes up by one each time the title, text, keywords, permalink, section or flags change.
rating_positive, rating_negative How many people found it helpful, or not. null until it's rated. See KB Articles Ratings.
html_href The article on your site.
href This article in the API.
section_href Its section in the API.
created_at, updated_at When the article was written and last changed.

Create an article

POST to the section's articles with at least a title and a body. You can also send keywords, permalink, published_at, beta and important. Without published_at the article is a draft; you are recorded as its author.

curl -H "Accept: application/vnd.tender-v1+json" \
     -H "Authorization: Bearer $TENDER_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"title":"Sharing a dashboard","keywords":"dashboard share link",
          "body":"Open the dashboard and click **Share**.\n\n## Who can see it\n\nAnyone in your workspace can open a shared dashboard."}' \
     https://api.tenderapp.com/yoursite/sections/7/faqs
HTTP/1.1 201 Created
Location: http://api.tenderapp.com/yoursite/faqs/18

{
  "title": "Sharing a dashboard",
  "body": "Open the dashboard and click **Share**.\n\n## Who can see it\n\nAnyone in your workspace can open a shared dashboard.",
  "formatted_body": "<div><p>Open the dashboard and click <strong>Share</strong>.</p>\n<h2><a name=\"who-can-see-it\" class=\"anchor\" href=\"#who-can-see-it\"></a>Who can see it</h2>\n<p>Anyone in your workspace can open a shared dashboard.</p></div>",
  "permalink": "sharing-a-dashboard",
  "published_at": "2028-01-01T00:00:00Z",
  "keywords": "dashboard share link",
  "version": 1,
  "html_href": "https://yoursite.tenderapp.com/kb/reports-dashboards/sharing-a-dashboard",
  "href": "https://api.tenderapp.com/yoursite/faqs/18",
  "section_href": "https://api.tenderapp.com/yoursite/sections/7"
}

You can also POST to /faqs with the section's id as section_id in the body. Without a section you get a 422.

Update an article

PUT the fields you want to change. To publish a draft, set published_at to now or a date in the past:

curl -X PUT \
     -H "Accept: application/vnd.tender-v1+json" \
     -H "Authorization: Bearer $TENDER_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"published_at":"2026-10-09T07:15:00Z","keywords":"dashboard share link public"}' \
     https://api.tenderapp.com/yoursite/faqs/18
{
  "title": "Sharing a dashboard",
  "permalink": "sharing-a-dashboard",
  "published_at": "2026-10-09T07:15:00Z",
  "keywords": "dashboard share link public",
  "version": 2,
  "href": "https://api.tenderapp.com/yoursite/faqs/18"
}
  • A published_at in the future schedules the article: it stays a draft until then.
  • Send section_id to move the article to another section.
  • To make sure you don't overwrite someone else's edit, send the version you last read. If the article has changed since, nothing is saved and you get a 422:
{
  " ": ["There is a newer version of this article. Saving again will override the latest changes"]
}

Get the article again, then send your change with its new version.

Delete an article

curl -X DELETE \
     -H "Accept: application/vnd.tender-v1+json" \
     -H "Authorization: Bearer $TENDER_TOKEN" \
     https://api.tenderapp.com/yoursite/faqs/18
{}

The article's ratings are deleted with it.

More from the knowledge base