InkLoom provides a REST API that gives you full programmatic access to your documentation projects. Create pages, trigger deployments, manage assets, configure webhooks, and more — all from your own code, scripts, or CI/CD pipelines.
Base URL
All API requests are made to:
``javascript https://app.inkloom.dev/api/v1 `
The API is versioned via the URL path. The current version is v1. All responses include an X-API-Version header with the current release date:
javascript
X-API-Version: 2026-02-01
`
Available Endpoints
The API is organized around your projects and their resources. Every resource endpoint is nested under a project:
Resource Endpoints Description
Projects /projectsCreate, list, get, update, and delete documentation projects
Pages /projects/{projectId}/pagesCreate, list, get, update, and delete documentation pages
Page Publish /projects/{projectId}/pages/{pageId}/publishPublish a page
Page Content /projects/{projectId}/pages/{pageId}/contentUpdate page content directly
Page Versions /projects/{projectId}/pages/{pageId}/versionsList versions, get a specific version, restore a previous version
Bulk Pages /projects/{projectId}/pages/bulkPerform bulk operations on multiple pages at once
Folders /projects/{projectId}/foldersCreate, list, get, update, and delete folders
Branches /projects/{projectId}/branchesCreate, list, get, and delete branches
Deployments /projects/{projectId}/deploymentsCreate, list, and get deployments; rollback to a previous deployment
Domains /projects/{projectId}/domainsAdd, list, get, and remove custom domains
Assets /projects/{projectId}/assetsUpload, list, get, and delete media assets
Webhooks /projects/{projectId}/webhooksCreate, list, get, update, and delete webhooks
AI Generation /projects/{projectId}/generateCreate AI documentation jobs, check status, list generated pages, approve or cancel
OpenAPI /projects/{projectId}/openapiUpload or retrieve your OpenAPI specification
Settings /projects/{projectId}/settingsGet and update project settings
Plan /projects/{projectId}/planGet or change the project's billing plan
There is also a standalone health endpoint at /api/health that requires no authentication.
Response Format
All successful responses return a JSON object with a data field containing the resource or array of resources:
Single resource:
`json
{
"data": {
"id": "j57abc123def",
"name": "My Project",
"slug": "my-project",
"createdAt": "2026-03-01T12:00:00.000Z"
}
}
`
List of resources:
`json
{
"data": [
{ "id": "j57abc123def", "name": "My Project" },
{ "id": "j57def456ghi", "name": "Another Project" }
],
"pagination": {
"cursor": "j57def456ghi",
"hasMore": true
}
}
`
Error responses use a different format — see Errors for details.
Pagination
List endpoints return paginated results using cursor-based pagination. Use the limit and cursor query parameters to navigate through pages of results:
Parameter Type Default Description
limitinteger 50 Number of items to return (max 100)
cursorstring — Cursor from a previous response's pagination.cursor to fetch the next page
When pagination.hasMore is true, pass the returned cursor value in your next request to get the next page:
`bash
First page
curl https://app.inkloom.dev/api/v1/projects?limit=10 \
-H "Authorization: Bearer ik_live_user_..."
Next page
curl https://app.inkloom.dev/api/v1/projects?limit=10&cursor=j57def456ghi \
-H "Authorization: Bearer ik_live_user_..."
`
Idempotency
For mutation requests (POST, PUT, PATCH, DELETE), you can include an Idempotency-Key header to ensure the operation is only applied once — even if you retry the request due to a network error:
`bash
curl -X POST https://app.inkloom.dev/api/v1/projects \
-H "Authorization: Bearer ik_live_user_..." \
-H "Idempotency-Key: my-unique-key-abc123" \
-H "Content-Type: application/json" \
-d '{"name": "My Project"}'
`
If you send the same Idempotency-Key again, the API returns the cached response from the first request instead of creating a duplicate resource.
Idempotency keys must be between 1 and 256 characters. Server errors (5xx) are not cached, so you can safely retry failed requests with the same key.
Quick Start
Here's how to create a page in an existing project:
`bash
List your projects
curl https://app.inkloom.dev/api/v1/projects \
-H "Authorization: Bearer ik_live_user_..."
Create a new page
curl -X POST https://app.inkloom.dev/api/v1/projects/{projectId}/pages \
-H "Authorization: Bearer ik_live_user_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Getting Started",
"slug": "getting-started",
"content": "# Getting Started\n\nWelcome to our docs."
}'
Deploy the project
curl -X POST https://app.inkloom.dev/api/v1/projects/{projectId}/deployments \
-H "Authorization: Bearer ik_live_user_..." \
-H "Content-Type: application/json" \
-d '{"target": "production"}'
``
More
API keys, bearer tokens, and scopes.
Error response format and status codes.
Request limits and how to handle throttling.
API access requires your project to be on the Pro plan or higher. Requests to projects on the Free plan return a 402 error with details about upgrading.