Overview
The Stories endpoints provide full CRUD (Create, Read, Update, Delete) operations for web stories. Stories are the main content type in the Web Stories plugin. Base Path:/wp-json/web-stories/v1/web-story
List Stories
Retrieves a collection of stories.GET /web-stories/v1/web-story
Query Parameters
Scope under which the request is made:
view or editCurrent page of the collection
Maximum number of items to return (max 100)
Search stories by title or content
Filter stories by author user ID
Filter by post status:
publish, draft, pending, future, private, auto-draftSort by:
date, modified, title, story_author, relevanceSort order:
asc or descInclude embedded resources (author, featured media, etc.)
Wrap response in envelope for preloading
Load demo data for auto-draft stories
Response
Response Headers
Get Story
Retrieves a single story by ID.GET /web-stories/v1/web-story/:id
Path Parameters
Unique identifier for the story
Query Parameters
Scope:
view, edit, or embedInclude embedded resources
Response
Unique identifier for the story
Publication date in ISO 8601 format
Publication date in GMT
Last modified date
URL-friendly slug
Post status:
publish, draft, pending, private, future, auto-draftStory title
Story HTML content
JSON representation of the story structure (edit context only)
Author user ID
Featured media attachment ID (poster image)
Story poster image details
Preview URL for the story (edit context only)
Admin edit URL (edit context only)
Link to embed story in a post (edit context, if user can edit posts)
Global style presets (edit context only)
Create Story
Creates a new story.POST /web-stories/v1/web-story
Request Body
Story title (plain text or object with
raw property)Story HTML content (base64 encoded for special characters)
JSON story structure with pages and elements
Post status:
publish, draft, pending, private, futureStory excerpt/description
Author user ID (defaults to current user)
Featured media ID (poster image)
Post meta fields
Original story ID to duplicate from
Response
Returns the created story object (same format as Get Story response) with HTTP 201 status.Update Story
Updates an existing story.PUT /web-stories/v1/web-story/:id
Path Parameters
Unique identifier for the story
Request Body
Accepts the same parameters as Create Story. All fields are optional - only include fields you want to update.Important: When updating a story,
content and story_data must be updated together. Updating one without the other will result in a 412 error (except for auto-draft status).Update global style presets (affects all stories)
Response
Returns the updated story object with HTTP 200 status.Delete Story
Deletes a story.DELETE /web-stories/v1/web-story/:id
Path Parameters
Unique identifier for the story
Query Parameters
Whether to bypass trash and force deletion
Response
Duplicate Story
Create a copy of an existing story by using theoriginal_id parameter.
POST /web-stories/v1/web-story
- Story content and story_data
- Story excerpt
- Featured media
- Publisher logo and other metadata
Common Errors
Status 403: You don’t have permission to create storiesRequired capability:
edit_web-storiesStatus 403: You don’t have permission to edit this storyRequired capability:
edit_web-story or edit_others_web-storiesStatus 404: Story with the specified ID does not exist
Status 412:
content and story_data must be updated togetherBoth fields are required when updating story contentStory Locking
Stories support post locking to prevent concurrent edits. Lock information is included in the_links response:
/includes/REST_API/Stories_Lock_Controller.php:14191.