Write.as API Documentation
Comprehensive assistance with Write.as and WriteFreely API development, based on official API documentation. This skill provides practical guidance for building applications around the Write.as blogging platform and its open-source WriteFreely implementation.
This skill should be triggered when:
https://write.as/api/)Posts: Markdown-based articles with metadata. Posts can be created anonymously or associated with a user account.
Collections: Known as "blogs" in the UI. Container for multiple posts with customizable settings. Creating collections requires a Pro account.
Users: Registered accounts with password, email, and resource access. Users can own multiple collections and posts.
Tokens: Used for authentication and post management. Anonymous posts return a token for later modifications, while user operations use access tokens via Authorization: Token {access_token} header.
token for later updates/deletions./api/auth/login to get an access token, then pass it in the Authorization header.POST https://write.as/api/posts
Content-Type: application/json
{
"body": "This is a post.",
"title": "My First Post"
}
Response:
{
"code": 201,
"data": {
"id": "rf3t35fkax0aw",
"token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M",
"title": "My First Post",
"body": "This is a post."
}
}
Note: Save the token to update or delete this post later.
POST https://write.as/api/posts/{POST_ID}
Content-Type: application/json
{
"token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M",
"body": "This is an updated post."
}
POST https://write.as/api/auth/login
Content-Type: application/json
{
"alias": "username",
"pass": "password"
}
Response:
{
"code": 200,
"data": {
"access_token": "00000000-0000-0000-0000-000000000000",
"user": {
"username": "username"
}
}
}
POST https://write.as/api/posts
Authorization: Token 00000000-0000-0000-0000-000000000000
Content-Type: application/json
{
"body": "# My authenticated post\n\nThis post is linked to my account.",
"title": "Authenticated Post"
}
POST https://write.as/api/posts
Content-Type: application/json
{
"body": "This is a monospace code post.",
"font": "code"
}
Available fonts:
sans - Sans-serif with word wrapserif or norm - Serif with word wrapwrap - Monospace with word wrapmono - Monospace without wrapcode - Syntax-highlighted monospacePOST https://write.as/api/posts
Authorization: Token 00000000-0000-0000-0000-000000000000
Content-Type: application/json
{
"body": "Check out my new post!",
"title": "My Post",
"crosspost": [
{"twitter": "yourusername"},
{"medium": "yourusername"}
]
}
Supported services: Twitter, Tumblr, Medium
POST https://write.as/api/collections
Authorization: Token 00000000-0000-0000-0000-000000000000
Content-Type: application/json
{
"alias": "my-blog",
"title": "My Blog"
}
POST https://write.as/api/collections/{ALIAS}/posts
Authorization: Token 00000000-0000-0000-0000-000000000000
Content-Type: application/json
{
"body": "# First blog post\n\nWelcome to my blog!",
"title": "Hello World"
}
POST https://write.as/api/collections/{ALIAS}/collect
Authorization: Token 00000000-0000-0000-0000-000000000000
Content-Type: application/json
[
{
"id": "rf3t35fkax0aw",
"token": "ozPEuJWYK8L1QsysBUcTUKy9za7yqQ4M"
}
]
POST https://write.as/api/markdown
Content-Type: application/json
{
"raw_body": "# Hello\n\nThis is **Markdown**."
}
Response:
{
"code": 200,
"data": {
"body": "<h1>Hello</h1>\n<p>This is <strong>Markdown</strong>.</p>"
}
}
All API responses follow this structure:
{
"code": 200,
"data": {}
}
Common HTTP status codes:
200 - Success201 - Created successfully400 - Bad request or malformed data401 - Missing or invalid authentication403 - Insufficient permissions (e.g., creating collection without Pro)404 - Resource not found410 - Post unpublished (may return later)429 - Rate limitedThis skill includes comprehensive documentation in references/:
Use view to read the API reference file when detailed information is needed.
token returned when creating anonymous posts/api/auth/login to get access tokens/api/posts/claimcode, sans, mono) for various content typesapi.md → "Users" sectionapi.md → "Posts" sectionapi.md → "Collections" sectionapi.md → "Crossposting" sectionapi.md → "Error Handling" sectiontoken field when creating anonymous posts/api/markdown before postingUse authenticated user endpoints to create collections, publish posts, and manage content.
Implement post creation with Markdown preview using /api/markdown endpoint.
Leverage the crosspost parameter to automatically share posts to multiple platforms.
Build an app using anonymous post creation, storing tokens locally for later management.
Use /api/posts/claim to import anonymous posts into a user account.
Official:
Community:
This skill is based on the official Write.as API documentation. For the latest updates, refer to:
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer