Automate WriteXO with a personal API token. Create pages from scripts, append daily logs, search your library, and connect Zapier, n8n, Shortcuts, or cron.
API access requires a Pro plan. Tokens look like wxo_… and are shown only once when generated.
Upgrade to Pro if needed.
Under API Access, generate a personal token.
Store it securely (password manager, env var, or secrets store).
Send your token on every request:
Authorization: Bearer wxo_your_token_here
https://writexo.com
| Method | Path | Description |
|---|---|---|
| GET | /api/me |
Confirm token and plan |
| GET | /api/pages |
List pages (limit, offset, optional type) |
| GET | /api/pages/{id_or_slug} |
Get one page by id or main_url |
| POST | /api/pages |
Create a page |
| PATCH | /api/pages/{id_or_slug} |
Update title and/or body |
| POST | /api/pages/{id_or_slug}/append |
Append text or HTML (great for logs) |
| DELETE | /api/pages/{id_or_slug} |
Delete a page |
| GET | /api/pages/search?q= |
Search title and body |
| POST | /api/login |
Optional: email/password → token (prefer Settings token) |
curl -X POST https://writexo.com/api/pages \
-H "Authorization: Bearer wxo_…" \
-H "Content-Type: application/json" \
-d '{"title":"From automation","content":"Hello from curl"}'
# Or send HTML for formatting:
curl -X POST https://writexo.com/api/pages \
-H "Authorization: Bearer wxo_…" \
-H "Content-Type: application/json" \
-d '{"title":"Styled","content":"Hello world
"}'
titleOptional page titlecontentPage body as plain text or HTMLtypeDefault page (todo, board, etc. also accepted)passwordOptional page passwordIdeal for daily logs and automated appends without replacing existing content. content may be plain text or HTML.
curl -X POST https://writexo.com/api/pages/my-daily-log-abc123/append \
-H "Authorization: Bearer wxo_…" \
-H "Content-Type: application/json" \
-d '{"content":"2026-07-09: shipped the API","separator":"\n"}'
# List curl https://writexo.com/api/pages?limit=20 \ -H "Authorization: Bearer wxo_…" # Get by id or slug curl https://writexo.com/api/pages/123 \ -H "Authorization: Bearer wxo_…" # Search curl "https://writexo.com/api/pages/search?q=meeting" \ -H "Authorization: Bearer wxo_…" # Delete curl -X DELETE https://writexo.com/api/pages/123 \ -H "Authorization: Bearer wxo_…"
Detail responses include a page object. content is returned as HTML (formatting preserved when present). List and search omit content for smaller payloads.
{
"page": {
"id": 123,
"title": "From automation",
"main_url": "from-automation-a1b2c3d4e5f6",
"share_url": "…",
"type": "page",
"last_updated": 1710000000,
"urls": {
"edit": "https://writexo.com/from-automation-a1b2c3d4e5f6",
"share": "https://writexo.com/s/…"
},
"content": "Hello from curl
"
}
}
| Status | Code | Meaning |
|---|---|---|
| 401 | UNAUTHORIZED |
Missing or invalid token |
| 403 | PRO_REQUIRED |
Token owner is not on Pro |
| 403 | LEGAL_HOLD / RETENTION_LOCK |
Page cannot be edited or deleted |
| 404 | NOT_FOUND |
Page not found (or not yours) |
| 413 | DOC_TOO_LARGE |
Body exceeds the plan size limit (10 MB on Pro) |
Error bodies look like:
{"error":"UNAUTHORIZED","message":"Invalid token."}
Generate a personal token and create your first page in under a minute.