# Models

## The ContentRequest object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"ContentRequest":{"type":"object","required":["outputType"],"properties":{"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text","youtube","website","pdf","file"]},"content":{"type":"string","description":"For type \"file\", provide an https URL or a file id returned by POST /files. For other types, provide the text or URL expected by that type."}}},"description":"Resources for content generation (required if topic, feedSelections, or researches are not provided)"},"topic":{"type":"string","description":"Topic for content generation (alternative to resources, feedSelections, or researches)"},"feedSelections":{"type":"array","description":"Cached feed items to include in the request (alternative to resources, topic, or researches)","items":{"$ref":"#/components/schemas/FeedSelection"}},"researches":{"type":"array","items":{"type":"string"},"description":"Array of research IDs to include as text resources (max 10)"},"projects":{"type":"array","items":{"type":"string"},"description":"Array of project IDs to use as context for generation (max 10)"},"youtubeChannels":{"type":"array","items":{"type":"string"},"description":"YouTube channel IDs already connected to the account to use as sources"},"podcastEpisodeIds":{"type":"array","items":{"type":"string"},"description":"Completed audio request IDs to reuse as podcast episode sources (max 10)"},"text":{"type":"string","description":"Instructions or query for content generation"},"outputType":{"type":"string","enum":["audio","text","faq","study_guide","timeline","briefing_doc","quiz","video","infographic","slide_deck","datatable"],"description":"Type of output content to generate"},"duration":{"type":"string","enum":["short","default","long"],"description":"Duration preference for audio and slide deck generation. Ignored for video requests."},"format":{"type":"string","enum":["explainer","brief","cinematic","text","html","pdf"],"description":"For `video`, accepted values are `explainer`, `brief`, and `cinematic` (defaults to `explainer`). `cinematic` video requests cost 100 credits. For `briefing_doc`, accepted values are `text`, `html`, and `pdf` (defaults to `pdf`). Ignored for other output types."},"style":{"type":"string","description":"Style of the generated content. For audio/text, use one of: deep dive, brief, critique, debate. For video, any custom style text is accepted (defaults to classic when omitted).\n"},"introMusicUrl":{"type":"string","description":"HTTPS URL to optional intro music (.mp3, .wav, or .m4a) mixed at lower volume at the start of the podcast"},"includeCitations":{"type":"boolean","description":"Whether to include citations (PRO only)"},"ignorePaywalledResources":{"type":"boolean","description":"When true, continue processing even if some URL resources fail to import (paywall/restrictions). The request fails only if none of the provided resources are successfully imported."},"infographicOrientation":{"type":"string","enum":["landscape","portrait","square"],"description":"Infographic orientation (defaults to landscape)"},"infographicDetail":{"type":"string","enum":["concise","standard","detailed"],"description":"Infographic detail level (defaults to standard)"},"slideDeckFormat":{"type":"string","enum":["detailed","presenter"],"description":"Slide deck format (defaults to detailed). Length is controlled via the standard duration field (short, default, long). Slide deck prompt uses the main text field."},"quizDifficulty":{"type":"string","enum":["easy","medium","hard"],"description":"Difficulty level for quiz outputs (defaults to medium). Quiz prompt uses the main text field."},"callbackData":{"type":"string","description":"Optional data to include in webhooks"},"relatedId":{"type":"string","description":"Existing request ID to relate this request to (must belong to the same token)"},"notebookId":{"type":"string","description":"Notebook ID for enterprise clients"},"language":{"type":"string","description":"Language for content generation"},"scheduledOn":{"type":"string","format":"date-time","description":"Schedule the content generation for a specific time"},"podcastId":{"type":"string","description":"Podcast show ID to associate this content with"},"episodeTitle":{"type":"string","description":"Optional episode title when attaching to a podcast show"},"title":{"type":"string","description":"Custom title to use for generated video outputs. When provided, overrides the automatically generated title."},"titlePrompt":{"type":"string","description":"Prompt to guide the generated video title"},"descriptionPrompt":{"type":"string","description":"Prompt to guide the generated video description"},"thumbnailImagePrompt":{"type":"string","description":"Prompt to control the generated thumbnail image for video outputs"},"introImagePrompt":{"type":"string","description":"Prompt to control the intro image for video outputs"},"voice1":{"type":"integer","description":"Primary custom voice ID (required when providing voice2 for video requests)"},"voice2":{"type":"integer","description":"Secondary custom voice ID (requires voice1)"},"publishTargets":{"type":"array","description":"Targets to publish generated videos to (e.g., YouTube)","items":{"$ref":"#/components/schemas/PublishTarget"}},"templateMode":{"type":"object","description":"Create a reusable template instead of processing immediately","properties":{"type":{"type":"string","enum":["feed"]},"name":{"type":"string","description":"Optional display name for the template"}}},"isScheduled":{"type":"boolean","description":"Create a recurring schedule instead of a single request"},"dailyCount":{"type":"integer","minimum":1,"maximum":24,"description":"Number of times per day to run when isScheduled is true"},"scheduleEndDate":{"type":"string","format":"date-time","description":"Optional end date for recurring schedules (requires isScheduled true)"}}},"FeedSelection":{"type":"object","required":["feedId","feedItemIds"],"properties":{"feedId":{"type":"integer","description":"Identifier of the feed containing the cached items"},"feedItemIds":{"type":"array","items":{"type":"string"},"description":"Identifiers of cached posts or videos to include from that feed"}}},"PublishTarget":{"type":"object","properties":{"channel":{"type":"string","description":"Target channel for publishing (e.g., youtube)"},"youtubeAccountId":{"type":"string","nullable":true,"description":"Connected YouTube account ID to publish to"},"youtubePlaylistId":{"type":"string","nullable":true,"description":"Optional playlist ID to publish into"}}}}}}
```

## The RepurposeRequest object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"RepurposeRequest":{"type":"object","required":["requestId","outputType"],"properties":{"requestId":{"type":"string","description":"Identifier of the completed request to repurpose"},"outputType":{"type":"string","enum":["audio","video","infographic","slide_deck","datatable","quiz"],"description":"Output type for the new request"},"language":{"type":"string","description":"Optional language override for the new request (defaults to the original request language)"},"text":{"type":"string","description":"Optional text instructions that replace the original TEXT parameter"},"callbackData":{"type":"string","description":"Optional callback data to associate with the new request"},"duration":{"type":"string","enum":["short","default","long"],"description":"Duration preference for audio and slide deck repurpose requests. Ignored for video requests."},"infographicOrientation":{"type":"string","enum":["landscape","portrait","square"],"description":"Orientation when repurposing to an infographic"},"infographicDetail":{"type":"string","enum":["concise","standard","detailed"],"description":"Detail level when repurposing to an infographic"},"slideDeckFormat":{"type":"string","enum":["detailed","presenter"],"description":"Format when repurposing to a slide deck"},"quizDifficulty":{"type":"string","enum":["easy","medium","hard"],"description":"Difficulty level when repurposing to a quiz"},"title":{"type":"string","description":"Override video title when repurposing to video"},"titlePrompt":{"type":"string","description":"Prompt to guide the generated title when repurposing to video"},"descriptionPrompt":{"type":"string","description":"Prompt to guide the generated description when repurposing to video"},"format":{"type":"string","enum":["explainer","brief","cinematic"],"description":"Video format (defaults to explainer). Only applies when outputType is video. `cinematic` costs 100 credits."},"style":{"type":"string","description":"Custom style text for video outputs"},"thumbnailImagePrompt":{"type":"string","description":"Prompt to control the generated thumbnail image for video outputs"},"introImagePrompt":{"type":"string","description":"Prompt to control the generated intro image for video outputs"},"avatarId":{"type":"integer","description":"Optional avatar identifier for explainer video generation. If omitted, inherits from the source request when available."},"audioLanguage":{"type":"string","description":"Optional audio language override for explainer video generation metadata. If omitted, inherits from the source request when available."},"textLanguage":{"type":"string","description":"Optional text language override for explainer video generation metadata. If omitted, inherits from the source request when available."},"backgroundImageUrl":{"type":"string","description":"Optional background image URL for explainer video generation metadata. If omitted, inherits from the source request when available."},"voiceId":{"type":"integer","description":"Optional voice identifier for explainer video generation metadata. If omitted, inherits from the source request when available."}}}}}}
```

## The PublishTarget object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"PublishTarget":{"type":"object","properties":{"channel":{"type":"string","description":"Target channel for publishing (e.g., youtube)"},"youtubeAccountId":{"type":"string","nullable":true,"description":"Connected YouTube account ID to publish to"},"youtubePlaylistId":{"type":"string","nullable":true,"description":"Optional playlist ID to publish into"}}}}}}
```

## The FeedSelection object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"FeedSelection":{"type":"object","required":["feedId","feedItemIds"],"properties":{"feedId":{"type":"integer","description":"Identifier of the feed containing the cached items"},"feedItemIds":{"type":"array","items":{"type":"string"},"description":"Identifiers of cached posts or videos to include from that feed"}}}}}}
```

## The RecurringSchedule object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"RecurringSchedule":{"type":"object","properties":{"id":{"type":"string"},"prompt":{"type":"string"},"outputType":{"type":"string"},"format":{"type":"string","nullable":true,"description":"Video format for recurring video schedules (`explainer`, `brief`, or `cinematic`). `cinematic` costs 100 credits."},"language":{"type":"string"},"duration":{"type":"string","description":"Duration preference for audio and slide deck schedules. Video schedules do not use duration."},"style":{"type":"string"},"dailyCount":{"type":"integer"},"scheduleEndDate":{"type":"string","format":"date-time","nullable":true},"lastRunAt":{"type":"string","format":"date-time","nullable":true},"nextRunAt":{"type":"string","format":"date-time","nullable":true},"createdOn":{"type":"string","format":"date-time","nullable":true},"podcastId":{"type":"string","nullable":true},"episodeTitle":{"type":"string","nullable":true},"status":{"type":"string","enum":["active","paused","completed"]}}}}}}
```

## The RecurringScheduleDetail object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"RecurringScheduleDetail":{"type":"object","allOf":[{"$ref":"#/components/schemas/RecurringSchedule"},{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string"},"content":{"type":"string"}}}}}}]},"RecurringSchedule":{"type":"object","properties":{"id":{"type":"string"},"prompt":{"type":"string"},"outputType":{"type":"string"},"format":{"type":"string","nullable":true,"description":"Video format for recurring video schedules (`explainer`, `brief`, or `cinematic`). `cinematic` costs 100 credits."},"language":{"type":"string"},"duration":{"type":"string","description":"Duration preference for audio and slide deck schedules. Video schedules do not use duration."},"style":{"type":"string"},"dailyCount":{"type":"integer"},"scheduleEndDate":{"type":"string","format":"date-time","nullable":true},"lastRunAt":{"type":"string","format":"date-time","nullable":true},"nextRunAt":{"type":"string","format":"date-time","nullable":true},"createdOn":{"type":"string","format":"date-time","nullable":true},"podcastId":{"type":"string","nullable":true},"episodeTitle":{"type":"string","nullable":true},"status":{"type":"string","enum":["active","paused","completed"]}}}}}}
```

## The WebsiteDiscoveryLink object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"WebsiteDiscoveryLink":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}}}}}}
```

## The Citation object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Citation":{"type":"object","properties":{"text":{"type":"string","description":"Citation text"},"source":{"type":"string","description":"Source of the citation"},"page":{"type":"integer","description":"Page number for PDF sources"},"timeMs":{"type":"integer","description":"Timestamp in milliseconds for audio/video sources"}}}}}}
```

## The Usage object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Usage":{"type":"object","properties":{"allowed":{"type":"integer","description":"Total credits allowed"},"used":{"type":"integer","description":"Total credits used"},"allowedDailyPodcasts":{"type":"integer","description":"Daily podcast limit"},"usedDailyPodcasts":{"type":"integer","description":"Podcasts created today"}}}}}}
```

## The QueueStats object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"QueueStats":{"type":"object","properties":{"success":{"type":"boolean"},"queued":{"type":"integer","description":"Requests waiting to be picked up for processing"},"processing":{"type":"integer","description":"Requests currently in progress"},"active":{"type":"integer","description":"queued + processing"}}}}}}
```

## The QueueRequestSummary object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"QueueRequestSummary":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"integer"},"request_type_id":{"type":"integer"},"output_type":{"type":"string","nullable":true},"requested_on":{"type":"string","format":"date-time","nullable":true},"processing_on":{"type":"string","format":"date-time","nullable":true},"scheduled_on":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The QueueRequestsResponse object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"QueueRequestsResponse":{"type":"object","properties":{"success":{"type":"boolean"},"state":{"type":"string","enum":["queued","processing","active"]},"ids":{"type":"array","items":{"type":"string"}},"items":{"type":"array","items":{"$ref":"#/components/schemas/QueueRequestSummary"}},"count":{"type":"integer","description":"Number of items in this page"},"total_count":{"type":"integer"},"page":{"type":"integer"},"page_size":{"type":"integer"},"total_pages":{"type":"integer"}}},"QueueRequestSummary":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"integer"},"request_type_id":{"type":"integer"},"output_type":{"type":"string","nullable":true},"requested_on":{"type":"string","format":"date-time","nullable":true},"processing_on":{"type":"string","format":"date-time","nullable":true},"scheduled_on":{"type":"string","format":"date-time","nullable":true}}}}}}
```

## The Podcast object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Podcast":{"type":"object","properties":{"id":{"type":"string","description":"Podcast ID"},"requestTypeId":{"type":"integer","description":"Type of podcast request"},"audioTitle":{"type":"string","description":"Title of the podcast"},"audioUrl":{"type":"string","description":"URL to the audio file"},"responseText":{"type":"string","description":"Podcast transcript/text"},"requestedOn":{"type":"string","format":"date-time","description":"When the podcast was requested"},"succeededOn":{"type":"string","format":"date-time","description":"When the podcast was completed"},"errorOn":{"type":"string","format":"date-time","description":"When the podcast failed (if applicable)"},"processingOn":{"type":"string","format":"date-time","description":"When the podcast started processing (if applicable)"},"errorMessage":{"type":"string","description":"Error message if the podcast failed"},"status":{"type":"integer","description":"Current status of the podcast"},"shareUrl":{"type":"string","description":"Public sharing URL for the podcast"}}}}}}
```

## The Transcript object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Transcript":{"type":"object","properties":{"id":{"type":"string","description":"Transcript ID"},"audioTitle":{"type":"string","description":"Title of the original audio"},"audioUrl":{"type":"string","description":"URL to the original audio file"},"responseText":{"type":"string","description":"The transcript text content"},"requestedOn":{"type":"string","format":"date-time","description":"When the transcript was requested"},"succeededOn":{"type":"string","format":"date-time","description":"When the transcript was completed"},"errorOn":{"type":"string","format":"date-time","description":"When the transcript failed (if applicable)"},"processingOn":{"type":"string","format":"date-time","description":"When the transcript started processing (if applicable)"},"errorMessage":{"type":"string","description":"Error message if the transcript failed"},"status":{"type":"integer","description":"Current status of the transcript"},"language":{"type":"string","description":"Language of the transcript"},"callbackData":{"type":"string","description":"Optional callback data provided during request"},"scheduledOn":{"type":"string","format":"date-time","description":"When the transcript was scheduled"}}}}}}
```

## The DataTable object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"DataTable":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the data table (matches request id)"},"url":{"type":"string","format":"uri","nullable":true,"description":"URL of the generated data table file (null while processing)"},"status":{"type":"integer","description":"Current progress percentage (100 when completed)"},"createdOn":{"type":"string","format":"date-time","description":"UTC timestamp when the data table was created (or requested if still in progress)"}}}}}}
```

