/api/v1/pagesCreate a page
Creates a page: a document that opens in the block editor. template fills it from a template, or content gives its Markdown. workspace and folder file it (members and up); parent puts it inside a page you can edit, with that page's workspace, folder and access. Unless it has a cover, or auto_cover is false, a cover is picked for it in the background.
Guide: Pages and the block editor
Code samples and Try itRequest body
#application/json, required
titlestringRequiredShown on the page and in link previews. 1–200 characters.
workspacestringFile it in this workspace: the workspace's id. 1–64 characters.
folderstringAn existing folder of
workspace: its id or its path, likeguides/setup. 1–400 characters.parentstringThe address of a page you can edit: the new page goes inside it, in its workspace and folder, with its access. Leave
workspaceandfolderout. 1–64 characters.templatestringA template's id, from List every template. Leave it out for a blank page. 1–64 characters.
contentstringThe document's Markdown. Up to 500,000 characters.
slugstringYour own address:
markdrop.in/<slug>. Random when left out;409when taken. 3–50 characters. Matches^[a-zA-Z0-9_-]+$.auto_coverbooleanfalse: no cover is picked for it. Defaulttrue.
Responses
#201Created. Returns the page asdocument, with itsslugandurl.401No token, or the token is revoked or mistyped.409slugis taken, or reserved. Nothing is created.422The request didn't validate.detaillists each problem, with where it is (loc) and why (msg).429Too many requests from your IP address. Wait the seconds inRetry-After.
201 response: 3 fields (PageCreateResponse)
documentobject51 fields inside
slugstringurlstringfolder_patharray of stringtitlestring | nullShown on the page and in link previews.
contentstringThe document's Markdown.
created_atstring (date-time)ISO 8601, for example
2026-11-30T12:00:00Z.updated_atstring (date-time)ISO 8601, for example
2026-11-30T12:00:00Z.expires_atstring (date-time) | nullISO 8601, for example
2026-11-30T12:00:00Z.viewsintegerDefault
0.revinteger | nullis_password_protectedbooleanDefault
false.is_ownedbooleanDefault
false.is_ownerbooleanDefault
false.idstring | nullrefstring | nullgoogle_doc_urlstring | nullgoogle_doc_stalebooleanDefault
false.vscode_syncedbooleanDefault
false.encryptedbooleanSet by clients that encrypt in the browser:
contentandtitleare already ciphertext. The server never sees the key. Defaultfalse.kindstringDefault
"markdown".mimestring | nullrendererstring | nulltype_labelstring | nullsize_bytesinteger | nulloriginal_filenamestring | nullartifact_urlstring | nulldownload_urlstring | nullposter_urlstring | nullmediaobject | nullfile_versioninteger | nullworkspace_urlstring | nullaccess_levelstringWho can open it:
link(anyone with the link),private(only you and the people you share it with) orworkspace(members of its workspace). Default"link".workspace_idstring | nullcanobject | nullread_ticketstring | nullaccess_epochintegerDefault
0.presence_ticketstring | nullshow_presenceboolean | nulleditorstring | nullparentobject | nullbreadcrumbsarray of objectchildren_countintegerDefault
0.access_inheritboolean | nullpage_patharray of stringtemplate_idstring | nulltemplateobject | nullpageobject | nullpage_propertiesobject | nullassetsobjectDefault
{}.cover_autobooleanDefault
false.cover_pendingbooleanDefault
false.
edit_secretstring | nullThe new page's edit secret. Not returned on a workspace's own domain.
workspace_errorstring | null