Access the WordPress.com REST API with managed OAuth authentication. Create and manage posts, pages, and site content on WordPress.com hosted sites.
Reference
Get Site Information
GET /wordpress/rest/v1.1/sites/{site_id_or_domain}Response:
{
"ID": 252505333,
"name": "My Blog",
"description": "Just another WordPress.com site",
"URL": "https://myblog.wordpress.com",
"capabilities": {
"edit_pages": true,
"edit_posts": true,
"edit_others_posts": true,
"delete_posts": true
}
}The site identifier can be either:
- Numeric site ID (e.g.,
252505333) - Domain name (e.g.,
myblog.wordpress.comoren.blog.wordpress.com)
List Posts
GET /wordpress/rest/v1.1/sites/{site}/postsQuery Parameters:
number- Number of posts to return (default: 20, max: 100)offset- Offset for paginationpage- Page numberpage_handle- Cursor for pagination (from responsemeta.next_page)order- Sort order:DESCorASCorder_by- Sort field:date,modified,title,comment_count,IDstatus- Post status:publish,draft,pending,private,future,trash,anytype- Post type:post,page,anysearch- Search termcategory- Category slugtag- Tag slugauthor- Author IDfields- Comma-separated list of fields to return
Response:
{
"found": 150,
"posts": [
{
"ID": 83587,
"site_ID": 3584907,
"author": {
"ID": 257479511,
"login": "username",
"name": "John Doe"
},
"date": "2026-02-09T15:00:00+00:00",
"modified": "2026-02-09T16:30:00+00:00",
"title": "My Post Title",
"excerpt": "<p>Post excerpt...</p>",
"content": "<p>Full post content...</p>",
"slug": "my-post-title",
"status": "publish",
"type": "post",
"categories": {...},
"tags": {...}
}
],
"meta": {
"next_page": "value=2026-02-09T15%3A00%3A00%2B00%3A00&id=83587"
}
}Get Post
GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}Response:
{
"ID": 83587,
"site_ID": 3584907,
"author": {...},
"date": "2026-02-09T15:00:00+00:00",
"title": "My Post Title",
"content": "<p>Full post content...</p>",
"slug": "my-post-title",
"status": "publish",
"type": "post",
"categories": {
"news": {
"ID": 123,
"name": "News",
"slug": "news"
}
},
"tags": {
"featured": {
"ID": 456,
"name": "Featured",
"slug": "featured"
}
}
}Create Post
POST /wordpress/rest/v1.1/sites/{site}/posts/new
Content-Type: application/json
{
"title": "New Post Title",
"content": "<p>Post content here...</p>",
"status": "draft",
"categories": "news, updates",
"tags": "featured, important"
}Parameters:
title- Post title (required)content- Post content (HTML)excerpt- Post excerptstatus-publish,draft,pending,private,futuredate- Post date (ISO 8601)categories- Comma-separated category names or slugstags- Comma-separated tag names or slugsformat- Post format:standard,aside,chat,gallery,link,image,quote,status,video,audioslug- URL slugfeatured_image- Featured image attachment IDsticky- Whether post is sticky (boolean)password- Password to protect post
Response:
{
"ID": 123,
"site_ID": 252505333,
"title": "New Post Title",
"status": "draft",
"date": "2026-02-10T09:50:35+00:00"
}Update Post
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}
Content-Type: application/json
{
"title": "Updated Title",
"content": "<p>Updated content...</p>"
}Uses the same parameters as Create Post.
Delete Post
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/deleteMoves post to trash. Returns the deleted post with status: "trash".
List Pages
GET /wordpress/rest/v1.1/sites/{site}/posts?type=pageCreate Page
POST /wordpress/rest/v1.1/sites/{site}/posts/new?type=page
Content-Type: application/json
{
"title": "About Us",
"content": "<p>About page content...</p>",
"status": "publish"
}Get Page Dropdown List
GET /wordpress/rest/v1.1/sites/{site}/dropdown-pages/Returns a simplified list of pages for dropdowns/menus.
Get Page Templates
GET /wordpress/rest/v1.1/sites/{site}/page-templatesReturns available page templates for the site's theme.
Get Post Likes
GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likesResponse:
{
"found": 99,
"i_like": false,
"can_like": true,
"site_ID": 3584907,
"post_ID": 83587,
"likes": [...]
}Like Post
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes/newUnlike Post
POST /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/likes/mine/deleteCheck Reblog Status
GET /wordpress/rest/v1.1/sites/{site}/posts/{post_id}/reblogs/mineResponse:
{
"can_reblog": true,
"can_user_reblog": true,
"is_reblogged": false
}List Post Types
GET /wordpress/rest/v1.1/sites/{site}/post-typesResponse:
{
"found": 3,
"post_types": {
"post": {
"name": "post",
"label": "Posts",
"labels": {...}
},
"page": {
"name": "page",
"label": "Pages",
"labels": {...}
}
}
}Get Post Counts
GET /wordpress/rest/v1.1/sites/{site}/post-counts/{post_type}Example: /sites/{site}/post-counts/post or /sites/{site}/post-counts/page
Response:
{
"counts": {
"all": {"count": 150},
"publish": {"count": 120},
"draft": {"count": 25},
"trash": {"count": 5}
}
}List Site Users
GET /wordpress/rest/v1.1/sites/{site}/usersResponse:
{
"found": 3,
"users": [
{
"ID": 277004271,
"login": "username",
"name": "John Doe",
"email": "john@example.com",
"roles": ["administrator"]
}
]
}Get User Settings
GET /wordpress/rest/v1.1/me/settingsResponse:
{
"enable_translator": true,
"surprise_me": false,
"holidaysnow": false,
"user_login": "username"
}Update User Settings
POST /wordpress/rest/v1.1/me/settings/
Content-Type: application/json
{
"enable_translator": false
}Get User's Liked Posts
GET /wordpress/rest/v1.1/me/likesResponse:
{
"found": 10,
"likes": [
{
"ID": 83587,
"site_ID": 3584907,
"title": "Liked Post Title"
}
]
}Get Site Embeds
GET /wordpress/rest/v1.1/sites/{site}/embedsReturns available embed handlers for the site.
Get Available Shortcodes
GET /wordpress/rest/v1.1/sites/{site}/shortcodesReturns shortcodes available on the site.