Authorizations
- Authorization string required header
All requests require a Bearer token in the
Authorizationheader. API keys are prefixed withfdsk_and should be kept secret. You can generate and manage keys from the Developer settings page.Keys can be restricted to any subset of these scopes (each endpoint lists the scope it requires via
x-required-scopes):content:read: Read and search help center articles, collections, sections, and translationscontent:write: Create and edit article drafts, users, tasks; move articles and collectionscontent:publish: Publish, unpublish, restore, and trash content (make changes live)analytics:read: Read help center reporting, analytics, and article feedbackconversations:read: Read AI assistant conversations and transcriptswebhooks:manage: Create and manage outbound webhook subscriptions
Granting
content:writeorcontent:publishimpliescontent:read. Keys minted before scoping have null scopes = full access (legacy mode).
Path Parameters
- id string required
Resource ID for the requested entity. Example: art_01JXY9AZK4KV
Request Body
application/json- title string
Updated article title. Content edit: staged into an open draft, not published.
- content any
Updated article body (Tiptap JSON). Content edit: staged into an open draft, not published. Mutually exclusive with
markdown. - markdown string
Updated article body as Markdown. Content edit: staged into an open draft, not published. Mutually exclusive with
content. - collectionId string | null
Updated collection assignment (placement, applied immediately).
- sectionId string
Updated section assignment (placement, applied immediately).
- keywords string
Updated SEO keywords.
- metaDescription string
Updated SEO meta description.
- ogImage string
Updated Open Graph image URL.
- listed string enum enum
Listing visibility:
everywhere(default),unlisted(reachable by link only),hidden, orassistant_only. Allowed values: everywhere, unlisted, hidden, assistant_only. - noindex boolean
Whether search engines should skip this article.
- slug string
Updated custom slug. If changed from the existing slug, custom slug mode is enabled.
Response
application/json- id string
Ferndesk article ID (
art_...). - title string
Primary article title.
- slug string | null
URL slug for the article.
- contentHtml string
Article content rendered as HTML. Present when
format=html(default). - contentMarkdown string
Article content rendered as Markdown. Present when
format=markdown. - contentJson any | null
Raw stored ProseMirror/Tiptap document. Present when
format=json. Uses Ferndesk’s ProseMirror schema (custom nodes likecallout,steps,cards) and is the lossless representation. - url string (uri) | null
Canonical public URL for this article.
- sectionId string | null
Section ID containing the article.
- collectionId string | null
Optional collection grouping ID for the article.
- status string | null
Article publish status.
- publishedAt string | null
Timestamp when the article was published.
- createdAt string
ISO 8601 timestamp in UTC.
- updatedAt string
ISO 8601 timestamp in UTC.
- published boolean
Whether the change is live. Content edits stage into an open draft (
published: false); metadata/placement changes apply immediately. - draft_id string | null
The open draft holding staged content edits, if any.
- message string
Human-readable note about staged vs. applied changes.