## The Document object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Document":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the document (matches request id)"},"type":{"type":"string","description":"Document type"},"format":{"type":"string","enum":["text","html","pdf"],"description":"Stored result format"},"title":{"type":"string","nullable":true,"description":"Optional document title"},"status":{"type":"integer","description":"Current progress percentage (100 when completed)"},"createdOn":{"type":"string","format":"date-time","description":"UTC timestamp when the document row was created"},"content":{"type":"string","nullable":true,"description":"Text or HTML content when format is `text` or `html`"},"url":{"type":"string","nullable":true,"description":"Direct PDF URL when format is `pdf`"}}}}}}
```

## The Infographic object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Infographic":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the infographic (matches request id)"},"imageUrl":{"type":"string","format":"uri","nullable":true,"description":"URL of the generated infographic image (null while processing)"},"title":{"type":"string","nullable":true,"description":"Optional title for the infographic"},"status":{"type":"integer","description":"Current progress percentage (100 when completed)"},"createdOn":{"type":"string","format":"date-time","description":"UTC timestamp when the infographic was created (or requested if still in progress)"}}}}}}
```

## The Quiz object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Quiz":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the quiz (matches request id)"},"quizJson":{"type":"string","nullable":true,"description":"Quiz JSON content (null while processing)"},"status":{"type":"integer","description":"Current progress percentage (100 when completed)"},"createdOn":{"type":"string","format":"date-time","description":"UTC timestamp when the quiz was created (or requested if still in progress)"}}}}}}
```

## The SlideDeck object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"SlideDeck":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the slide deck (matches request id)"},"url":{"type":"string","format":"uri","nullable":true,"description":"URL of the generated slide deck (null while processing)"},"title":{"type":"string","nullable":true,"description":"Optional title for the slide deck"},"status":{"type":"integer","description":"Current progress percentage (100 when completed)"},"createdOn":{"type":"string","format":"date-time","description":"UTC timestamp when the slide deck was created (or requested if still in progress)"}}}}}}
```

## The Avatar object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Avatar":{"type":"object","properties":{"id":{"type":"string","description":"Avatar identifier"},"name":{"type":"string","description":"Avatar display name"},"gender":{"type":"string","enum":["M","F"],"description":"Avatar gender (M = Male, F = Female)"}}}}}}
```

## The Short object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Short":{"type":"object","properties":{"id":{"type":"string","description":"Short video identifier"},"status":{"type":"integer","description":"Status code (0 = pending, 10-90 = processing, 100 = completed, -1 = failed)"},"requestedOn":{"type":"string","format":"date-time","description":"Request creation date"},"processingOn":{"type":"string","format":"date-time","description":"Processing start date"},"succeededOn":{"type":"string","format":"date-time","description":"Completion date"},"requestTypeId":{"type":"integer","description":"Request type ID (4 = Short)"},"callbackData":{"type":"string","description":"Custom callback data"},"audioUrl":{"type":"string","description":"URL to the audio used for the short"},"videoUrl":{"type":"string","description":"URL to the generated short video (when completed)"},"imageUrl":{"type":"string","description":"URL to the thumbnail image (when completed)"},"audioTitle":{"type":"string","description":"Title of the short video"},"responseText":{"type":"string","description":"Text content used in the short"},"errorOn":{"type":"string","format":"date-time","description":"Error occurrence date (if applicable)"},"errorMessage":{"type":"string","description":"Error message (if applicable)"}}}}}}
```

