a-XXXXXXXX), or its UUID. See Getting an article ID.
List articles
This command lists published articles by default; pass--state all to include drafts. Use this when you want to review what exists, filter by category or state, or collect IDs for another command.
Sample output (--json)
--state takes draft, published, archived or all. --search-term is a partial, case-insensitive match on title, slug and body; with --state draft or all it also matches unpublished draft revisions. It is not relevance ranked, so use search for that. --sort-by takes title, slug, state, category_name, views_count, created_at or updated_at, and --order-by takes asc or desc.
Search articles
This command runs a full-text search across your published articles, ranked by relevance. Use this when you know roughly what an article says but not where it lives;articles list --search-term filters the same corpus but returns the full list shape. For fields and response details, see the API reference.
The table shows the article ID, the matched snippet and the article URL. The snippet is flattened to plain text, so the highlight markup and the article’s own line breaks never break the column alignment.
--json and --toon carry every field the API returns, including title, category, category_url, matched_title and matched_category.
Sample output (--json)
Show an article
This command shows the full record for one article, including its HTML body, author, category, and tags. Use this when you want to read or export an article after finding its ID fromarticles list or search.
<id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Sample output (--json)
Create an article
This command creates an article in a category. Use this when you want to publish content from a script or a content pipeline instead of the editor.--category is the category path, most specific first: "Installation,Getting Started" places the article in Installation, whose parent is Getting Started. Names are matched, not IDs or slugs. --tags takes comma-separated tag names, and tags that do not exist are created. Omit --state and the article is created as a draft. Creating with --state published needs the Manage articles permission.
Sample output (--json)
--quiet, this prints only the new article’s ID.
Update an article
This command updates an existing article’s title, body, slug, state, or category. Use this to publish a draft, correct content, rename an article’s URL, or move an article to another category.<id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Only the flags you pass are changed.
--tags replaces all tags, and an empty value removes them all. --related-articles replaces all related articles with the given IDs, slugs or permalink identifiers, and an empty value removes them all; an unknown article changes nothing. --note sets the internal note, and an empty value deletes it. --slug can be modified only while the article is published. --category is the category path, most specific first, and moves the article; categories that do not exist are created.
Drafts need the Modify articles permission. Publishing, and any change to an already published article, also needs the Manage articles permission.
Sample output (--json)
Unlisted links
An unlisted link is a secret URL that lets anyone view a published article without signing in. For fields and response details, see the API reference.Get an unlisted link
This command shows the unlisted link an article already has. It never creates a link, so it fails when the article has none or the link has expired. Use this when you want to share a published article outside your knowledge base.<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Sample output (--json)
regenerate. The article must be published; a draft returns an error.
Regenerate an unlisted link
This command issues a new unlisted link and invalidates the old URL immediately. Use this when a link has been shared too widely, or when you want the link to expire.<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
The presets
one_day, seven_days, and thirty_days compute the expiry on the server and reject --expiration-date. Use custom together with --expiration-date for an exact time; passing --expiration-date alone is treated as custom.
Sample output (--json)
Trash an article
This command moves an article to the trash. It stays there for 30 days before it is deleted for good. Needs the Manage articles permission. Useneetokb trash to restore it. A synced article cannot be trashed.
<id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Trash articles in bulk
This command moves up to 100 articles to the trash. If one cannot be trashed, none are.Archive and unarchive an article
Archiving turns an article into a draft and keeps it out of the public knowledge base. Unarchiving brings it back as a draft. List archived articles withneetokb articles list --state archived.
<id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Discard a draft
This command throws away the unpublished draft changes of a published article. The live version stays. An article that is not published has no live version to keep, so the command is refused; trash the article instead.<id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Clone an article
This command copies an article into a new draft titled<title> - CLONED - <timestamp>.
<id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Update articles in bulk
This command changes up to 100 articles at once. Give exactly one of--category-id, --state or --status. The change is all-or-nothing. --state also needs the Manage articles permission.
--state takes draft or published. --status takes archive or active.
Create articles in a batch
This command creates 1 to 25 articles from a JSON file, each with its own content. The file holds an array of articles, or an object with anarticles array. Each article takes the same fields as create. The articles are saved in order, so a later article can name an earlier article’s slug in related_article_ids. The change is all-or-nothing: if one article fails, nothing is saved and the error names that article, counting from 1. Publishing also needs the Manage articles permission.
articles.json
Update articles in a batch
This command updates 1 to 25 articles from a JSON file, each with its own changes. Each item names the article inarticle_id and gives at least one of title, html_content, slug, state, category, tags, related_article_ids or note. An article may appear only once. The change is all-or-nothing, like batch create. Use bulk update instead to apply one change to many articles.
changes.json
Schedules
A schedule publishes or unpublishes an article at a future time. Creating apublish schedule also needs the Manage articles permission.
<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Create a schedule
This command schedules a publish or unpublish.<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
The date must be in the future. When it has no offset, it is read in
--time-zone. An article can have one schedule of each kind, and when it has both, the unpublish time must not come after the publish time.
Delete a schedule
This command deletes a schedule.<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID<schedule-id>- Schedule ID fromschedules list
Article SEO settings
These commands show and change the SEO settings of one article. For the whole knowledge base, seeneetokb workspace seo.
<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Update article SEO settings
Only the flags you pass change.<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
--keywords replaces the whole list. The cover image and the Google Analytics ID are not available here.
Revisions
A revision is a saved earlier version of an article.<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID
Show a revision
This command shows a revision with its title and HTML content.<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID<revision-id>- Revision ID fromrevisions list
Restore a revision
This command copies a revision into the draft of an article. The live content does not change until you publish the draft. A synced article cannot be restored.<article-id>- Article slug, permalink identifier (a-XXXXXXXX), or UUID<revision-id>- Revision ID fromrevisions list