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:

ResourceEndpointsDescription
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:

ParameterTypeDefaultDescription
limitinteger50Number of items to return (max 100)
cursorstringCursor 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.