## The TranscriptLine object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"TranscriptLine":{"type":"object","properties":{"text":{"type":"string","description":"Transcript line text"},"speaker":{"type":"string","description":"Speaker label"},"timestamp":{"type":"array","description":"Start/end time in seconds","items":{"type":"number"}}}}}}}
```

## The ExplainerTranscript object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"ExplainerTranscript":{"type":"object","properties":{"videoId":{"type":"string","description":"Explainer video identifier (request ID)"},"createdOn":{"type":"string","format":"date-time","description":"Transcript creation timestamp"},"transcript":{"type":"array","items":{"$ref":"#/components/schemas/TranscriptLine"}}}},"TranscriptLine":{"type":"object","properties":{"text":{"type":"string","description":"Transcript line text"},"speaker":{"type":"string","description":"Speaker label"},"timestamp":{"type":"array","description":"Start/end time in seconds","items":{"type":"number"}}}}}}}
```

## The Feed object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Feed":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the feed"},"name":{"type":"string","description":"Name of the feed"},"token":{"type":"string","description":"Client token (null for public feeds)"},"feedTypeId":{"type":"integer","description":"Type of feed (1 for X/Twitter, 2 for Reddit, 3 for YouTube channel)"},"internalId":{"type":"string","description":"Internal identifier for the feed source (username for X, subreddit for Reddit, channel source ID for YouTube)"},"createdOn":{"type":"string","format":"date-time","description":"Creation timestamp"}}}}}}
```

## The FeedSubscription object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"FeedSubscription":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the subscription"},"feedId":{"type":"integer","description":"Identifier of the subscribed feed"},"token":{"type":"string","description":"Token that owns the subscription"},"requestId":{"type":"string","description":"ClientRequest template identifier used for automation"},"createdOn":{"type":"string","format":"date-time","description":"When the subscription was created"},"removedOn":{"type":"string","format":"date-time","nullable":true,"description":"When the subscription was removed, if applicable"},"lastProcessedItemId":{"type":"string","nullable":true,"description":"Identifier of the last feed item processed for this subscription"},"lastProcessedOn":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last processed feed item"},"request":{"type":"object","nullable":true,"description":"Snapshot of the underlying template request"}}}}}}
```

## The CreateFeedRequest object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"CreateFeedRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Name of the feed"},"feedTypeId":{"type":"integer","description":"Type of feed (1 for X/Twitter, 2 for Reddit, 3 for YouTube channel)"},"internalId":{"type":"string","description":"Internal identifier - Twitter username for X, subreddit name for Reddit (without r/ prefix). For YouTube channels this is populated automatically."},"channel":{"type":"string","description":"(YouTube only) Channel handle, URL, or ID. Either `channel` or `url` may be provided."},"url":{"type":"string","description":"(YouTube only) Channel URL alternative field."}}}}}}
```

## The DeleteFeedRequest object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"DeleteFeedRequest":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","description":"ID of the feed to delete"}}}}}}
```

## The CreatePodcastShowRequest object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"CreatePodcastShowRequest":{"type":"object","required":["name","description","author","link","imageUrl","email"],"properties":{"name":{"type":"string","description":"Podcast show name (displayed on Spotify, Apple Music, etc.)"},"description":{"type":"string","description":"Show description for platform listings and RSS feed"},"author":{"type":"string","description":"Host/author name displayed on podcast platforms"},"link":{"type":"string","format":"uri","description":"Official website URL for the podcast show"},"imageUrl":{"type":"string","format":"uri","description":"URL of the podcast show image/artwork"},"email":{"type":"string","format":"email","description":"Owner email address for RSS feed and platform registration"},"language":{"type":"string","description":"Primary language for generated podcast episodes (defaults to English)"}}}}}}
```

## The PodcastShow object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"PodcastShow":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the podcast show"},"name":{"type":"string","description":"Name of the podcast show (displayed on Spotify, Apple Music, etc.)"},"description":{"type":"string","description":"Description of the podcast show (used in platform listings)"},"author":{"type":"string","description":"Author/host name (displayed on podcast platforms)"},"link":{"type":"string","description":"Website link for the podcast show"},"email":{"type":"string","format":"email","description":"Owner email address (used in RSS feed and platform settings)"},"token":{"type":"string","description":"Client token for authentication"},"createdOn":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedOn":{"type":"string","format":"date-time","description":"Last update timestamp"},"rssUrl":{"type":"string","description":"RSS feed URL for automated distribution to Spotify, Apple Music, and other podcast platforms"}}}}}}
```

