Skip to main content
TypeScript-first, ESM-only, with no runtime dependencies. Works in Node.js 18+ and in any browser that supports fetch.
This is the most complete SDK: it is generated from the OpenAPI spec, so it covers every public operation, including AI conversation, meta and tags.

Install

Initialize

CMS.init takes only the API key and options — the key is sent as the x-api-key header on every request. There is no header hook, by design.

Make a request

Read operations that take filters take a single options object:
Single-resource and search operations use the same shape:

Write operations

Error handling

Errors are return values, not exceptions, unless you opt in:
To throw a typed ApiError instead:
In an async call, throwOnError rejects the returned promise rather than throwing synchronously — wrap the call in try/catch or .catch().

Timeouts and cancellation

For a per-request deadline, pass an AbortSignal as the second argument:

Escaping the resource wrapper

cms.raw is the underlying HTTP client — use it for an operation that has not been added to a resource yet, or to send a request shape the wrapper does not cover:

Resources

article, author, category, subcategory, form, formSubmission, language, tag, report, ai, aiConversation, raw.

All operations

Browse the API reference for the full endpoint list.