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

# Import a project

> Create a project from a complete script in one step: up to 20 chapters with up to 400 clips each. Every voice is checked before anything is created. client_refs in the response maps each client_ref to the created chapter or clip ID. Requires a paid Studio subscription and a free saved-project slot.

<section className="api-next-steps" aria-label="Continue building">
  ## Continue building

  <Columns cols={2}>
    <Card title="Manage Studio projects" icon="book-open" href="/guides/studio-projects">Import scripts, edit safely, and retry writes.</Card>
    <Card title="List clips" icon="list" href="/api-reference/studio/list-clips">Read a project's script and clip settings.</Card>
    <Card title="Studio CLI" icon="terminal" href="/cli/reference/studio">Run the same operations from a terminal.</Card>
  </Columns>
</section>


## OpenAPI

````yaml /openapi.json post /v1/studio/projects/import
openapi: 3.1.0
info:
  title: Breeze Developer API
  description: >-
    Breeze Developer API for models, voices, text-to-speech, history, balance,
    usage, and browser-managed API keys.
  version: 1.0.0
servers:
  - url: https://api.breeze.blue
security: []
tags:
  - name: Models
    description: Supported TTS models.
  - name: Text to Speech
    description: Text-to-speech synthesis and instruction enhancement.
  - name: Voices
    description: Saved voices and voice settings.
  - name: Voice Previews
    description: Create, audition, and save temporary voice previews.
  - name: Account
    description: Balance, usage, and API keys.
  - name: History
    description: Generated audio history.
  - name: Studio
    description: Projects, scripts, arrangement and audio materials.
paths:
  /v1/studio/projects/import:
    post:
      tags:
        - Studio
      summary: Import a project
      description: >-
        Create a project from a complete script in one step: up to 20 chapters
        with up to 400 clips each. Every voice is checked before anything is
        created. client_refs in the response maps each client_ref to the created
        chapter or clip ID. Requires a paid Studio subscription and a free
        saved-project slot.
      operationId: studio_projects_import
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectImport'
        required: true
      responses:
        '200':
          description: The imported project, with client_refs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResult'
          headers:
            x-breeze-api-key-id:
              description: >-
                Public API key identifier used to authenticate the request, when
                an API key was used.
              schema:
                type: string
        '401':
          description: HTTP 401 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: HTTP 403 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: HTTP 404 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: HTTP 409 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: HTTP 422 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '504':
          description: HTTP 504 error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl \
              --request POST \
              --url "https://api.breeze.blue/v1/studio/projects/import" \
              --header "xi-api-key: $BREEZE_API_KEY" \
              --header "Content-Type: application/json" \
              --data '{
              "title": "An evening story",
              "operation_id": "123e4567-e89b-42d3-a456-426614174000",
              "chapters": [
                {
                  "client_ref": "opening",
                  "title": "Opening",
                  "clips": [
                    {
                      "client_ref": "opening.line1",
                      "script": "The lights came on."
                    }
                  ]
                }
              ]
            }'
        - lang: Python
          label: Python
          source: |-
            from breeze_blue import BreezeBlue

            client = BreezeBlue()
            result = client.studio.projects.import_project({
                "title": "An evening story",
                "operation_id": "123e4567-e89b-42d3-a456-426614174000",
                "chapters": [
                    {
                        "client_ref": "opening",
                        "title": "Opening",
                        "clips": [
                            {
                                "client_ref": "opening.line1",
                                "script": "The lights came on.",
                            },
                        ],
                    },
                ],
            })
        - lang: TypeScript
          label: TypeScript
          source: |-
            import { BreezeBlueClient } from "@breeze.blue/sdk";

            const client = new BreezeBlueClient();
            const result = await client.studio.projects.importProject({
              title: "An evening story",
              operationId: "123e4567-e89b-42d3-a456-426614174000",
              chapters: [{
                clientRef: "opening",
                title: "Opening",
                clips: [{
                  clientRef: "opening.line1",
                  script: "The lights came on.",
                }],
              }],
            });