## The PodcastEpisode object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"PodcastEpisode":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the episode"},"podcastId":{"type":"string","description":"ID of the podcast show this episode belongs to"},"requestId":{"type":"string","description":"ID of the client request that created the source audio content"},"title":{"type":"string","description":"Episode title (displayed on podcast platforms)"},"description":{"type":"string","description":"Episode description (displayed on podcast platforms)"},"audioTitle":{"type":"string","description":"Original title from the generated audio content"},"audioUrl":{"type":"string","description":"Direct URL to the episode audio file (MP3 format for platform compatibility)"},"requestedOn":{"type":"string","format":"date-time","description":"When the episode was requested/created"},"succeededOn":{"type":"string","format":"date-time","description":"When the episode processing completed successfully"},"scheduledOn":{"type":"string","format":"date-time","description":"When the episode is scheduled to be published (if scheduled)"},"fileSize":{"type":"integer","description":"Audio file size in bytes (required for RSS enclosure tag)"},"durationSeconds":{"type":"integer","description":"Episode duration in seconds (displayed on podcast platforms)"}}}}}}
```

## The Project object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"Project":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the project (GUID)"},"name":{"type":"string","description":"Name of the project"},"description":{"type":"string","description":"Detailed description of the project"},"url":{"type":"string","description":"Optional URL associated with the project"},"token":{"type":"string","description":"Client token (owner of the project)"},"createdOn":{"type":"string","format":"date-time","description":"Creation timestamp"},"updatedOn":{"type":"string","format":"date-time","description":"Last update timestamp"},"active":{"type":"boolean","description":"Whether the project is active"},"imageUrl":{"type":"string","format":"uri","description":"Optional URL of the 200x50 brand image associated with the project"},"textColor":{"type":"string","nullable":true,"description":"Hex color (e.g."},"backgroundColor":{"type":"string","nullable":true,"description":"Hex color (e.g."},"brandColor":{"type":"string","nullable":true,"description":"Primary branding accent color applied to overlay shapes when branding is configured"},"accentColor":{"type":"string","nullable":true,"description":"Secondary accent color applied to overlay highlights and subtitles when branding is configured"}}}}}}
```

