Agents that prefer structured guidance can parse the JSON manifest below. The same JSON is also embedded on this page in a script[type="application/json"] tag with the id foxstoria-agent-manifest.
{
"name": "FoxStoria Agent Story Guide",
"version": "1.0",
"guideUrl": "https://foxstoria.com/for-agents",
"audience": [
"humans",
"agents"
],
"setup": {
"apiKeysPageUrl": "https://foxstoria.com/api-keys",
"premiumRequired": true,
"product": "Robo-Story",
"creditsPerRequest": 1,
"keyVisibility": "shown_once_on_creation"
},
"auth": {
"type": "apiKey",
"header": "x-api-key",
"fallbackHeader": "Authorization: Bearer <API_KEY>"
},
"endpoints": {
"openApi": "https://foxstoria.com/v1/agent/openapi.json",
"createStory": {
"method": "POST",
"url": "https://foxstoria.com/v1/agent/stories"
},
"getStory": {
"method": "GET",
"urlTemplate": "https://foxstoria.com/v1/agent/stories/{storyId}"
},
"getPublicShare": {
"method": "GET",
"urlTemplate": "https://foxstoria.com/v1/public/story-shares/{shareToken}"
},
"discovery": {
"storyFormats": "https://foxstoria.com/v1/story-formats",
"storyGenres": "https://foxstoria.com/v1/story-genres",
"narrators": "https://foxstoria.com/v1/gen-story-narrators"
}
},
"request": {
"required": [
"about"
],
"optional": [
"lang",
"storyGenreId",
"storyFormatId",
"narratorId",
"storyStyle",
"imageStyle",
"imageAspectRatio",
"generateImages",
"generateNarration",
"generateSfx",
"generateBackgroundMusic",
"characters"
],
"constraints": {
"aboutMaxLength": 2000,
"imageAspectRatioAllowedValues": [
"1:1",
"9:16"
],
"unsupportedStoryFormatId": "mini"
}
},
"defaultsWhenOmitted": {
"lang": "en",
"imageStyle": "illustration",
"imageAspectRatio": "1:1",
"storyStyle": "FoxStoria chooses a writing style automatically",
"generateImages": true,
"generateNarration": true,
"generateSfx": true,
"generateBackgroundMusic": true
},
"safety": {
"targetAudience": "children ages 3-10",
"keepPromptChildSafe": true,
"flaggedPromptStatus": "VIOLATED"
},
"workflow": [
"Read the public OpenAPI document first.",
"If the human has not given you an API key yet, guide them to /api-keys.",
"Ask for the story idea if 'about' is still missing.",
"If you need valid genre, format, or narrator IDs, fetch the public discovery endpoints.",
"Create the story job with x-api-key and the JSON body.",
"Poll the story endpoint until the job reaches a terminal state.",
"Return the shareUrl when status is COMPLETED, or surface the error/status if not."
],
"terminalStatuses": [
"COMPLETED",
"ERRORED",
"VIOLATED",
"REVIEW_DECLINED"
]
}