Skip to content

Create a document

POST
/api/v1/documents
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" ] }'
Media type application/json
object
title

Default: “Untitled”

string
<= 255 characters
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"
]
}

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"
}