## The CreateProjectRequest object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"CreateProjectRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Name of the project (max 200 characters)"},"description":{"type":"string","description":"Detailed description of the project. Either description or url must be provided."},"url":{"type":"string","description":"Optional URL to fetch website content for auto-generating description. If provided without a description, AI will generate one."},"imageData":{"type":"string","description":"Optional base64 encoded PNG/JPG representing the project's brand image. Any dimensions are accepted—the API resizes it to 200x50 and flattens transparency onto a white background before storing the hosted copy as `imageUrl`."},"imageUrl":{"type":"string","format":"uri","description":"Optional HTTP/HTTPS URL to an existing PNG or JPG brand image. The API downloads the source, resizes it to 200x50, flattens transparency onto a white background, and hosts the optimized copy. Cannot be combined with `imageData`."},"textColor":{"type":"string","description":"Optional hex color (format","pattern":"^#[0-9A-Fa-f]{6}$"},"backgroundColor":{"type":"string","description":"Optional hex color (format","pattern":"^#[0-9A-Fa-f]{6}$"},"brandColor":{"type":"string","description":"Optional primary accent hex color (format","pattern":"^#[0-9A-Fa-f]{6}$"},"accentColor":{"type":"string","description":"Optional secondary accent hex color (format","pattern":"^#[0-9A-Fa-f]{6}$"}}}}}}
```

## The UpdateProjectRequest object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"UpdateProjectRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Updated name of the project (max 200 characters)"},"description":{"type":"string","description":"Updated description of the project. Either description or url must be provided."},"url":{"type":"string","description":"Optional URL to fetch website content for auto-generating description. If provided without a description, AI will generate one."},"imageData":{"type":"string","nullable":true,"description":"Optional base64 encoded PNG/JPG. Provide `null` to remove the current brand image. Any size is accepted and will be resized to 200x50 and flattened onto a white background on upload."},"imageUrl":{"type":"string","nullable":true,"format":"uri","description":"Optional HTTP/HTTPS URL pointing to a PNG or JPG brand image. Provide `null` to remove the stored image. The API stores a 200x50 white-background version. Cannot be combined with `imageData`."},"textColor":{"type":"string","nullable":true,"description":"Optional hex color (format","pattern":"^#[0-9A-Fa-f]{6}$"},"backgroundColor":{"type":"string","nullable":true,"description":"Optional hex color (format","pattern":"^#[0-9A-Fa-f]{6}$"},"brandColor":{"type":"string","nullable":true,"description":"Optional primary accent hex color (format","pattern":"^#[0-9A-Fa-f]{6}$"},"accentColor":{"type":"string","nullable":true,"description":"Optional secondary accent hex color (format","pattern":"^#[0-9A-Fa-f]{6}$"}}}}}}
```

## The XPost object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"XPost":{"type":"object","properties":{"id":{"type":"string","description":"Unique ID of the post (use this for refinement)"},"requestId":{"type":"string"},"result":{"type":"string","description":"The generated content or metadata"},"type":{"type":"string","description":"The post type (e.g., tweet or thread item)"},"order":{"type":"integer","description":"Order in the thread (starts at 0)"},"createdOn":{"type":"string","format":"date-time"},"tweetImageUrl":{"type":"string","nullable":true,"description":"Main image for the tweet (from user upload or provided URL)"},"dataTableImageUrl":{"type":"string","nullable":true,"description":"Optional URL to a generated data table image"},"barChartImageUrl":{"type":"string","nullable":true,"description":"Optional URL to a generated bar chart image"},"sources":{"type":"array","description":"Provenance entries describing where the content came from","items":{"$ref":"#/components/schemas/XPostSource"}},"shareUrl":{"type":"string","description":"Share URL for the post (only in getPodcasts response)"}}},"XPostSource":{"type":"object","properties":{"type":{"type":"string","description":"Classification of the source (e.g. feed, resource, deep-research)"},"sourceId":{"type":"string","nullable":true,"description":"Optional identifier for the source record"},"reference":{"type":"string","nullable":true,"description":"User-friendly reference like a URL or handle"},"description":{"type":"string","nullable":true,"description":"Short summary of the source content"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Arbitrary metadata captured for the source"}}}}}}
```

## The XPostSource object

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"components":{"schemas":{"XPostSource":{"type":"object","properties":{"type":{"type":"string","description":"Classification of the source (e.g. feed, resource, deep-research)"},"sourceId":{"type":"string","nullable":true,"description":"Optional identifier for the source record"},"reference":{"type":"string","nullable":true,"description":"User-friendly reference like a URL or handle"},"description":{"type":"string","nullable":true,"description":"Short summary of the source content"},"metadata":{"type":"object","nullable":true,"additionalProperties":true,"description":"Arbitrary metadata captured for the source"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.autocontentapi.com/readme/models.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
