WordPress
App · Website Builders · 20 actions
Publish and manage a self-hosted WordPress site: write, update and delete posts and pages, organise them with categories and tags, and moderate comments.
Actions
| Action | What it does |
|---|---|
| Create a category | Add a category to the site. |
| Create a page | Create a new page. |
| Create a post | Write a new post to your WordPress site. |
| Create a tag | Add a tag to the site so posts can be filed under it. |
| Delete a category | Delete a category. |
| Delete a comment | Move a comment to the trash, or delete it outright. |
| Delete a page | Move a page to the trash, or delete it outright. |
| Delete a post | Move a post to the trash, or delete it outright. |
| Delete a tag | Delete a tag. |
| Find categories | List or search the site's categories, or find the categories on one post. |
| Find comments | List comments across the site or on one post. |
| Find pages | List or search pages. |
| Find posts | List or search posts. |
| Find tags | List or search the site's tags, or find the tags on one post. |
| Get a page | Fetch one page by its ID, including its full content. |
| Get a post | Fetch one post by its ID, including its full content. |
| Moderate a comment | Approve, hold, spam or trash a comment, or edit its text. |
| Post a comment | Leave a comment on a post. |
| Update a page | Change an existing page. |
| Update a post | Change an existing post. |
Create a category
Add a category to the site. Categories can be nested under one another.
Inputs
- Name
nametextRequired - The category name, for example 'Product'.
- Description
descriptiontext - A description, shown by some themes.
- Slug
slugtext - The URL segment for the category. Leave empty to derive one from the name.
- Parent category ID
parent_category_idtext - The category to nest this one under. Leave empty, or use 0, for a top-level category.
Outputs
countnumberdescriptiontextidnumberlinktextnametextparentnumberslugtexttaxonomytext
Example output
{
"count": 34,
"description": "Release notes and product news.",
"id": 7,
"link": "https://example.com/category/product/",
"name": "Product",
"parent": 0,
"slug": "product",
"taxonomy": "category"
}Create a page
Create a new page. Leave the status empty to save it as a draft.
Inputs
- Title
titletextRequired - The page title, for example 'About us'.
- Content
contenttextRequired - The body of the page. HTML is allowed.
- Status
statustext - Whether to publish the page. Leave empty to save a draft.One of:
publish(Published),future(Scheduled),draft,pending(Pending review),private. - Excerpt
excerpttext - A short summary, used by some themes.
- Slug
slugtext - The URL segment for the page. Leave empty to derive one from the title.
- Parent page ID
parent_page_idtext - The page to nest this one under. Leave empty, or use 0, for a top-level page.
- Menu order
menu_ordernumber - Where the page sits among its siblings. Lower numbers come first.
- Publish date
publish_datedate and time - When the page should be dated.
- Comment status
comment_statustext - Whether readers may comment on the page.One of:
open,closed.
Outputs
authornumbercomment_statustextcontenttextdatetextexcerpttextidnumberlinktextmenu_ordernumbermodifiedtextparentnumberslugtextstatustexttitletext
Example output
{
"author": 1,
"comment_status": "closed",
"content": "<p>Who we are.</p>",
"date": "2026-01-06T11:00:00",
"excerpt": "",
"id": 88,
"link": "https://example.com/about-us/",
"menu_order": 2,
"modified": "2026-02-02T16:20:00",
"parent": 0,
"slug": "about-us",
"status": "publish",
"title": "About us"
}Create a post
Write a new post to your WordPress site. Leave the status empty to save it as a draft.
Inputs
- Title
titletextRequired - The post title, for example 'Our spring update'.
- Content
contenttextRequired - The body of the post. HTML is allowed.
- Status
statustext - Whether to publish the post. Leave empty to save a draft.One of:
publish(Published),future(Scheduled),draft,pending(Pending review),private. - Excerpt
excerpttext - A short summary shown in post listings.
- Slug
slugtext - The URL segment for the post. Leave empty to let WordPress derive one from the title.
- Categories
categorieslist - The categories to file the post under.
- Tag IDs
tagstext - Tag IDs to apply, separated by commas. Use Find tags to look up an ID; a site can have far too many tags to list in a dropdown.
- Publish date
publish_datedate and time - When the post should be dated. Set a future date with the Scheduled status to schedule it.
- Comment status
comment_statustext - Whether readers may comment on the post.One of:
open,closed. - Post format
post_formattext - The post format, if your theme uses them. Defaults to Standard.One of:
standard,aside,chat,gallery,link,image,quote,status,video,audio. - Pin to the front page
stickytrue/false - Whether to keep the post at the top of the blog.
Outputs
authornumbercategorieslistcomment_statustextcontenttextdatetextexcerpttextformattextidnumberlinktextmodifiedtextslugtextstatustextstickytrue/falsetagslisttitletext
Example output
{
"author": 1,
"categories": [
7
],
"comment_status": "open",
"content": "<p>Everything that shipped this quarter.</p>",
"date": "2026-03-14T09:30:00",
"excerpt": "<p>Everything that shipped this quarter.</p>",
"format": "standard",
"id": 412,
"link": "https://example.com/spring-product-update/",
"modified": "2026-03-14T09:30:00",
"slug": "spring-product-update",
"status": "publish",
"sticky": false,
"tags": [
21,
22
],
"title": "Spring product update"
}Create a tag
Add a tag to the site so posts can be filed under it.
Inputs
- Name
nametextRequired - The tag name, for example 'changelog'.
- Description
descriptiontext - A description, shown by some themes.
- Slug
slugtext - The URL segment for the tag. Leave empty to derive one from the name.
Outputs
countnumberdescriptiontextidnumberlinktextnametextparentnumberslugtexttaxonomytext
Example output
{
"count": 12,
"description": "",
"id": 21,
"link": "https://example.com/tag/changelog/",
"name": "changelog",
"parent": 0,
"slug": "changelog",
"taxonomy": "post_tag"
}Delete a category
Delete a category. WordPress has no trash for categories, so this is permanent: posts filed under it keep their content and fall back to the default category.
Inputs
- Category ID
category_idtextRequired - The numeric ID of the category to delete.
Outputs
countnumberdescriptiontextidnumberlinktextnametextparentnumberslugtexttaxonomytext
Example output
{
"count": 34,
"description": "Release notes and product news.",
"id": 7,
"link": "https://example.com/category/product/",
"name": "Product",
"parent": 0,
"slug": "product",
"taxonomy": "category"
}Delete a comment
Move a comment to the trash, or delete it outright. A trashed comment can be restored from the WordPress admin; a permanent delete cannot be undone.
Inputs
- Comment ID
comment_idtextRequired - The numeric ID of the comment to delete.
- Delete permanently
permanentlytrue/false - Turn this on to skip the trash and delete the comment for good.
Outputs
author_emailtextauthor_nametextauthor_urltextcontenttextdatetextidnumberlinktextparentnumberpostnumberstatustext
Example output
{
"author_email": "dana@example.com",
"author_name": "Dana Reader",
"author_url": "",
"content": "<p>This is exactly what we needed, thank you.</p>",
"date": "2026-03-14T12:05:00",
"id": 903,
"link": "https://example.com/spring-product-update/#comment-903",
"parent": 0,
"post": 412,
"status": "trash"
}Delete a page
Move a page to the trash, or delete it outright. A trashed page can be restored from the WordPress admin; a permanent delete cannot be undone.
Inputs
- Page ID
page_idtextRequired - The numeric ID of the page to delete.
- Delete permanently
permanentlytrue/false - Turn this on to skip the trash and delete the page for good.
Outputs
authornumbercomment_statustextcontenttextdatetextexcerpttextidnumberlinktextmenu_ordernumbermodifiedtextparentnumberslugtextstatustexttitletext
Example output
{
"author": 1,
"comment_status": "closed",
"content": "<p>Who we are.</p>",
"date": "2026-01-06T11:00:00",
"excerpt": "",
"id": 88,
"link": "https://example.com/about-us/",
"menu_order": 2,
"modified": "2026-02-02T16:20:00",
"parent": 0,
"slug": "about-us",
"status": "trash",
"title": "About us"
}Delete a post
Move a post to the trash, or delete it outright. A trashed post can be restored from the WordPress admin; a permanent delete cannot be undone.
Inputs
- Post ID
post_idtextRequired - The numeric ID of the post to delete.
- Delete permanently
permanentlytrue/false - Turn this on to skip the trash and delete the post for good.
Outputs
authornumbercategorieslistcomment_statustextcontenttextdatetextexcerpttextformattextidnumberlinktextmodifiedtextslugtextstatustextstickytrue/falsetagslisttitletext
Example output
{
"author": 1,
"categories": [
7
],
"comment_status": "open",
"content": "<p>Everything that shipped this quarter.</p>",
"date": "2026-03-14T09:30:00",
"excerpt": "<p>Everything that shipped this quarter.</p>",
"format": "standard",
"id": 412,
"link": "https://example.com/spring-product-update/",
"modified": "2026-03-14T09:30:00",
"slug": "spring-product-update",
"status": "trash",
"sticky": false,
"tags": [
21,
22
],
"title": "Spring product update"
}Delete a tag
Delete a tag. WordPress has no trash for tags, so this is permanent: posts carrying it keep their content and simply lose the tag.
Inputs
- Tag ID
tag_idtextRequired - The numeric ID of the tag to delete.
Outputs
countnumberdescriptiontextidnumberlinktextnametextparentnumberslugtexttaxonomytext
Example output
{
"count": 12,
"description": "",
"id": 21,
"link": "https://example.com/tag/changelog/",
"name": "changelog",
"parent": 0,
"slug": "changelog",
"taxonomy": "post_tag"
}Find categories
List or search the site's categories, or find the categories on one post.
Inputs
- Search
searchtext - Only return categories matching this text.
- Parent category ID
parent_category_idtext - Only return categories nested under this one. Use 0 for top-level categories.
- Post ID
post_idtext - Only return the categories assigned to this post.
- Hide unused categories
hide_emptytrue/false - Turn this on to leave out categories with no published posts.
- Sort direction
ordertext - Whether to sort ascending or descending.One of:
asc(Ascending),desc(Descending). - Sort by
order_bytext - Which field to sort by. Defaults to name.One of:
id,include(Given ID order),name,slug,include_slugs(Given slug order),term_group(Term Group),description,count. - Results per page
per_pagenumber - How many results to return, 1 to 100. Defaults to 10.From 1 to 100.
- Page
pagenumber - Which page of results to return. Starts at 1.At least 1.
- Slug
slugtext - Only return the category with this exact slug.
Outputs
countnumberitemslist
Example output
{
"count": 1,
"items": [
{
"count": 34,
"description": "Release notes and product news.",
"id": 7,
"link": "https://example.com/category/product/",
"name": "Product",
"parent": 0,
"slug": "product",
"taxonomy": "category"
}
]
}Find comments
List comments across the site or on one post. Set the status to 'Awaiting moderation' to fetch the moderation queue.
Inputs
- Post ID
post_idtext - Only return comments on this post.
- Search
searchtext - Only return comments matching this text.
- Status
statustext - Which comments to return. Defaults to approved comments only.One of:
approve(Approved),hold(Awaiting moderation),spam,trash(Trashed),all(All statuses). - Author email
author_emailtext - Only return comments left by this email address.
- Parent comment ID
parent_comment_idtext - Only return replies to this comment. Use 0 for top-level comments only.
- Posted after
published_afterdate and time - Only return comments left after this moment.
- Posted before
published_beforedate and time - Only return comments left before this moment.
- Sort direction
ordertext - Whether to sort ascending or descending.One of:
asc(Ascending),desc(Descending). - Sort by
order_bytext - Which field to sort by. Defaults to date.One of:
date,date_gmt(Date (GMT)),id,include(Given ID order),post,parent,type. - Results per page
per_pagenumber - How many results to return, 1 to 100. Defaults to 10.From 1 to 100.
- Page
pagenumber - Which page of results to return. Starts at 1.At least 1.
Outputs
countnumberitemslist
Example output
{
"count": 1,
"items": [
{
"author_email": "dana@example.com",
"author_name": "Dana Reader",
"author_url": "",
"content": "<p>This is exactly what we needed, thank you.</p>",
"date": "2026-03-14T12:05:00",
"id": 903,
"link": "https://example.com/spring-product-update/#comment-903",
"parent": 0,
"post": 412,
"status": "approved"
}
]
}Find pages
List or search pages. Every filter is optional; with none set this returns the site's published pages.
Inputs
- Search
searchtext - Only return pages matching this text.
- Statuses
statuslist - Only return pages with these statuses. Defaults to published pages only.One or more of:
publish(Published),future(Scheduled),draft,pending(Pending review),private. - Parent page ID
parent_page_idtext - Only return pages nested under this one. Use 0 for top-level pages.
- Sort direction
ordertext - Whether to sort ascending or descending.One of:
asc(Ascending),desc(Descending). - Sort by
order_bytext - Which field to sort by. Defaults to date.One of:
author,date,id,include(Given ID order),modified,parent,relevance,slug,include_slugs(Given slug order),title,menu_order(Menu order). - Results per page
per_pagenumber - How many results to return, 1 to 100. Defaults to 10.From 1 to 100.
- Page
pagenumber - Which page of results to return. Starts at 1.At least 1.
- Slug
slugtext - Only return the page with this exact slug.
Outputs
countnumberitemslist
Example output
{
"count": 1,
"items": [
{
"author": 1,
"comment_status": "closed",
"content": "<p>Who we are.</p>",
"date": "2026-01-06T11:00:00",
"excerpt": "",
"id": 88,
"link": "https://example.com/about-us/",
"menu_order": 2,
"modified": "2026-02-02T16:20:00",
"parent": 0,
"slug": "about-us",
"status": "publish",
"title": "About us"
}
]
}Find posts
List or search posts. Every filter is optional; with none set this returns the site's most recent published posts.
Inputs
- Search
searchtext - Only return posts matching this text.
- Statuses
statuslist - Only return posts with these statuses. Defaults to published posts only.One or more of:
publish(Published),future(Scheduled),draft,pending(Pending review),private. - Categories
categorieslist - Only return posts in these categories.
- Tag IDs
tagstext - Only return posts with these tag IDs. Use Find tags to look up an ID; a site can have far too many tags to list in a dropdown.
- Author ID
author_idtext - Only return posts written by this user ID.
- Published after
published_afterdate and time - Only return posts dated after this moment.
- Published before
published_beforedate and time - Only return posts dated before this moment.
- Sort direction
ordertext - Whether to sort ascending or descending.One of:
asc(Ascending),desc(Descending). - Sort by
order_bytext - Which field to sort by. Defaults to date.One of:
author,date,id,include(Given ID order),modified,parent,relevance,slug,include_slugs(Given slug order),title. - Results per page
per_pagenumber - How many results to return, 1 to 100. Defaults to 10.From 1 to 100.
- Page
pagenumber - Which page of results to return. Starts at 1.At least 1.
- Slug
slugtext - Only return the post with this exact slug.
Outputs
countnumberitemslist
Example output
{
"count": 1,
"items": [
{
"author": 1,
"categories": [
7
],
"comment_status": "open",
"content": "<p>Everything that shipped this quarter.</p>",
"date": "2026-03-14T09:30:00",
"excerpt": "<p>Everything that shipped this quarter.</p>",
"format": "standard",
"id": 412,
"link": "https://example.com/spring-product-update/",
"modified": "2026-03-14T09:30:00",
"slug": "spring-product-update",
"status": "publish",
"sticky": false,
"tags": [
21,
22
],
"title": "Spring product update"
}
]
}Find tags
List or search the site's tags, or find the tags on one post. This is how to look up the tag IDs the post actions take.
Inputs
- Search
searchtext - Only return tags matching this text.
- Post ID
post_idtext - Only return the tags assigned to this post.
- Hide unused tags
hide_emptytrue/false - Turn this on to leave out tags with no published posts.
- Sort direction
ordertext - Whether to sort ascending or descending.One of:
asc(Ascending),desc(Descending). - Sort by
order_bytext - Which field to sort by. Defaults to name.One of:
id,include(Given ID order),name,slug,include_slugs(Given slug order),term_group(Term Group),description,count. - Results per page
per_pagenumber - How many results to return, 1 to 100. Defaults to 10.From 1 to 100.
- Page
pagenumber - Which page of results to return. Starts at 1.At least 1.
- Slug
slugtext - Only return the tag with this exact slug.
Outputs
countnumberitemslist
Example output
{
"count": 1,
"items": [
{
"count": 12,
"description": "",
"id": 21,
"link": "https://example.com/tag/changelog/",
"name": "changelog",
"parent": 0,
"slug": "changelog",
"taxonomy": "post_tag"
}
]
}Get a page
Fetch one page by its ID, including its full content.
Inputs
- Page ID
page_idtextRequired - The numeric ID of the page to fetch.
Outputs
authornumbercomment_statustextcontenttextdatetextexcerpttextidnumberlinktextmenu_ordernumbermodifiedtextparentnumberslugtextstatustexttitletext
Example output
{
"author": 1,
"comment_status": "closed",
"content": "<p>Who we are.</p>",
"date": "2026-01-06T11:00:00",
"excerpt": "",
"id": 88,
"link": "https://example.com/about-us/",
"menu_order": 2,
"modified": "2026-02-02T16:20:00",
"parent": 0,
"slug": "about-us",
"status": "publish",
"title": "About us"
}Get a post
Fetch one post by its ID, including its full content.
Inputs
- Post ID
post_idtextRequired - The numeric ID of the post to fetch.
Outputs
authornumbercategorieslistcomment_statustextcontenttextdatetextexcerpttextformattextidnumberlinktextmodifiedtextslugtextstatustextstickytrue/falsetagslisttitletext
Example output
{
"author": 1,
"categories": [
7
],
"comment_status": "open",
"content": "<p>Everything that shipped this quarter.</p>",
"date": "2026-03-14T09:30:00",
"excerpt": "<p>Everything that shipped this quarter.</p>",
"format": "standard",
"id": 412,
"link": "https://example.com/spring-product-update/",
"modified": "2026-03-14T09:30:00",
"slug": "spring-product-update",
"status": "publish",
"sticky": false,
"tags": [
21,
22
],
"title": "Spring product update"
}Moderate a comment
Approve, hold, spam or trash a comment, or edit its text. Fill in only what you want to change.
Inputs
- Comment ID
comment_idtextRequired - The numeric ID of the comment to change.
- Comment
contenttext - New text for the comment.
- Moderation
statustext - What to do with the comment.One of:
approved(Approve),hold(Hold for moderation),spam(Mark as spam),unspam(Not spam),trash(Move to trash),untrash(Restore from trash). - Author name
author_nametext - A corrected name for the comment's author.
- Author email
author_emailtext - A corrected email address for the author.
Outputs
author_emailtextauthor_nametextauthor_urltextcontenttextdatetextidnumberlinktextparentnumberpostnumberstatustext
Example output
{
"author_email": "dana@example.com",
"author_name": "Dana Reader",
"author_url": "",
"content": "<p>This is exactly what we needed, thank you.</p>",
"date": "2026-03-14T12:05:00",
"id": 903,
"link": "https://example.com/spring-product-update/#comment-903",
"parent": 0,
"post": 412,
"status": "hold"
}Post a comment
Leave a comment on a post. The post must be published or private (WordPress rejects comments on drafts) and its comment status must be open.
Inputs
- Post ID
post_idtextRequired - The numeric ID of the post to comment on.
- Comment
contenttextRequired - The comment text. WordPress rejects a second comment with the same author and exactly the same text.
- Author name
author_nametext - Who the comment is from. Leave empty to comment as the connected WordPress user.
- Author email
author_emailtext - The comment author's email address.
- Author website
author_urltext - A website to link the author's name to.
- Reply to comment ID
parent_comment_idtext - The comment this one replies to. Leave empty for a top-level comment.
- Status
statustext - Whether the comment goes live straight away. Leave empty to let the site's moderation settings decide.One of:
approved(Approve),hold(Hold for moderation),spam(Mark as spam),unspam(Not spam),trash(Move to trash),untrash(Restore from trash).
Outputs
author_emailtextauthor_nametextauthor_urltextcontenttextdatetextidnumberlinktextparentnumberpostnumberstatustext
Example output
{
"author_email": "dana@example.com",
"author_name": "Dana Reader",
"author_url": "",
"content": "<p>This is exactly what we needed, thank you.</p>",
"date": "2026-03-14T12:05:00",
"id": 903,
"link": "https://example.com/spring-product-update/#comment-903",
"parent": 0,
"post": 412,
"status": "approved"
}Update a page
Change an existing page. Fill in only the fields you want to change; everything left empty stays as it is.
Inputs
- Page ID
page_idtextRequired - The numeric ID of the page to change.
- Title
titletext - A new title for the page.
- Content
contenttext - New body content. HTML is allowed.
- Status
statustext - A new status for the page.One of:
publish(Published),future(Scheduled),draft,pending(Pending review),private. - Excerpt
excerpttext - A new short summary for the page.
- Slug
slugtext - A new URL segment. Changing this changes the page's public address.
- Parent page ID
parent_page_idtext - The page to nest this one under. Use 0 to move it back to the top level.
- Menu order
menu_ordernumber - Where the page sits among its siblings. Lower numbers come first.
Outputs
authornumbercomment_statustextcontenttextdatetextexcerpttextidnumberlinktextmenu_ordernumbermodifiedtextparentnumberslugtextstatustexttitletext
Example output
{
"author": 1,
"comment_status": "closed",
"content": "<p>Who we are.</p>",
"date": "2026-01-06T11:00:00",
"excerpt": "",
"id": 88,
"link": "https://example.com/about-us/",
"menu_order": 2,
"modified": "2026-02-02T16:20:00",
"parent": 0,
"slug": "about-us",
"status": "publish",
"title": "About our team"
}Update a post
Change an existing post. Fill in only the fields you want to change; everything left empty stays as it is.
Inputs
- Post ID
post_idtextRequired - The numeric ID of the post to change.
- Title
titletext - A new title for the post.
- Content
contenttext - New body content. HTML is allowed.
- Status
statustext - A new status. Set this to Published to publish a draft.One of:
publish(Published),future(Scheduled),draft,pending(Pending review),private. - Excerpt
excerpttext - A new short summary for the post.
- Slug
slugtext - A new URL segment. Changing this changes the post's public address.
- Categories
categorieslist - The categories the post should have. This replaces its current categories rather than adding to them.
- Tag IDs
tagstext - The tag IDs the post should have, separated by commas. This replaces its current tags. Use Find tags to look up an ID; a site can have far too many tags to list in a dropdown.
- Comment status
comment_statustext - Whether readers may comment on the post.One of:
open,closed. - Post format
post_formattext - A new post format, if your theme uses them.One of:
standard,aside,chat,gallery,link,image,quote,status,video,audio. - Pin to the front page
stickytrue/false - Whether to keep the post at the top of the blog.
Outputs
authornumbercategorieslistcomment_statustextcontenttextdatetextexcerpttextformattextidnumberlinktextmodifiedtextslugtextstatustextstickytrue/falsetagslisttitletext
Example output
{
"author": 1,
"categories": [
7
],
"comment_status": "open",
"content": "<p>Everything that shipped this quarter.</p>",
"date": "2026-03-14T09:30:00",
"excerpt": "<p>Everything that shipped this quarter.</p>",
"format": "standard",
"id": 412,
"link": "https://example.com/spring-product-update/",
"modified": "2026-03-14T09:30:00",
"slug": "spring-product-update",
"status": "publish",
"sticky": false,
"tags": [
21,
22
],
"title": "Spring product update (revised)"
}