# X

X (Twitter) operations

## Create an X (Twitter) post or thread request

> Creates a request to generate and publish a tweet or thread from various content sources. Supports immediate execution or scheduling.

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"tags":[{"name":"X","description":"X (Twitter) operations"}],"servers":[{"url":"https://api.autocontentapi.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/x/post":{"post":{"summary":"Create an X (Twitter) post or thread request","description":"Creates a request to generate and publish a tweet or thread from various content sources. Supports immediate execution or scheduling.","tags":["X"],"operationId":"createPost","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["tweet","thread"],"description":"Whether to create a single tweet or a thread"},"feedIds":{"type":"string","description":"Optional feed IDs to use as content sources (max 10). When using multipart/form-data, send as comma-separated string."},"deepResearchIds":{"type":"string","description":"Optional deep research request IDs to use as content sources (max 10). When using multipart/form-data, send as comma-separated string."},"projectIds":{"type":"string","description":"Optional project IDs to use as context for generation (max 10). When using multipart/form-data, send as comma-separated string."},"audioUrl":{"type":"string","description":"Optional audio URL to transcribe and use as content source"},"promptAudioFile":{"type":"string","format":"binary","description":"Audio file to upload and transcribe as style instructions (alternative to promptAudioUrl)"},"url":{"type":"string","description":"Optional URL to scrape and use as content source"},"text":{"type":"string","description":"Optional raw text to post (or to seed generation)"},"prompt":{"type":"string","description":"Optional style instructions to guide the content generation"},"tweetStyle":{"type":"string","enum":["OneLiner","Paragraphs","Explainer"],"description":"Optional formatting style for the tweet. OneLiner for concise tweets, Paragraphs for story-style tweets, Explainer for educational content. If not specified, a random style will be selected."},"count":{"type":"integer","minimum":1,"maximum":10,"description":"Number of tweets/threads to generate (default 1)"},"deepResearch":{"type":"boolean","description":"If true, triggers deep research to gather additional context and insights before generating the tweet/thread. This enhances the content with supporting evidence, implications, and key learnings."},"imageUrl":{"type":"string","description":"URL to an image to include context from (will be analyzed and described)"},"imageFile":{"type":"string","format":"binary","description":"Image file to upload and include context from (will be analyzed and described). Max 10MB."},"callbackData":{"type":"string","description":"Optional opaque value returned in eventual callbacks"},"isScheduled":{"type":"boolean","description":"If true, creates a recurring schedule instead of a one-time request"},"dailyCount":{"type":"integer","minimum":1,"maximum":100,"description":"Number of times per day to execute when scheduled (default 1)"},"scheduleEndDate":{"type":"string","format":"date-time","description":"Optional end date for the schedule. If not provided, schedule runs indefinitely."}},"oneOf":[{"required":["type","feedIds"]},{"required":["type","deepResearchIds"]},{"required":["type","audioUrl"]},{"required":["type","url"]},{"required":["type","text"]},{"required":["type","imageUrl"]},{"required":["type","imageFile"]}]}},"application/json":{"schema":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["tweet","thread"],"description":"Whether to create a single tweet or a thread"},"feedIds":{"type":"array","items":{"type":"integer"},"description":"Optional feed IDs to use as content sources (max 10)"},"deepResearchIds":{"type":"array","items":{"type":"string"},"description":"Optional deep research request IDs to use as content sources (max 10)"},"projectIds":{"type":"array","items":{"type":"string"},"description":"Optional project IDs to use as context for generation (max 10)"},"audioUrl":{"type":"string","description":"Optional audio URL to transcribe and use as content source"},"promptAudioUrl":{"type":"string","description":"URL to an audio file to transcribe and use as the prompt/style instructions"},"url":{"type":"string","description":"Optional URL to scrape and use as content source"},"text":{"type":"string","description":"Optional raw text to post (or to seed generation)"},"prompt":{"type":"string","description":"Optional style instructions to guide the content generation"},"imageUrl":{"type":"string","description":"URL to an image to include context from (will be analyzed and described)"},"tweetStyle":{"type":"string","enum":["OneLiner","Paragraphs","Explainer"],"description":"Optional formatting style for the tweet. OneLiner for concise tweets, Paragraphs for story-style tweets, Explainer for educational content. If not specified, a random style will be selected."},"count":{"type":"integer","minimum":1,"maximum":10,"description":"Number of tweets/threads to generate (default 1)"},"deepResearch":{"type":"boolean","description":"If true, triggers deep research to gather additional context and insights before generating the tweet/thread. This enhances the content with supporting evidence, implications, and key learnings."},"callbackData":{"type":"string","description":"Optional opaque value returned in eventual callbacks"},"isScheduled":{"type":"boolean","description":"If true, creates a recurring schedule instead of a one-time request"},"dailyCount":{"type":"integer","minimum":1,"maximum":100,"description":"Number of times per day to execute when scheduled (default 1)"},"scheduleEndDate":{"type":"string","format":"date-time","description":"Optional end date for the schedule. If not provided, schedule runs indefinitely."},"imageFile":{"type":"string","description":"Base64 encoded image file to include context from (will be analyzed and described). Cannot be used with imageUrl."}},"oneOf":[{"required":["type","feedIds"]},{"required":["type","deepResearchIds"]},{"required":["type","audioUrl"]},{"required":["type","url"]},{"required":["type","text"]},{"required":["type","imageUrl"]}]}}}},"responses":{"200":{"description":"Request accepted","content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Response for a one-time X post request","properties":{"request_id":{"type":"string","description":"The unique ID of the created request"}}},{"type":"object","description":"Response for a scheduled X post request","properties":{"schedule_id":{"type":"string","description":"The unique ID of the created schedule"},"message":{"type":"string","description":"Confirmation message for the schedule"},"dailyCount":{"type":"integer","description":"Number of times per day the X post will be created"},"endDate":{"type":"string","format":"date-time","description":"End date for the schedule, or null if no end date"}}}]}}}},"400":{"description":"Bad request - validation error or unauthorized access","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"401":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"429":{"description":"Too many requests - rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}}}}}}}
```

## Quick-create an X (Twitter) post or thread

> Minimal input endpoint. Provide type and either queryText or queryAudioFile, optionally an image.

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"tags":[{"name":"X","description":"X (Twitter) operations"}],"servers":[{"url":"https://api.autocontentapi.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/x/post/quick":{"post":{"summary":"Quick-create an X (Twitter) post or thread","description":"Minimal input endpoint. Provide type and either queryText or queryAudioFile, optionally an image.","tags":["X"],"operationId":"createPostQuick","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["tweet","thread"],"description":"Whether to create a single tweet or a thread"},"queryText":{"type":"string","description":"Text query to drive the generation (required if queryAudioFile not provided)"},"tweetStyle":{"type":"string","enum":["OneLiner","Paragraphs","Explainer"],"description":"Optional formatting style for the tweet. OneLiner for concise tweets, Paragraphs for story-style tweets, Explainer for educational content. If not specified, a random style will be selected."},"count":{"type":"integer","minimum":1,"maximum":10,"description":"Number of tweets/threads to generate (default 1)"},"deepResearch":{"type":"boolean","description":"If true, triggers deep research to gather additional context and insights before generating the tweet/thread. This enhances the content with supporting evidence, implications, and key learnings."},"queryAudioFile":{"type":"string","format":"binary","description":"Optional audio file to upload and transcribe as the query (required if queryText not provided)"},"imageFile":{"type":"string","format":"binary","description":"Optional image to upload and include context from"}}},"oneOf":[{"required":["type","queryText"]},{"required":["type","queryAudioFile"]}]}}},"responses":{"200":{"description":"Request accepted","content":{"application/json":{"schema":{"type":"object","properties":{"request_id":{"type":"string","description":"The unique ID of the created request"}}}}}},"400":{"description":"Bad request - validation error or unauthorized access","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"401":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"429":{"description":"Too many requests - rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}}}}}}}
```

## Refine an existing X (Twitter) post

> Refines an existing tweet based on user instructions while maintaining context. Costs 1 credit. Can update the tweet text and any associated data tables or charts.

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"tags":[{"name":"X","description":"X (Twitter) operations"}],"servers":[{"url":"https://api.autocontentapi.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/x/refine":{"post":{"summary":"Refine an existing X (Twitter) post","description":"Refines an existing tweet based on user instructions while maintaining context. Costs 1 credit. Can update the tweet text and any associated data tables or charts.","tags":["X"],"operationId":"refineTweet","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tweetId"],"properties":{"tweetId":{"type":"string","description":"The unique ID of the tweet to refine"},"prompt":{"type":"string","description":"Instructions for how to refine the tweet"},"promptAudioUrl":{"type":"string","description":"URL to an audio file to transcribe and use as refinement instructions. Required if prompt is not provided."}}}}}},"responses":{"200":{"description":"Tweet refined successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"post":{"type":"object","properties":{"id":{"type":"string","description":"The unique ID of the refined tweet"},"requestId":{"type":"string","description":"The original request ID"},"result":{"type":"string","description":"The refined tweet text"},"type":{"type":"string","description":"The post type"},"order":{"type":"integer","description":"Order in thread (0 for single tweets)"},"createdOn":{"type":"string","format":"date-time","description":"Original creation date"},"tweetImageUrl":{"type":"string","nullable":true,"description":"Main image for the tweet if present"},"dataTableImageUrl":{"type":"string","nullable":true,"description":"URL to updated data table image if present"},"barChartImageUrl":{"type":"string","nullable":true,"description":"URL to updated bar chart image if present"}}}}}}}},"400":{"description":"Bad request - validation error or insufficient credits","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"401":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"404":{"description":"Tweet not found or unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}}}}}}}
```

## Get generated X (Twitter) posts for the authenticated user

> Returns the list of generated X posts and threads, including visualization image URLs when available. Supports optional pagination.

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"tags":[{"name":"X","description":"X (Twitter) operations"}],"servers":[{"url":"https://api.autocontentapi.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"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"}}}}},"paths":{"/x/posts":{"get":{"summary":"Get generated X (Twitter) posts for the authenticated user","description":"Returns the list of generated X posts and threads, including visualization image URLs when available. Supports optional pagination.","tags":["X"],"operationId":"getPosts","responses":{"200":{"description":"Successfully retrieved X posts","content":{"application/json":{"schema":{"type":"object","properties":{"posts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique ID of the post (use this for refinement)"},"requestId":{"type":"string","description":"The request ID that generated this post"},"result":{"type":"string","description":"The tweet text content"},"type":{"type":"string","description":"The post type (tweet or thread item)"},"order":{"type":"integer","description":"Order in thread (starts at 0)"},"createdOn":{"type":"string","format":"date-time","description":"When the post was created"},"tweetImageUrl":{"type":"string","nullable":true,"description":"Main image for the tweet (from user upload or provided URL). When present, visualization images are not generated."},"dataTableImageUrl":{"type":"string","nullable":true,"description":"URL to generated data table image if present"},"barChartImageUrl":{"type":"string","nullable":true,"description":"URL to generated bar chart image if present"}}}}},"oneOf":[{"type":"object","description":"Non-paginated response (when page and limit are not provided)","properties":{"posts":{"type":"array","items":{"$ref":"#/components/schemas/XPost"}}}},{"type":"object","description":"Paginated response (when page or limit are provided)","properties":{"posts":{"type":"array","items":{"$ref":"#/components/schemas/XPost"}},"totalCount":{"type":"integer","description":"Total number of posts"},"page":{"type":"integer","description":"Current page number"},"pageSize":{"type":"integer","description":"Number of items per page"},"totalPages":{"type":"integer","description":"Total number of pages"}}}]}}}},"401":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}}},"parameters":[{"in":"query","name":"page","schema":{"type":"integer","minimum":1},"required":false,"description":"Page number for pagination (starts at 1). If not provided, returns all results."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"description":"Number of items per page (max 100, default 50 if page is specified)"}]}}}}
```

## Get a single generated X (Twitter) post by ID

> Returns a single generated tweet or thread item belonging to the authenticated user by its unique ID.

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"tags":[{"name":"X","description":"X (Twitter) operations"}],"servers":[{"url":"https://api.autocontentapi.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/x/posts/{id}":{"get":{"summary":"Get a single generated X (Twitter) post by ID","description":"Returns a single generated tweet or thread item belonging to the authenticated user by its unique ID.","tags":["X"],"operationId":"getPostById","parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The unique ID of the post to retrieve"}],"responses":{"200":{"description":"Successfully retrieved the X post","content":{"application/json":{"schema":{"type":"object","properties":{"post":{"type":"object","properties":{"id":{"type":"string","description":"Unique ID of the post"},"requestId":{"type":"string","description":"The request ID that generated this post"},"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","description":"When the post was created"},"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"}}}}}}}},"401":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"404":{"description":"Post not found or unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}}}}}}}
```

## Get recurring X (Twitter) templates

> Returns all recurring tweet/thread templates for the authenticated user with their configuration and scheduling details.

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"tags":[{"name":"X","description":"X (Twitter) operations"}],"servers":[{"url":"https://api.autocontentapi.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/x/recurring":{"get":{"summary":"Get recurring X (Twitter) templates","description":"Returns all recurring tweet/thread templates for the authenticated user with their configuration and scheduling details.","tags":["X"],"responses":{"200":{"description":"Successfully retrieved recurring templates","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique ID of the recurring template"},"type":{"type":"string","enum":["tweet","thread"],"description":"Type of X post to create"},"deletedOn":{"type":"string","format":"date-time","nullable":true,"description":"When the template was deleted (null if not deleted)"},"feedIds":{"type":"array","items":{"type":"integer"},"description":"Feed IDs used as content sources"},"deepResearchIds":{"type":"array","items":{"type":"string"},"description":"Deep research IDs used as content sources"},"projectIds":{"type":"array","items":{"type":"string"},"description":"Project IDs used as context"},"audioUrl":{"type":"string","nullable":true,"description":"Audio URL for transcription"},"url":{"type":"string","nullable":true,"description":"URL for content scraping"},"text":{"type":"string","nullable":true,"description":"Raw text content"},"prompt":{"type":"string","nullable":true,"description":"Style instructions for generation"},"imageUrl":{"type":"string","nullable":true,"description":"Image URL for context"},"promptAudioUrl":{"type":"string","nullable":true,"description":"Audio URL for prompt instructions"},"queryText":{"type":"string","nullable":true,"description":"Quick mode query text"},"queryAudioUrl":{"type":"string","nullable":true,"description":"Quick mode query audio URL"},"fast":{"type":"boolean","nullable":true,"description":"Whether this is a quick mode template"},"tweetStyle":{"type":"string","enum":["OneLiner","Paragraphs","Explainer"],"nullable":true,"description":"Formatting style for tweets. OneLiner for concise tweets, Paragraphs for story-style tweets, Explainer for educational content."},"callbackData":{"type":"string","nullable":true,"description":"User-specific callback data"},"dailyCount":{"type":"integer","description":"Number of executions per day"},"scheduleEndDate":{"type":"string","format":"date-time","nullable":true,"description":"End date for the recurring template (null = indefinite)"},"lastRunAt":{"type":"string","format":"date-time","nullable":true,"description":"Last execution timestamp"},"nextRunAt":{"type":"string","format":"date-time","nullable":true,"description":"Next scheduled execution (null = paused)"},"createdOn":{"type":"string","format":"date-time","description":"Template creation timestamp"}}}}}}}}},"401":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}}}}}}}
```

## Update a recurring X (Twitter) template

> Updates specific fields of a recurring template. Can be used to pause/resume, change frequency, update end date, or modify prompt.

```json
{"openapi":"3.0.0","info":{"title":"Content API","version":"1.0.0"},"tags":[{"name":"X","description":"X (Twitter) operations"}],"servers":[{"url":"https://api.autocontentapi.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/x/recurring/{id}":{"post":{"summary":"Update a recurring X (Twitter) template","description":"Updates specific fields of a recurring template. Can be used to pause/resume, change frequency, update end date, or modify prompt.","tags":["X"],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The unique ID of the recurring template to update"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"New style instructions for generation"},"dailyCount":{"type":"integer","minimum":1,"maximum":100,"description":"New number of executions per day"},"scheduleEndDate":{"type":"string","format":"date-time","nullable":true,"description":"New end date for the recurring executions (null to remove end date)"},"isActive":{"type":"boolean","description":"Set to false to pause the recurring template, true to resume"},"feedIds":{"type":"array","items":{"type":"integer"},"description":"Feed IDs to use as content sources (replaces existing)"},"deepResearchIds":{"type":"array","items":{"type":"string"},"description":"Deep research template IDs to use as content sources (replaces existing)"}}}}}},"responses":{"200":{"description":"Recurring template updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"template":{"type":"object","description":"The updated template with all fields (same structure as GET /x/recurring response items)"}}}}}},"400":{"description":"Bad request - validation error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"401":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"404":{"description":"Recurring template not found or unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}}}}}}}}}
```
