> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wondercraft.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create any audio content with an AI-generated script

> Starts a background job that creates an AI generated script and produces an audio file.
    The response contains a `job_id` that can be used with the `/podcast/{job_id}` endpoint
    to query for status.
    Requires a valid `X-API-TOKEN` header.

    Throws:
    - 429 if the user has too many jobs in flight.
    - 422 if provided voice_ids are not unique
    - 400 if any voice_ids or music_ids provided are invalid



## OpenAPI

````yaml POST /podcast
openapi: 3.1.0
info:
  title: Wondercraft Public API
  version: 0.0.1
servers:
  - url: https://api.wondercraft.ai/v1
    description: Base Wondercraft API
security: []
paths:
  /podcast:
    post:
      tags:
        - Podcasts
      summary: Create any audio content with an AI-generated script
      description: >-
        Starts a background job that creates an AI generated script and produces
        an audio file.
            The response contains a `job_id` that can be used with the `/podcast/{job_id}` endpoint
            to query for status.
            Requires a valid `X-API-TOKEN` header.

            Throws:
            - 429 if the user has too many jobs in flight.
            - 422 if provided voice_ids are not unique
            - 400 if any voice_ids or music_ids provided are invalid
      operationId: generate_ai_scripted_episode_podcast_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateAiScriptedEpisodeRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateEpisodeResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
components:
  schemas:
    GenerateAiScriptedEpisodeRequest:
      properties:
        prompt:
          type: string
          title: Prompt
          description: The prompt for the episode, can include links
        voice_ids:
          items:
            type: string
          type: array
          title: Voice Ids
          description: >-
            A list of voice_ids to use for the generated audio. If the script
            has multiple speakers, we will use the voices from this list in the
            order then appear in. All ids in this list must be unique. If no IDs
            are provided, up to 2 defaults will be used.
        music_spec:
          anyOf:
            - $ref: '#/components/schemas/MusicTrackSpec'
            - type: 'null'
          description: >-
            An optional spec for adding background music to the generated
            script. Note that if the chosenmusic track is longer than the
            duration of the generated script, it will be cut off.
      additionalProperties: false
      type: object
      required:
        - prompt
      title: GenerateAiScriptedEpisodeRequest
      description: >-
        A request to start a job that generates an audio file for audio content
        with a script generated by AI using the

        provided prompt.

        An optional list of Voice IDs can be provided to control the audio
        generation output. If no voice_ids are provided,

        defaults of up to 2 speakers will be chosen.
    GenerateEpisodeResponse:
      properties:
        job_id:
          type: string
          format: uuid
          title: Job Id
          description: >-
            The job ID for the episode generation. The status of this job can be
            queried using the`/podcast/{job_id}` endpoint.
      additionalProperties: false
      type: object
      required:
        - job_id
      title: GenerateEpisodeResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    MusicTrackSpec:
      properties:
        music_id:
          type: string
          title: Music Id
          description: >-
            The ID of the music track to used in the background. This can be
            copied from theWondercraft platform
        fade_in_ms:
          type: integer
          title: Fade In Ms
          description: >-
            The number of milliseconds to fade in from the start of the music
            track
          default: 0
        fade_out_ms:
          type: integer
          title: Fade Out Ms
          description: >-
            The number of milliseconds to fade out from the end of the music
            track
          default: 0
        playback_start:
          type: integer
          title: Playback Start
          description: >-
            A millisecond into the music track at which we start playing.
            Equivalent to trimming thebeginning of the music track. Defaults to
            0 (i.e. no trimming)
          default: 0
        playback_end:
          anyOf:
            - type: integer
            - type: 'null'
          title: Playback End
          description: >-
            How many milliseconds into the music should we playback. Equivalent
            to trimming up to this numberof milliseconds from the music track.
            Defaults to the entire music track.
        volume:
          type: number
          title: Volume
          description: >-
            The volume to apply to the music track. Defaults to 0.05. Must be
            between 0.0 and 1.0
          default: 0.05
        loop:
          type: boolean
          title: Loop
          description: Whether to loop the music track. Defaults to False.
          default: false
      additionalProperties: false
      type: object
      required:
        - music_id
      title: MusicTrackSpec
      description: >-
        A music track to add to the generated audio. Note that the music will
        always be added at the very beginning of the

        generated podcast and will be automatically trimmed to match the content
        length.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-KEY

````