Create a document
POST
/api/v1/documents
const url = 'https://your-orimora-instance.example.com/api/v1/documents';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"title":"example","collectionId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","parentDocumentId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","text":"example","content":"example","publish":true,"tags":["example"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://your-orimora-instance.example.com/api/v1/documents \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "title": "example", "collectionId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "parentDocumentId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "text": "example", "content": "example", "publish": true, "tags": [ "example" ] }'Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ” Media type application/json
object
title
Default: “Untitled”
string
collectionId
required
string format: uuid
parentDocumentId
string format: uuid
text
Markdown body — converted to TipTap JSON internally
string
content
TipTap / ProseMirror JSON document. Use instead of text when you already have structured JSON.
publish
Publish immediately when true
boolean
tags
Flat tag names to set (create-or-reuse by normalized name). Replaces the document’s unrestricted tags; omit to leave tags untouched. Restricted tags are never set via the API.
Array<string>
Example generated
{ "title": "example", "collectionId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "parentDocumentId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "text": "example", "content": "example", "publish": true, "tags": [ "example" ]}Responses
Section titled “ Responses ”Created document
Media type application/json
object
data
required
object
id
required
string format: uuid
title
required
Document title
string
emoji
required
Optional emoji prefix for the document icon
string | null
text
required
Plain-text content (read-only, derived from body)
string | null
collectionId
required
string | null format: uuid
parentDocumentId
required
string | null format: uuid
teamId
required
string format: uuid
createdById
required
string | null format: uuid
lastModifiedById
required
string | null format: uuid
publishedAt
required
Null = draft
string | null format: date-time
archivedAt
required
string | null format: date-time
deletedAt
required
string | null format: date-time
revision
required
integer
tags
required
The document’s unrestricted tag names (restricted/ACL tags are excluded)
Array<string>
sortOrder
required
number
fullWidth
required
boolean
collaborativeId
required
string | null
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
Example generated
{ "data": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "title": "example", "emoji": "example", "text": "example", "collectionId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "parentDocumentId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "teamId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "createdById": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "lastModifiedById": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "publishedAt": "2026-04-15T12:00:00Z", "archivedAt": "2026-04-15T12:00:00Z", "deletedAt": "2026-04-15T12:00:00Z", "revision": 1, "tags": [ "example" ], "sortOrder": 1, "fullWidth": true, "collaborativeId": "example", "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z" }}Validation error
Media type application/json
object
error
required
Human-readable error message
string
Example generated
{ "error": "example"}Unauthorized
Media type application/json
object
error
required
Human-readable error message
string
Example generated
{ "error": "example"}