openapi: 3.2.0 info: title: WordPress.com REST API — wpcom/v2 namespace Posts To Podcast API version: v2 description: Derived by API Evangelist from the WordPress.com REST API route index published at https://public-api.wordpress.com/wpcom/v2/. Paths, HTTP methods, and parameter names/types/descriptions/defaults are taken verbatim from that index. Response schemas are not published in the route index, so successful responses are described but not schematised; the error envelope was observed live on public-api.wordpress.com. contact: name: Automattic url: https://developer.wordpress.com/docs/api/ x-derived-from: https://public-api.wordpress.com/wpcom/v2/ x-derived-by: API Evangelist enrichment pipeline servers: - url: https://public-api.wordpress.com security: - bearerAuth: [] tags: - name: posts-to-podcast paths: /wpcom/v2/sites/{wpcom_site}/posts-to-podcast: get: operationId: getWpcomV2SitesbyWpcomSitePostsToPodcast summary: GET /wpcom/v2/sites/{wpcom_site}/posts-to-podcast tags: - posts-to-podcast responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string post: operationId: postWpcomV2SitesbyWpcomSitePostsToPodcast summary: POST /wpcom/v2/sites/{wpcom_site}/posts-to-podcast tags: - posts-to-podcast responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string requestBody: content: application/json: schema: type: object properties: window: type: object description: 'Either { unit: days|weeks|months, n: } or { from, to } as ISO-8601 dates. Mutually exclusive with postIds.' postIds: type: array items: type: integer description: Explicit list of post IDs to source the episode from. Mutually exclusive with window. Lists longer than POST_IDS_MAX entries are truncated to the first POST_IDS_MAX after deduplication. length: type: string enum: - short - medium - long default: medium description: 'Length preset controlling the dialogue script''s total word budget: short (~450 words, ~3 min), medium (~1050 words, ~7 min), long (~1800 words, ~12 min). Does not affect which posts are included — that is fully determined by `postIds` or the resolved `window`. Defaults to medium.' voicePreset: type: string enum: - witty - earnest - professional default: witty description: Registered voice-preset id (one satirical + one mitigator pair). Defaults to witty. prompt: type: string default: '' description: Optional free-text steering for the dialogue stage. Influences tone, framing, and focus but cannot override output structure. /wpcom/v2/sites/{wpcom_site}/posts-to-podcast/episodes: get: operationId: getWpcomV2SitesbyWpcomSitePostsToPodcastEpisodes summary: GET /wpcom/v2/sites/{wpcom_site}/posts-to-podcast/episodes tags: - posts-to-podcast responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string - name: page in: query required: false schema: type: integer default: 1 - name: per_page in: query required: false schema: type: integer default: 5 /wpcom/v2/sites/{wpcom_site}/posts-to-podcast/jobs/{job_id}: get: operationId: getWpcomV2SitesbyWpcomSitePostsToPodcastJobsbyJobId summary: GET /wpcom/v2/sites/{wpcom_site}/posts-to-podcast/jobs/{job_id} tags: - posts-to-podcast responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string - name: job_id in: path required: true schema: type: string /wpcom/v2/sites/{wpcom_site}/posts-to-podcast/post-publish-promo/dismiss: post: operationId: postWpcomV2SitesbyWpcomSitePostsToPodcastPostPublishPromoDismiss summary: POST /wpcom/v2/sites/{wpcom_site}/posts-to-podcast/post-publish-promo/dismiss tags: - posts-to-podcast responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string components: schemas: WPRestError: type: object description: WordPress REST API error envelope (observed on public-api.wordpress.com). properties: code: type: string example: rest_unauthorized message: type: string example: Authentication required. data: type: object properties: status: type: integer example: 401 securitySchemes: oauth2: type: oauth2 description: WordPress.com OAuth 2.1, per https://public-api.wordpress.com/.well-known/openid-configuration flows: authorizationCode: authorizationUrl: https://public-api.wordpress.com/oauth2-1/authorize tokenUrl: https://public-api.wordpress.com/oauth2-1/token refreshUrl: https://public-api.wordpress.com/oauth2-1/token scopes: global: '' auth: '' openid: '' profile: '' email: '' users: '' sites: '' posts: '' comments: '' taxonomy: '' follow: '' sharing: '' freshly-pressed: '' notifications: '' insights: '' read: '' stats: '' media: '' menus: '' batch: '' videos: '' bearerAuth: type: http scheme: bearer