Skip to content
LydieDevelopers
Menu

Create a document

View as Markdown
POST/v1/documents

Creates a document in a workspace, optionally under a parent and with an initial Markdown body. Without afterId/beforeId it is appended as the last child.

docs:writeUndoable
Request
curl -X POST "https://api.lydie.co/v1/documents" \
  -H "Authorization: Bearer $LYDIE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "workspaceId": "01JCQ3TZ0WJ8K4M2X7T9R6N1PA",
    "title": "Meeting notes",
    "markdown": "# Meeting notes\n\n- Ship the developer docs"
  }'

Body

  • workspaceIdstringrequired· 1–64 chars
  • idULID

    Client-minted id. Generated when omitted.

  • parentIdULIDor null

    Default null

  • titlestring· 1–255 chars

    Default "Untitled"

  • Default {}

  • markdownstring

    Initial body as Lydie Markdown.

  • teamspaceIdstringor null· 1–64 chars

    Hosted: the teamspace a top-level page goes into (null or absent: the creator's private section). Ignored for child pages, which share their parent's space, and in local mode.

  • Place directly after this sibling.

  • Place directly before this sibling.

  • sortKeystring· 1–256 chars

    Explicit fractional key. Overrides afterId/beforeId; recorded by clients so replays converge.

Response

200
{
  "id": "01JCQ3V5MZ8G4ZK2X7T9R6N1PB",
  "workspaceId": "01JCQ3TZ0WJ8K4M2X7T9R6N1PA",
  "parentId": null,
  "title": "Meeting notes",
  "sortKey": "a0",
  "properties": {
    "status": "draft"
  },
  "createdAt": "2026-11-12T09:30:00.000Z",
  "updatedAt": "2026-11-12T09:30:00.000Z",
  "deletedAt": null,
  "createdBy": null,
  "updatedBy": null
}

Errors use one envelope for every endpoint. See Errors and versions.