Authentication
Every request to the Public API requires a bearer token in the Authorization header. Tokens are scoped to a single project, so make sure you create the token in the correct project.
Creating an Access Token
- Open the Livingdocs Editor and navigate to your project
- Go to Menu > Preferences > Project Admin
- In the sidebar, select Api Clients
- Click Add Api Client
- Set a name, optional description, expiration date, and permissions
- Click Create and copy the generated token
One Token per Application
Create a separate token for each application that accesses Livingdocs rather than sharing a single token across systems. This has several benefits:
- Independent rotation — Teams can rotate tokens on their own schedule without coordinating across applications
- Deprecation tracking — The Livingdocs Editor shows deprecated endpoint usage per token, so you can see exactly which application needs updating (see API Versioning)
- Clear audit trail — For applications that write data, the token is visible as the actor in document history, "last changed by", and other audit surfaces. A descriptive token name makes it easy to trace which system made a change.
Token Scopes
Each token has one or both of these scopes:
| Scope | Grants access to |
|---|---|
public-api:read | Read endpoints — publications, media library, project config |
public-api:write | Write endpoints — document commands, imports, media updates |
Choose the minimal scope your integration needs.
Always set an expiration date on your tokens and rotate them regularly. Avoid long-lived tokens without expiry, especially for production integrations.
Making Authenticated Requests
Include the token in the Authorization header of every request:
Authorization: Bearer ey1234
Here is a complete example using curl:
ACCESS_TOKEN=ey1234
curl -k -X GET "https://server.livingdocs.io/api/2026-01/projectConfig" \
-H "Authorization: Bearer $ACCESS_TOKEN"
Or using axios in Node.js:
const axios = require('axios').create({
baseURL: 'https://server.livingdocs.io/api/2026-01',
timeout: 20000,
headers: {Authorization: 'Bearer ey1234'}
})
const result = await axios.get('/projectConfig')
Error Responses
The most common authentication errors are:
- 401 Unauthorized — The token is missing, malformed, or expired. Generate a new token in the project settings.
- 403 Forbidden — The token is valid but lacks the required scope. Check the token permissions and ensure the correct scope is assigned.
See Common Errors for the full list of status codes and example response bodies.
Next Steps
- Pagination — Navigate through large result sets
- Common Errors — Full list of error responses