components:
  schemas:
    ProjectImport:
      properties:
        title:
          type: string
          maxLength: 120
          minLength: 1
          title: Title
          default: Untitled Project
          description: Project title.
        description:
          type: string
          maxLength: 1000
          title: Description
          default: ''
          description: Project description.
        tts_settings:
          anyOf:
            - $ref: '#/components/schemas/TtsSettings'
            - type: 'null'
          description: TTS model and language settings.
        default_voice_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 1
              pattern: \S
            - type: 'null'
          title: Default Voice Id
          description: Voice given to new clips that do not set voice_id.
        default_instructions:
          type: string
          maxLength: 1000
          title: Default Instructions
          default: ''
          description: Delivery instructions for clips with empty instructions.
        default_silence_ms:
          type: integer
          maximum: 600000
          minimum: 0
          title: Default Silence Ms
          default: 0
          description: >-
            Silence after each clip in milliseconds, unless the clip sets
            trailing_silence_ms.
        operation_id:
          type: string
          format: uuid
          title: Operation Id
          description: >-
            New UUID for each write. Retrying with the same ID and body returns
            the original result instead of repeating the write.
        chapters:
          items:
            $ref: '#/components/schemas/ImportChapter'
          type: array
          maxItems: 20
          minItems: 1
          title: Chapters
          description: Chapters in order, from 1 to 20.
      additionalProperties: false
      type: object
      required:
        - operation_id
        - chapters
      title: ProjectImport
    ProjectResult:
      properties:
        project:
          $ref: '#/components/schemas/ProjectView'
          description: The project after this request.
        edit_token:
          type: string
          title: Edit Token
          description: >-
            Current edit_token. Send it as expected_edit_token on the next
            write.
        client_refs:
          additionalProperties:
            type: string
          type: object
          title: Client Refs
          description: 'Import only: each client_ref mapped to its created ID.'
        created_ids:
          items:
            type: string
          type: array
          title: Created Ids
          description: IDs created by this request, in order.
      additionalProperties: false
      type: object
      required:
        - project
        - edit_token
      title: ProjectResult
    ErrorResponse:
      properties:
        ok:
          default: false
          title: Ok
          type: boolean
        code:
          title: Code
          type: string
        detail:
          title: Detail
          type: string
        error:
          title: Error
          type: string
        meta:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          default: null
          title: Meta
      required:
        - code
        - detail
        - error
      title: ErrorResponse
      type: object
    ValidationErrorResponse:
      properties:
        ok:
          default: false
          title: Ok
          type: boolean
        code:
          title: Code
          type: string
        detail:
          title: Detail
          type: string
        error:
          title: Error
          type: string
        meta:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Meta
      required:
        - code
        - detail
        - error
      title: ValidationErrorResponse
      type: object
    TtsSettings:
      properties:
        model:
          anyOf:
            - type: string
              maxLength: 120
            - type: 'null'
          title: Model
          description: TTS model ID from List models.
        language:
          anyOf:
            - type: string
              maxLength: 2
            - type: 'null'
          title: Language
          description: Project language code.
        generation_language:
          anyOf:
            - type: string
              maxLength: 2
            - type: 'null'
          title: Generation Language
          description: >-
            Language code sent with each generation. null lets the model detect
            the language.
        guidance_scale:
          anyOf:
            - type: number
              maximum: 10
              minimum: 1
            - type: 'null'
          title: Guidance Scale
          description: >-
            Generation guidance strength. Accepted range: 1.0 to 10.0. See
            [Voice
            settings](https://docs.breezeblue.ai/concepts/voices#voice-settings).
      additionalProperties: false
      type: object
      title: TtsSettings
    ImportChapter:
      properties:
        client_ref:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 1
              pattern: \S
            - type: 'null'
          title: Client Ref
          description: >-
            Your label for this chapter or clip, unique within an import. Import
            maps it to the created ID in client_refs.
        title:
          type: string
          maxLength: 200
          minLength: 1
          title: Title
          description: Chapter title.
        clips:
          items:
            $ref: '#/components/schemas/ClipFields'
          type: array
          maxItems: 400
          minItems: 1
          title: Clips
          description: Clips in order, from 1 to 400.
      additionalProperties: false
      type: object
      required:
        - title
        - clips
      title: ImportChapter
    ProjectView:
      properties:
        id:
          type: string
          title: Id
          description: Project ID.
        title:
          type: string
          title: Title
          description: Project title.
        description:
          type: string
          title: Description
          description: Project description.
        tts_settings:
          anyOf:
            - $ref: '#/components/schemas/TtsSettingsView'
            - type: 'null'
          description: TTS model and language settings.
        default_voice_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Default Voice Id
          description: Voice given to new clips that do not set voice_id.
        default_instructions:
          type: string
          title: Default Instructions
          description: Delivery instructions for clips with empty instructions.
        default_silence_ms:
          type: integer
          title: Default Silence Ms
          description: >-
            Silence after each clip in milliseconds, unless the clip sets
            trailing_silence_ms.
        edit_token:
          type: string
          title: Edit Token
          description: Current edit_token.
        created_at:
          type: string
          title: Created At
          description: Creation time (ISO 8601).
        updated_at:
          type: string
          title: Updated At
          description: Last update time (ISO 8601).
        chapter_count:
          type: integer
          title: Chapter Count
          description: Number of active chapters.
        clip_count:
          type: integer
          title: Clip Count
          description: Number of clips in active chapters.
      additionalProperties: false
      type: object
      required:
        - id
        - title
        - description
        - tts_settings
        - default_voice_id
        - default_instructions
        - default_silence_ms
        - edit_token
        - created_at
        - updated_at
        - chapter_count
        - clip_count
      title: ProjectView
    ClipFields:
      properties:
        client_ref:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 1
              pattern: \S
            - type: 'null'
          title: Client Ref
          description: >-
            Your label for this chapter or clip, unique within an import. Import
            maps it to the created ID in client_refs.
        name:
          type: string
          maxLength: 120
          title: Name
          default: ''
          description: Clip label shown in the editor.
        script:
          type: string
          maxLength: 1000
          title: Script
          default: ''
          description: Text to speak. Line breaks inside the text become spaces.
        instructions:
          type: string
          maxLength: 1000
          title: Instructions
          default: ''
          description: >-
            Delivery instructions for this clip. Empty uses the project's
            default_instructions. See [Expressive
            controls](https://docs.breezeblue.ai/guides/text-to-speech#tuning-expressive-controls),
            [Voice instruction
            prompting](https://docs.breezeblue.ai/guides/voice-instruction-prompting).
        voice_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 1
              pattern: \S
            - type: 'null'
          title: Voice Id
          description: >-
            Voice for this clip. See [List
            voices](https://docs.breezeblue.ai/api-reference/voices/list-voices).
        playback:
          $ref: '#/components/schemas/Playback'
          description: Playback speed and volume.
        trailing_silence_ms:
          anyOf:
            - type: integer
              maximum: 600000
              minimum: 0
            - type: 'null'
          title: Trailing Silence Ms
          description: >-
            Silence after the clip in milliseconds. null uses the project's
            default_silence_ms; 0 means no pause.
      additionalProperties: false
      type: object
      title: ClipFields
    TtsSettingsView:
      properties:
        model:
          anyOf:
            - type: string
            - type: 'null'
          title: Model
          description: TTS model ID from List models.
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: Project language code.
        generation_language:
          anyOf:
            - type: string
            - type: 'null'
          title: Generation Language
          description: >-
            Language code sent with each generation. null lets the model detect
            the language.
        guidance_scale:
          anyOf:
            - type: number
            - type: 'null'
          title: Guidance Scale
          description: 'Generation guidance strength. Accepted range: 1.0 to 10.0.'
      additionalProperties: false
      type: object
      title: TtsSettingsView
    Playback:
      properties:
        speed:
          type: number
          maximum: 2
          minimum: 0.5
          title: Speed
          default: 1
          description: Playback speed, from 0.5 to 2.
        volume:
          type: number
          maximum: 2
          minimum: 0.01
          title: Volume
          default: 1
          description: Volume multiplier, from 0.01 to 2.
      additionalProperties: false
      type: object
      title: Playback
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: xi-api-key
      description: Breeze Developer API key.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.