Lists the versions in your organization, newest first - the same versions the Versions tab shows to the person who created the API key: versions of Live stories in folders they can open (or in no folder), with each story's primary version left out. An administrator's key sees every folder. Every row carries the version's status (Live, Expired, Draft or Accepted, derived exactly as in the Versions tab), its story, the story's folder and the sender. Use it to find versions nobody has opened yet, or poll it with dateField=updatedAt&dateFrom=<last sync> to pick up changes (edits and acceptances update updatedAt; expiry does not - it follows from expireAt). A key scoped to one story only ever lists that story's versions. Variable values are not included; fetch one version with GET /v2/versions/{versionId} for those.
Query parameters
-
Only versions created from this story (template). Must be a Live story.
-
Only versions whose story is in this folder or any folder under it - the Versions tab's Location filter. A version sits in its story's folder. Folder ids come from GET /v2/folders. 404 if the folder does not exist.
-
Only versions sent by this user of your organization
-
Only versions whose title contains this text (case-insensitive, at most 200 characters)
-
Comma-separated list of statuses to include
-
Which date dateFrom/dateTo apply to
Values are
createdAtorupdatedAt. Default value iscreatedAt. -
Inclusive start (ISO 8601, UTC)
-
Inclusive end (ISO 8601, UTC). A date without a time covers that whole day.
-
1-based page number
Minimum value is
1. Default value is1. -
Versions per page
Minimum value is
1, maximum value is100. Default value is25.
Responses
-
A page of versions
-
Invalid query parameter
-
Authentication failed, the key is scoped to a different story, the member who created the key has left the organization, or a legacy org token has been replaced by a newer one
-
senderEmail is not a user of your organization, storyId is not a Live story, or folderId does not exist
-
Too many requests
-
Internal server error
curl \
--request GET 'https://api.storydoc.com/v2/versions' \
--header "Authorization: Bearer $ACCESS_TOKEN"
{
"data": [
{
"id": "61b1f40a3a86b7a96d0d8ccc",
"title": "ACME - Proposal",
"status": "Live",
"storyId": "61b1e50223b713000a41ca74",
"storyTitle": "Proposal template",
"folder": {
"id": "string",
"name": "Enterprise",
"path": [
"Sales",
"Enterprise"
],
"sharedWithEveryone": true,
"members": [
{
"name": "Dana Lee",
"email": "dana@company.com",
"role": "Owner"
}
]
},
"sender": {
"name": "Dana Lee",
"email": "dana@company.com"
},
"url": "https://example.com",
"shortUrl": "https://view.storydoc.com/4GdDGt",
"editorUrl": "https://example.com",
"versionUrl": "https://example.com",
"isPublic": true,
"expireAt": "2026-05-04T09:42:00Z",
"hasAcceptButton": true,
"acceptedAt": "2026-05-04T09:42:00Z",
"source": "string",
"createdAt": "2026-05-04T09:42:00Z",
"updatedAt": "2026-05-04T09:42:00Z"
}
],
"pagination": {
"page": 1,
"pageSize": 25,
"hasMore": true
}
}
{
"error": "status must be one or more of Live, Expired, Draft, Accepted"
}
{
"error": "Access denied"
}
{
"error": "senderEmail email@domain.com not found in this organization"
}
{
"error": "Too many requests"
}
{
"error": "Error occured",
"errorId": "550e8400-e29b-41d4-a716-446655440000"
}