API Docs
Integrate Manuscr into your applications with our REST and GraphQL APIs.
Authentication
All API requests require an API key passed in the Authorization header.
Request Header
Authorization: Bearer your-api-key-here Content-Type: application/json
Generate API keys from the Manuscr admin panel under Settings → API Keys.
REST API
Every collection in Manuscr automatically generates REST endpoints.
GET
/api/pagesList all pages (paginated)GET
/api/pages/:idGet a single page by IDPOST
/api/pagesCreate a new pagePATCH
/api/pages/:idUpdate an existing pageDELETE
/api/pages/:idDelete a pageExample: List Pages
curl
curl -X GET https://manuscr.com/api/pages \ -H "Authorization: Bearer your-api-key" \ -H "Content-Type: application/json"
Response
JSON
{
"docs": [
{
"id": "abc123",
"title": "Homepage",
"slug": "home",
"content": { ... },
"site": "kenniscapital",
"status": "published",
"createdAt": "2026-03-28T10:00:00Z",
"updatedAt": "2026-03-31T14:30:00Z"
}
],
"totalDocs": 24,
"page": 1,
"totalPages": 3,
"hasNextPage": true
}GraphQL API
Query exactly the data you need with GraphQL. Endpoint: /api/graphql
Example Query
GraphQL
query {
Pages(where: { site: { equals: "kenniscapital" } }) {
docs {
id
title
slug
status
}
totalDocs
}
}TypeScript SDK
Install the Manuscr client SDK for type-safe API access.
Install
npm install @kennis/cms-client
Usage
TypeScript
import { ManuscrClient } from '@kennis/cms-client';
const cms = new ManuscrClient({
baseURL: 'https://manuscr.com',
apiKey: process.env.MANUSCR_API_KEY,
});
// List pages for a specific site
const pages = await cms.pages.find({
where: { site: { equals: 'kenniscapital' } },
limit: 10,
});
// Get a single page by slug
const homepage = await cms.pages.findOne({
where: { slug: { equals: 'home' } },
});
// Create a form submission
await cms.formSubmissions.create({
data: {
form: 'contact-form-id',
submissionData: {
name: 'John Smith',
email: '[email protected]',
message: 'Hello!',
},
},
});