openapi: 3.1.0

info:
  title: AssemblyAI API
  description: AssemblyAI API
  version: 1.3.4
  termsOfService: https://www.assemblyai.com/legal/terms-of-service
  contact:
    name: API Support
    email: support@assemblyai.com
    url: https://www.assemblyai.com/docs/

servers:
  - url: https://api.assemblyai.com
    description: AssemblyAI API
    x-fern-server-name: Default

tags:
  - name: transcript
    description: Transcript related operations
    externalDocs:
      url: https://www.assemblyai.com/docs/guides/transcribing-an-audio-file
  - name: streaming
    description: Streaming Speech-to-Text
    externalDocs:
      url: https://www.assemblyai.com/docs/streaming/universal-streaming

security:
  - ApiKey: []

paths:
  /v2/upload:
    post:
      tags:
        - transcript
      summary: Upload a media file
      description: |
        Upload a media file to AssemblyAI's servers.

        <Note>To upload a media file to our EU server, replace `api.assemblyai.com` with `api.eu.assemblyai.com`.</Note>
        <Warning>Requests to transcribe uploaded files must use an API key from the same project as the key that was used to upload the file. If you use an API key from a different project you will get a `403` error and "Cannot access uploaded file" message.</Warning>
      operationId: uploadFile
      x-fern-sdk-group-name: files
      x-fern-sdk-method-name: upload
      requestBody:
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            from assemblyai.prerecorded.v2 import Transcriber

            transcriber = Transcriber(api_key=os.environ["ASSEMBLYAI_API_KEY"])

            upload_url = transcriber.upload_file("./audio.mp3")
            print(upload_url)
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            const uploadUrl = await client.files.upload("./audio.mp3");
            console.log(uploadUrl);
        - lang: bash
          label: cURL
          source: |
            curl -s -X POST https://api.assemblyai.com/v2/upload \
              -H "authorization: $ASSEMBLYAI_API_KEY" \
              --data-binary @./audio.mp3 | jq -r .upload_url
        - lang: python
          label: Python
          source: |
            import os

            import requests

            headers = {"authorization": os.environ["ASSEMBLYAI_API_KEY"]}

            with open("./audio.mp3", "rb") as f:
                response = requests.post(
                    "https://api.assemblyai.com/v2/upload", headers=headers, data=f
                )

            response.raise_for_status()
            print(response.json()["upload_url"])
        - lang: javascript
          label: JavaScript
          source: |
            import { readFileSync } from "fs";

            const audio = readFileSync("./audio.mp3");

            const response = await fetch("https://api.assemblyai.com/v2/upload", {
              method: "POST",
              headers: { authorization: process.env.ASSEMBLYAI_API_KEY },
              body: audio,
            });

            const { upload_url } = await response.json();
            console.log(upload_url);
      responses:
        "200":
          x-label: Media file uploaded
          description: Media file uploaded successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UploadedFile"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/CannotAccessUploadedFile"
        "404":
          $ref: "#/components/responses/NotFound"
        "422":
          x-label: Upload failed
          description: |
            Upload failed (for example, when the request body is empty). The response body is plain text, not JSON.
          content:
            text/plain:
              schema:
                type: string
              example: "Upload failed, please try again. If you continue to have issues please reach out to support@assemblyai.com"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /v2/transcript:
    post:
      tags:
        - transcript
      summary: Transcribe audio
      description: |
        <Note>To use our EU server for transcription, replace `api.assemblyai.com` with `api.eu.assemblyai.com`.</Note>
        <Tip>Building a load test or submitting a large batch? [See our guide →](/pre-recorded-audio/guides/bulk-transcription-and-load-tests-at-scale)</Tip>
        Create a transcript from a media file that is accessible via a URL.
      operationId: createTranscript
      x-fern-sdk-group-name: transcripts
      x-fern-sdk-method-name: submit
      x-fern-request-name: TranscriptParams
      requestBody:
        description: Params to create a transcript
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TranscriptParams"
      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            from assemblyai.prerecorded.v2 import Transcriber

            transcriber = Transcriber(api_key=os.environ["ASSEMBLYAI_API_KEY"])

            # `submit` queues the job and returns right away; `transcribe` submits and polls.
            transcript = transcriber.submit("https://assembly.ai/wildfires.mp3")
            print(transcript.id, transcript.status)
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            // `submit` queues the job and returns right away; `transcribe` submits and polls.
            const transcript = await client.transcripts.submit({
              audio_url: "https://assembly.ai/wildfires.mp3",
            });
            console.log(transcript.id, transcript.status);
        - lang: bash
          label: cURL
          source: |
            curl -s -X POST https://api.assemblyai.com/v2/transcript \
              -H "authorization: $ASSEMBLYAI_API_KEY" \
              -H "content-type: application/json" \
              -d '{"audio_url": "https://assembly.ai/wildfires.mp3"}' | jq -r .id
        - lang: python
          label: Python
          source: |
            import os

            import requests

            response = requests.post(
                "https://api.assemblyai.com/v2/transcript",
                headers={"authorization": os.environ["ASSEMBLYAI_API_KEY"]},
                json={"audio_url": "https://assembly.ai/wildfires.mp3"},
            )

            response.raise_for_status()
            print(response.json()["id"])
        - lang: javascript
          label: JavaScript
          source: |
            const response = await fetch("https://api.assemblyai.com/v2/transcript", {
              method: "POST",
              headers: {
                authorization: process.env.ASSEMBLYAI_API_KEY,
                "content-type": "application/json",
              },
              body: JSON.stringify({ audio_url: "https://assembly.ai/wildfires.mp3" }),
            });

            const transcript = await response.json();
            console.log(transcript.id, transcript.status);
      responses:
        "200":
          x-label: Transcript created
          description: Transcript created and queued for processing
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Transcript"
              example:
                id: 0072a82b-aa22-4962-add2-6121c36c17c6
                language_model: assemblyai_default
                acoustic_model: assemblyai_default
                language_code: null
                speech_understanding: null
                translated_texts: null
                status: processing
                audio_url: "https://assembly.ai/wildfires.mp3"
                text: null
                words: null
                utterances: null
                confidence: null
                audio_duration: null
                punctuate: true
                format_text: true
                dual_channel: false
                webhook_url: null
                webhook_status_code: null
                webhook_auth: false
                webhook_auth_header_name: null
                speed_boost: false
                auto_highlights_result: null
                auto_highlights: true
                audio_start_from: null
                audio_end_at: null
                word_boost: []
                boost_param: null
                prompt: null
                keyterms_prompt: null
                filter_profanity: true
                redact_pii: false
                redact_pii_audio: false
                redact_pii_audio_quality: null
                redact_pii_audio_options: null
                redact_pii_policies: null
                redact_pii_sub: null
                redact_static_entities: null
                speaker_labels: true
                speaker_options:
                  min_speakers_expected: 2
                  max_speakers_expected: 2
                  advanced_speaker_segmentation: true
                content_safety: true
                iab_categories: true
                content_safety_labels: {}
                iab_categories_result: {}
                language_detection: true
                language_detection_options: null
                language_detection_results: null
                language_confidence_threshold: 0.7
                language_confidence: null
                custom_spelling: null
                throttled: false
                auto_chapters: false
                summarization: false
                summary_type: null
                summary_model: null
                custom_topics: false
                topics: []
                speech_threshold: null
                speech_model: null
                speech_models:
                  - universal-3-pro
                  - universal-2
                speech_model_used: null
                temperature: null
                remove_audio_tags: all
                chapters: null
                disfluencies: false
                entity_detection: true
                sentiment_analysis: true
                sentiment_analysis_results: null
                entities: null
                speakers_expected: 2
                summary: null
                custom_topics_results: null
                is_deleted: null
                multichannel: null
                project_id: 14296
                token_id: 14296
          links:
            GetTranscriptById:
              $ref: "#/components/links/GetTranscriptById"
            GetTranscriptSentencesById:
              $ref: "#/components/links/GetTranscriptSentencesById"
            GetTranscriptParagraphsById:
              $ref: "#/components/links/GetTranscriptParagraphsById"
            GetTranscriptSubtitlesById:
              $ref: "#/components/links/GetTranscriptSubtitlesById"
            GetTranscriptRedactedAudioById:
              $ref: "#/components/links/GetTranscriptRedactedAudioById"
            WordSearchByTranscriptId:
              $ref: "#/components/links/WordSearchByTranscriptId"
            DeleteTranscriptById:
              $ref: "#/components/links/DeleteTranscriptById"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
      callbacks:
        transcriptReadyWebhook:
          "{$request.body#/webhook_url}":
            post:
              summary: Transcript ready webhook
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: "#/components/schemas/TranscriptReadyNotification"
              responses:
                "2XX":
                  description: Successfully received the notification
                "4XX":
                  description: Invalid request
                "5XX":
                  description: Unexpected error
        redactedAudioWebhook:
          "{$request.body#/webhook_url}":
            post:
              summary: Redacted audio ready webhook
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: "#/components/schemas/RedactedAudioNotification"
              responses:
                "2XX":
                  description: Successfully received the notification
                "4XX":
                  description: Invalid request
                "5XX":
                  description: Unexpected error
    get:
      tags:
        - transcript
      summary: List transcripts
      x-fern-sdk-group-name: transcripts
      x-fern-sdk-method-name: list
      x-fern-request-name: ListTranscriptParams
      operationId: listTranscripts
      description: |
        <Note>To retrieve your transcriptions on our EU server, replace `api.assemblyai.com` with `api.eu.assemblyai.com`.</Note>
        Retrieve a list of transcripts you created.
        Transcripts are sorted from newest to oldest and can be retrieved for the last 90 days of usage. The previous URL always points to a page with older transcripts.

        If you need to retrieve transcripts from more than 90 days ago please reach out to our Support team at support@assemblyai.com.

        **Pagination**

        This endpoint returns paginated results. The response includes a `page_details` object with the following properties:
        - `page_details.limit` - Maximum number of transcripts per page.
        - `page_details.result_count` - Total number of transcripts returned on the current page.
        - `page_details.current_url` - URL to the current page.
        - `page_details.prev_url` - URL to the previous page of older transcripts.
        - `page_details.next_url` - URL to the next page of newer transcripts.
      parameters:
        - name: limit
          x-label: Limit
          in: query
          description: Maximum amount of transcripts to retrieve
          schema:
            type: integer
            minimum: 1
            maximum: 200
            default: 10
        - name: status
          x-label: Status
          in: query
          description: Filter by transcript status
          schema:
            $ref: "#/components/schemas/TranscriptStatus"

        - name: created_on
          x-label: Created on
          in: query
          description: Only get transcripts created on this date
          schema:
            type: string
            format: date

        - name: before_id
          x-label: Before ID
          in: query
          description: Get transcripts that were created before this transcript ID
          schema:
            type: string
            format: uuid

        - name: after_id
          x-label: After ID
          in: query
          description: Get transcripts that were created after this transcript ID
          schema:
            type: string
            format: uuid

        - name: throttled_only
          x-label: Throttled only
          in: query
          description: Only get throttled transcripts, overrides the status filter
          schema:
            type: boolean
            default: false
          deprecated: true
      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            from assemblyai import ListTranscriptParameters
            from assemblyai.prerecorded.v2 import Transcriber

            transcriber = Transcriber(api_key=os.environ["ASSEMBLYAI_API_KEY"])

            page = transcriber.list_transcripts(
                ListTranscriptParameters(limit=5, status="completed")
            )

            for item in page.transcripts:
                print(item.id, item.status)
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            const page = await client.transcripts.list({ limit: 5, status: "completed" });

            for (const item of page.transcripts) {
              console.log(item.id, item.status);
            }
        - lang: bash
          label: cURL
          source: |
            curl -s "https://api.assemblyai.com/v2/transcript?limit=5&status=completed" \
              -H "authorization: $ASSEMBLYAI_API_KEY" | jq -r '.transcripts[].id'
        - lang: python
          label: Python
          source: |
            import os

            import requests

            response = requests.get(
                "https://api.assemblyai.com/v2/transcript",
                headers={"authorization": os.environ["ASSEMBLYAI_API_KEY"]},
                params={"limit": 5, "status": "completed"},
            )

            response.raise_for_status()

            for item in response.json()["transcripts"]:
                print(item["id"], item["status"])
        - lang: javascript
          label: JavaScript
          source: |
            const params = new URLSearchParams({ limit: "5", status: "completed" });

            const response = await fetch(
              `https://api.assemblyai.com/v2/transcript?${params}`,
              { headers: { authorization: process.env.ASSEMBLYAI_API_KEY } },
            );

            const page = await response.json();

            for (const item of page.transcripts) {
              console.log(item.id, item.status);
            }
      responses:
        "200":
          description: |
            A list of transcripts. Transcripts are sorted from newest to oldest. The previous URL always points to a page with older transcripts.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TranscriptList"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /v2/transcript/{transcript_id}:
    get:
      tags:
        - transcript
      summary: Get transcript
      operationId: getTranscript
      x-fern-sdk-group-name: transcripts
      x-fern-sdk-method-name: get
      x-fern-request-name: GetTranscriptParams
      description: |
        <Note>To retrieve your transcriptions on our EU server, replace `api.assemblyai.com` with `api.eu.assemblyai.com`.</Note>
        Get the transcript resource. The transcript is ready when the "status" is "completed".
      parameters:
        - name: transcript_id
          x-label: Transcript ID
          in: path
          description: ID of the transcript
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            import assemblyai
            from assemblyai.prerecorded.v2 import Transcript

            # `Transcript.get_by_id()` uses the default client, which reads the global settings.
            assemblyai.settings.api_key = os.environ["ASSEMBLYAI_API_KEY"]

            transcript = Transcript.get_by_id("<TRANSCRIPT_ID>")
            print(transcript.status, transcript.text)
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            const transcript = await client.transcripts.get("<TRANSCRIPT_ID>");
            console.log(transcript.status, transcript.text);
        - lang: bash
          label: cURL
          source: |
            curl -s "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>" \
              -H "authorization: $ASSEMBLYAI_API_KEY" | jq -r '.status, .text'
        - lang: python
          label: Python
          source: |
            import os

            import requests

            response = requests.get(
                "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>",
                headers={"authorization": os.environ["ASSEMBLYAI_API_KEY"]},
            )

            response.raise_for_status()

            transcript = response.json()
            print(transcript["status"], transcript["text"])
        - lang: javascript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>",
              { headers: { authorization: process.env.ASSEMBLYAI_API_KEY } },
            );

            const transcript = await response.json();
            console.log(transcript.status, transcript.text);
      responses:
        "200":
          description: The transcript resource
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Transcript"
          links:
            GetTranscriptById:
              $ref: "#/components/links/GetTranscriptById"
            GetTranscriptSentencesById:
              $ref: "#/components/links/GetTranscriptSentencesById"
            GetTranscriptParagraphsById:
              $ref: "#/components/links/GetTranscriptParagraphsById"
            GetTranscriptSubtitlesById:
              $ref: "#/components/links/GetTranscriptSubtitlesById"
            GetTranscriptRedactedAudioById:
              $ref: "#/components/links/GetTranscriptRedactedAudioById"
            WordSearchByTranscriptId:
              $ref: "#/components/links/WordSearchByTranscriptId"
            DeleteTranscriptById:
              $ref: "#/components/links/DeleteTranscriptById"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

    delete:
      tags:
        - transcript
      summary: Delete transcript
      description: |
        <Note>To delete your transcriptions on our EU server, replace `api.assemblyai.com` with `api.eu.assemblyai.com`.</Note>
        Remove the data from the transcript and mark it as deleted.
        <Warning>Files uploaded via the `/upload` endpoint are immediately deleted alongside the transcript when you make a DELETE request, ensuring your data is removed from our systems right away.</Warning>
      operationId: deleteTranscript
      x-fern-sdk-group-name: transcripts
      x-fern-sdk-method-name: delete
      parameters:
        - name: transcript_id
          x-label: Transcript ID
          in: path
          description: ID of the transcript
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            import assemblyai
            from assemblyai.prerecorded.v2 import Transcript

            # `Transcript.delete_by_id()` uses the default client, which reads the global settings.
            assemblyai.settings.api_key = os.environ["ASSEMBLYAI_API_KEY"]

            transcript = Transcript.delete_by_id("<TRANSCRIPT_ID>")
            print(transcript.status)
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            const transcript = await client.transcripts.delete("<TRANSCRIPT_ID>");
            console.log(transcript.status);
        - lang: bash
          label: cURL
          source: |
            curl -s -X DELETE "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>" \
              -H "authorization: $ASSEMBLYAI_API_KEY" | jq -r .status
        - lang: python
          label: Python
          source: |
            import os

            import requests

            response = requests.delete(
                "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>",
                headers={"authorization": os.environ["ASSEMBLYAI_API_KEY"]},
            )

            response.raise_for_status()
            print(response.json()["status"])
        - lang: javascript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>",
              {
                method: "DELETE",
                headers: { authorization: process.env.ASSEMBLYAI_API_KEY },
              },
            );

            const transcript = await response.json();
            console.log(transcript.status);
      responses:
        "200":
          description: The deleted transcript response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Transcript"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /v2/transcript/{transcript_id}/{subtitle_format}:
    get:
      tags:
        - transcript
      summary: Get subtitles for transcript
      description: |
        <Note>To retrieve your transcriptions on our EU server, replace `api.assemblyai.com` with `api.eu.assemblyai.com`.</Note>
        Export your transcript in SRT or VTT format to use with a video player for subtitles and closed captions.
      operationId: getSubtitles
      x-fern-sdk-group-name: transcripts
      x-fern-sdk-method-name: getSubtitles
      x-fern-request-name: GetSubtitlesParams
      parameters:
        - name: transcript_id
          x-label: Transcript ID
          in: path
          description: ID of the transcript
          required: true
          schema:
            type: string
        - name: subtitle_format
          x-label: Subtitle format
          in: path
          description: The format of the captions
          required: true
          schema:
            $ref: "#/components/schemas/SubtitleFormat"
        - name: chars_per_caption
          x-label: Number of characters per caption
          in: query
          description: The maximum number of characters per caption
          schema:
            type: integer

      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            import assemblyai
            from assemblyai.prerecorded.v2 import Transcript

            # `Transcript.get_by_id()` uses the default client, which reads the global settings.
            assemblyai.settings.api_key = os.environ["ASSEMBLYAI_API_KEY"]

            transcript = Transcript.get_by_id("<TRANSCRIPT_ID>")

            srt = transcript.export_subtitles_srt(chars_per_caption=32)
            # vtt = transcript.export_subtitles_vtt(chars_per_caption=32)
            print(srt)
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            const srt = await client.transcripts.subtitles("<TRANSCRIPT_ID>", "srt", 32);
            // const vtt = await client.transcripts.subtitles("<TRANSCRIPT_ID>", "vtt", 32);
            console.log(srt);
        - lang: bash
          label: cURL
          source: |
            curl -s "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/srt?chars_per_caption=32" \
              -H "authorization: $ASSEMBLYAI_API_KEY"
        - lang: python
          label: Python
          source: |
            import os

            import requests

            response = requests.get(
                "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/srt",
                headers={"authorization": os.environ["ASSEMBLYAI_API_KEY"]},
                params={"chars_per_caption": 32},
            )

            response.raise_for_status()
            print(response.text)
        - lang: javascript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/srt?chars_per_caption=32",
              { headers: { authorization: process.env.ASSEMBLYAI_API_KEY } },
            );

            const srt = await response.text();
            console.log(srt);
      responses:
        "200":
          description: The exported captions as text
          content:
            text/plain:
              schema:
                type: string
                example: |
                  WEBVTT
                  00:12.340 --> 00:16.220
                  Last year I showed these two slides said that demonstrate
                  00:16.200 --> 00:20.040
                  that the Arctic ice cap which for most of the last 3,000,000 years has been the
                  00:20.020 --> 00:25.040
                  size of the lower 48 States has shrunk by 40% but this understates
              examples:
                srt:
                  $ref: "#/components/examples/SrtSubtitlesResponse"
                vtt:
                  $ref: "#/components/examples/VttSubtitlesResponse"
            text/html:
              schema:
                type: string
                example: |
                  WEBVTT
                  00:12.340 --> 00:16.220
                  Last year I showed these two slides said that demonstrate
                  00:16.200 --> 00:20.040
                  that the Arctic ice cap which for most of the last 3,000,000 years has been the
                  00:20.020 --> 00:25.040
                  size of the lower 48 States has shrunk by 40% but this understates
              examples:
                srt:
                  $ref: "#/components/examples/SrtSubtitlesResponse"
                vtt:
                  $ref: "#/components/examples/VttSubtitlesResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          x-label: Not found
          description: |
            Returned when `subtitle_format` is not `srt` or `vtt`. The response body is a plain HTML 404 page — the literal string `404: Not Found` — not JSON. Unknown `transcript_id` lookups, by contrast, return a `400` with a JSON `Error` object.
          content:
            text/html:
              schema:
                type: string
              example: "404: Not Found"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /v2/transcript/{transcript_id}/sentences:
    get:
      tags:
        - transcript
      summary: Get sentences in transcript
      operationId: getTranscriptSentences
      x-fern-sdk-group-name: transcripts
      x-fern-sdk-method-name: getSentences
      x-fern-request-name: GetSentencesParams
      description: |
        <Note>To retrieve your transcriptions on our EU server, replace `api.assemblyai.com` with `api.eu.assemblyai.com`.</Note>
        Get the transcript split by sentences. The API will attempt to semantically segment the transcript into sentences to create more reader-friendly transcripts.
      parameters:
        - name: transcript_id
          x-label: Transcript ID
          in: path
          description: ID of the transcript
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            import assemblyai
            from assemblyai.prerecorded.v2 import Transcript

            # `Transcript.get_by_id()` uses the default client, which reads the global settings.
            assemblyai.settings.api_key = os.environ["ASSEMBLYAI_API_KEY"]

            transcript = Transcript.get_by_id("<TRANSCRIPT_ID>")

            sentences = transcript.get_sentences()
            print(len(sentences), sentences[0].text)
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            const { sentences } = await client.transcripts.sentences("<TRANSCRIPT_ID>");
            console.log(sentences.length, sentences[0].text);
        - lang: bash
          label: cURL
          source: |
            curl -s "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/sentences" \
              -H "authorization: $ASSEMBLYAI_API_KEY" | jq -r '.sentences[].text'
        - lang: python
          label: Python
          source: |
            import os

            import requests

            response = requests.get(
                "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/sentences",
                headers={"authorization": os.environ["ASSEMBLYAI_API_KEY"]},
            )

            response.raise_for_status()

            sentences = response.json()["sentences"]
            print(len(sentences), sentences[0]["text"])
        - lang: javascript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/sentences",
              { headers: { authorization: process.env.ASSEMBLYAI_API_KEY } },
            );

            const { sentences } = await response.json();
            console.log(sentences.length, sentences[0].text);
      responses:
        "200":
          description: Exported sentences
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SentencesResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /v2/transcript/{transcript_id}/paragraphs:
    get:
      tags:
        - transcript
      summary: Get paragraphs in transcript
      operationId: getTranscriptParagraphs
      x-fern-sdk-group-name: transcripts
      x-fern-sdk-method-name: getParagraphs
      x-fern-request-name: GetParagraphsParams
      description: |
        <Note>To retrieve your transcriptions on our EU server, replace `api.assemblyai.com` with `api.eu.assemblyai.com`.</Note>
        Get the transcript split by paragraphs. The API will attempt to semantically segment your transcript into paragraphs to create more reader-friendly transcripts.
      parameters:
        - name: transcript_id
          x-label: Transcript ID
          in: path
          description: ID of the transcript
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            import assemblyai
            from assemblyai.prerecorded.v2 import Transcript

            # `Transcript.get_by_id()` uses the default client, which reads the global settings.
            assemblyai.settings.api_key = os.environ["ASSEMBLYAI_API_KEY"]

            transcript = Transcript.get_by_id("<TRANSCRIPT_ID>")

            paragraphs = transcript.get_paragraphs()
            print(len(paragraphs), paragraphs[0].text)
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            const { paragraphs } = await client.transcripts.paragraphs("<TRANSCRIPT_ID>");
            console.log(paragraphs.length, paragraphs[0].text);
        - lang: bash
          label: cURL
          source: |
            curl -s "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/paragraphs" \
              -H "authorization: $ASSEMBLYAI_API_KEY" | jq -r '.paragraphs[].text'
        - lang: python
          label: Python
          source: |
            import os

            import requests

            response = requests.get(
                "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/paragraphs",
                headers={"authorization": os.environ["ASSEMBLYAI_API_KEY"]},
            )

            response.raise_for_status()

            paragraphs = response.json()["paragraphs"]
            print(len(paragraphs), paragraphs[0]["text"])
        - lang: javascript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/paragraphs",
              { headers: { authorization: process.env.ASSEMBLYAI_API_KEY } },
            );

            const { paragraphs } = await response.json();
            console.log(paragraphs.length, paragraphs[0].text);
      responses:
        "200":
          description: Exported paragraphs
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ParagraphsResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /v2/transcript/{transcript_id}/word-search:
    get:
      tags:
        - transcript
      summary: Search words in transcript
      description: |
        <Note>To search through a transcription created on our EU server, replace `api.assemblyai.com` with `api.eu.assemblyai.com`.</Note>
        Search through the transcript for keywords. You can search for individual words, numbers, or phrases containing up to five words or numbers.
      operationId: wordSearch
      x-fern-sdk-group-name: transcripts
      x-fern-sdk-method-name: wordSearch
      x-fern-request-name: WordSearchParams
      parameters:
        - name: transcript_id
          x-label: Transcript ID
          in: path
          description: ID of the transcript
          required: true
          schema:
            type: string
        - name: words
          x-label: Words
          in: query
          description: Keywords to search for
          required: true
          style: form
          explode: false
          schema:
            type: array
            items:
              x-label: Word
              type: string

      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            import assemblyai
            from assemblyai.prerecorded.v2 import Transcript

            # `Transcript.get_by_id()` uses the default client, which reads the global settings.
            assemblyai.settings.api_key = os.environ["ASSEMBLYAI_API_KEY"]

            transcript = Transcript.get_by_id("<TRANSCRIPT_ID>")

            matches = transcript.word_search(["foo", "bar", "foo bar"])

            for match in matches:
                print(f"Found '{match.text}' {match.count} times in the transcript")
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            const { matches } = await client.transcripts.wordSearch("<TRANSCRIPT_ID>", [
              "foo",
              "bar",
              "foo bar",
            ]);

            for (const match of matches) {
              console.log(`Found '${match.text}' ${match.count} times in the transcript`);
            }
        - lang: bash
          label: cURL
          source: |
            curl -s "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/word-search?words=foo,bar,foo%20bar" \
              -H "authorization: $ASSEMBLYAI_API_KEY" | jq -c '.matches[] | {text, count}'
        - lang: python
          label: Python
          source: |
            import os

            import requests

            response = requests.get(
                "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/word-search",
                headers={"authorization": os.environ["ASSEMBLYAI_API_KEY"]},
                params={"words": ",".join(["foo", "bar", "foo bar"])},
            )

            response.raise_for_status()

            for match in response.json()["matches"]:
                print(f"Found '{match['text']}' {match['count']} times in the transcript")
        - lang: javascript
          label: JavaScript
          source: |
            const words = ["foo", "bar", "foo bar"];
            const params = new URLSearchParams({ words: words.join(",") });

            const response = await fetch(
              `https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/word-search?${params}`,
              { headers: { authorization: process.env.ASSEMBLYAI_API_KEY } },
            );

            const { matches } = await response.json();

            for (const match of matches) {
              console.log(`Found '${match.text}' ${match.count} times in the transcript`);
            }
      responses:
        "200":
          description: Word search response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WordSearchResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /v2/transcript/{transcript_id}/redacted-audio:
    get:
      tags:
        - transcript
      summary: Get redacted audio
      description: |
        <Note>To retrieve the redacted audio on the EU server, replace `api.assemblyai.com` with `api.eu.assemblyai.com` in the `GET` request above.</Note>
        <Note>Redacted audio files are only available for 24 hours. Make sure to download the file within this time frame.</Note>
        Retrieve the redacted audio object containing the status and URL to the redacted audio.
      operationId: getRedactedAudio
      x-fern-sdk-group-name: transcripts
      x-fern-sdk-method-name: getRedactedAudio
      x-fern-request-name: GetRedactedAudioParams
      parameters:
        - name: transcript_id
          x-label: Transcript ID
          in: path
          description: ID of the transcript
          required: true
          schema:
            type: string

      x-codeSamples:
        - lang: python
          label: Python SDK
          source: |
            import os

            import assemblyai
            from assemblyai.prerecorded.v2 import Transcript

            # `Transcript.get_by_id()` uses the default client, which reads the global settings.
            assemblyai.settings.api_key = os.environ["ASSEMBLYAI_API_KEY"]

            transcript = Transcript.get_by_id("<TRANSCRIPT_ID>")

            print(transcript.get_redacted_audio_url())
        - lang: javascript
          label: JavaScript SDK
          source: |
            import { AssemblyAI } from "assemblyai";

            const client = new AssemblyAI({ apiKey: process.env.ASSEMBLYAI_API_KEY });

            const { status, redacted_audio_url } =
              await client.transcripts.redactedAudio("<TRANSCRIPT_ID>");
            console.log(status, redacted_audio_url);
        - lang: bash
          label: cURL
          source: |
            curl -s "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/redacted-audio" \
              -H "authorization: $ASSEMBLYAI_API_KEY" | jq -r '.status, .redacted_audio_url'
        - lang: python
          label: Python
          source: |
            import os

            import requests

            response = requests.get(
                "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/redacted-audio",
                headers={"authorization": os.environ["ASSEMBLYAI_API_KEY"]},
            )

            response.raise_for_status()

            redacted_audio = response.json()
            print(redacted_audio["status"], redacted_audio["redacted_audio_url"])
        - lang: javascript
          label: JavaScript
          source: |
            const response = await fetch(
              "https://api.assemblyai.com/v2/transcript/<TRANSCRIPT_ID>/redacted-audio",
              { headers: { authorization: process.env.ASSEMBLYAI_API_KEY } },
            );

            const { status, redacted_audio_url } = await response.json();
            console.log(status, redacted_audio_url);
      responses:
        "200":
          description: The redacted audio object containing the status and URL to the redacted audio
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RedactedAudioResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

components:
  links:
    GetTranscriptById:
      operationId: getTranscript
      parameters:
        transcript_id: "$response.body#/id"
      description: The transcript ID can be used as the `transcript_id` parameter in `GET /v2/transcript/{transcript_id}`.
    GetTranscriptSentencesById:
      operationId: getSentences
      parameters:
        transcript_id: "$response.body#/id"
      description: The transcript ID can be used as the `transcript_id` parameter in `GET /v2/transcript/{transcript_id}/sentences`.
    GetTranscriptParagraphsById:
      operationId: getParagraphs
      parameters:
        transcript_id: "$response.body#/id"
      description: The transcript ID can be used as the `transcript_id` parameter in `GET /v2/transcript/{transcript_id}/paragraphs`.
    GetTranscriptSubtitlesById:
      operationId: getSubtitles
      parameters:
        transcript_id: "$response.body#/id"
      description: The transcript ID can be used as the `transcript_id` parameter in `GET /v2/transcript/{transcript_id}/{subtitle_format}`.
    GetTranscriptRedactedAudioById:
      operationId: getRedactedAudio
      parameters:
        transcript_id: "$response.body#/id"
      description: The transcript ID can be used as the `transcript_id` parameter in `GET /v2/transcript/{transcript_id}/redacted-audio`.
    WordSearchByTranscriptId:
      operationId: wordSearch
      parameters:
        transcript_id: "$response.body#/id"
      description: The transcript ID can be used as the `transcript_id` parameter in `GET /v2/transcript/{transcript_id}/word-search`.
    DeleteTranscriptById:
      operationId: deleteTranscript
      parameters:
        transcript_id: "$response.body#/id"
      description: The transcript ID can be used as the `transcript_id` parameter in `DELETE /v2/transcript/{transcript_id}`.
  schemas:
    TranscriptReadyNotification:
      description: The notification when the transcript status is completed or error.
      x-label: Transcript ready notification
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      properties:
        transcript_id:
          x-label: Transcript ID
          description: The ID of the transcript
          type: string
          format: uuid
        status:
          x-label: Transcript status
          description: The status of the transcript. Either completed or error.
          $ref: "#/components/schemas/TranscriptReadyStatus"
      required:
        - transcript_id
        - status
      example:
        {
          transcript_id: "9ea68fd3-f953-42c1-9742-976c447fb463",
          status: "completed",
        }

    RedactedAudioNotification:
      description: The notification when the redacted audio is ready.
      x-label: Redacted audio notification
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      allOf:
        - $ref: "#/components/schemas/RedactedAudioResponse"

    RedactedAudioResponse:
      type: object
      additionalProperties: false
      x-label: Redacted audio response
      x-fern-sdk-group-name: transcripts
      required:
        - status
        - redacted_audio_url
      properties:
        status:
          x-label: Status
          description: The status of the redacted audio
          $ref: "#/components/schemas/RedactedAudioStatus"
        redacted_audio_url:
          x-label: Redacted audio URL
          description: The URL of the redacted audio file
          type: string
          format: url
      example:
        {
          redacted_audio_url: "https://s3.us-west-2.amazonaws.com/api.assembly.ai.usw2/redacted-audio/785efd9e-0e20-45e1-967b-3db17770ed9f.wav?AWSAccessKeyId=aws-access-key0id&Signature=signature&x-amz-security-token=security-token&Expires=1698966551",
          status: "redacted_audio_ready",
        }

    RedactedAudioStatus:
      x-label: Redacted audio status
      description: The status of the redacted audio
      x-fern-sdk-group-name: transcripts
      type: string
      enum:
        - redacted_audio_ready
      x-aai-enum:
        redacted_audio_ready:
          label: Redacted audio is ready

    SubtitleFormat:
      x-label: Subtitle format
      description: Format of the subtitles
      x-fern-sdk-group-name: transcripts
      type: string
      enum:
        - srt
        - vtt
      x-aai-enum:
        srt:
          label: SRT
        vtt:
          label: VTT

    WordSearchResponse:
      x-label: Word search response
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      properties:
        id:
          x-label: Transcript ID
          description: The ID of the transcript
          type: string
          format: uuid
        total_count:
          x-label: Total count of matches
          description: The total count of all matched instances. For e.g., word 1 matched 2 times, and word 2 matched 3 times, `total_count` will equal 5.
          type: integer
        matches:
          x-label: Matches
          description: The matches of the search
          type: array
          items:
            x-label: Match
            $ref: "#/components/schemas/WordSearchMatch"
      required:
        - id
        - total_count
        - matches
      example:
        {
          id: "d5a3d302-066e-43fb-b63b-8f57baf185db",
          total_count: 10,
          matches:
            [
              {
                text: "smoke",
                count: 6,
                timestamps:
                  [
                    [250, 650],
                    [49168, 49398],
                    [55284, 55594],
                    [168888, 169118],
                    [215108, 215386],
                    [225944, 226170],
                  ],
                indexes: [0, 136, 156, 486, 652, 698],
              },
              {
                text: "wildfires",
                count: 4,
                timestamps:
                  [
                    [1668, 2346],
                    [33852, 34546],
                    [50118, 51110],
                    [231356, 232354],
                  ],
                indexes: [4, 90, 140, 716],
              },
            ],
        }

    WordSearchMatch:
      type: object
      x-label: Word search match
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      properties:
        text:
          x-label: Text
          description: The matched word
          type: string
        count:
          x-label: Count
          description: The total amount of times the word is in the transcript
          type: integer
        timestamps:
          x-label: Timestamps
          description: An array of timestamps
          type: array
          items:
            x-label: Timestamp
            $ref: "#/components/schemas/WordSearchTimestamp"
        indexes:
          x-label: Indexes
          description: An array of all index locations for that word within the `words` array of the completed transcript
          type: array
          items:
            x-label: Index
            type: integer
      required:
        - text
        - count
        - timestamps
        - indexes
      example:
        {
          text: "smoke",
          count: 6,
          timestamps:
            [
              [250, 650],
              [49168, 49398],
              [55284, 55594],
              [168888, 169118],
              [215108, 215386],
              [225944, 226170],
            ],
          indexes: [0, 136, 156, 486, 652, 698],
        }

    WordSearchTimestamp:
      x-label: Word search timestamp
      description: An array of timestamps structured as [`start_time`, `end_time`] in milliseconds
      x-fern-sdk-group-name: transcripts
      type: array
      items:
        x-label: Timestamp
        description: Timestamp in milliseconds
        type: integer
      example: [250, 650]

    Timestamp:
      x-label: Timestamp
      description: Timestamp containing a start and end property in milliseconds
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      properties:
        start:
          x-label: Start
          description: The start time in milliseconds
          type: integer
        end:
          x-label: End
          description: The end time in milliseconds
          type: integer
      required:
        - start
        - end
      example: { start: 3978, end: 5114 }

    # This type is used by the Transcriber
    TranscriptOptionalParams:
      x-label: Optional transcript parameters
      description: The parameters for creating a transcript
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      properties:
        audio_end_at:
          x-label: Audio end at
          description: The point in time, in milliseconds, to stop transcribing in your media file. See [Set the start and end of the transcript](https://www.assemblyai.com/docs/pre-recorded-audio/set-the-start-and-end-of-the-transcript) for more details.
          type: integer

        audio_start_from:
          x-label: Audio start from
          description: The point in time, in milliseconds, to begin transcribing in your media file. See [Set the start and end of the transcript](https://www.assemblyai.com/docs/pre-recorded-audio/set-the-start-and-end-of-the-transcript) for more details.
          type: integer

        auto_chapters:
          x-label: Auto chapters
          description: |
            Enable [Auto Chapters](https://www.assemblyai.com/docs/speech-understanding/auto-chapters), can be true or false. Requires `punctuate` to be `true`, and cannot be enabled together with `summarization`. Deprecated - use [LLM Gateway](https://www.assemblyai.com/docs/llm-gateway/quickstart) instead for more flexible chapter summaries. See the [updated Auto Chapters page](https://www.assemblyai.com/docs/speech-understanding/auto-chapters) for details.

            Note: This parameter is only supported for the Universal-2 model.
          type: boolean
          default: false
          deprecated: true

        auto_highlights:
          x-label: Key phrases
          description: Enable [Key Phrases](https://www.assemblyai.com/docs/speech-understanding/key-phrases), either true or false
          type: boolean
          default: false

        content_safety:
          x-label: Content Moderation
          description: Enable [Content Moderation](https://www.assemblyai.com/docs/content-moderation), can be true or false
          type: boolean
          default: false

        content_safety_confidence:
          x-label: Content Moderation confidence
          description: The confidence threshold for the [Content Moderation](https://www.assemblyai.com/docs/content-moderation) model. Values must be between 25 and 100. Requires `content_safety` to be enabled; otherwise it's ignored.
          type: integer
          default: 50
          minimum: 25
          maximum: 100

        custom_spelling:
          x-label: Custom spellings
          description: Customize how words are spelled and formatted using to and from values. Each `to` value must be a single word, and each `from` phrase can contain at most 5 words. See [Custom Spelling](https://www.assemblyai.com/docs/pre-recorded-audio/correct-spelling-of-terms) for more details.
          type: array
          items:
            x-label: Custom spelling
            $ref: "#/components/schemas/TranscriptCustomSpelling"

        disfluencies:
          x-label: Disfluencies
          description: Transcribe [Filler Words](https://www.assemblyai.com/docs/pre-recorded-audio/include-filler-words), like "umm", in your media file; can be true or false. Supported on Universal-3.5 Pro and Universal-2.
          type: boolean
          default: false

        domain:
          x-label: Domain
          description: |
            Enable domain-specific transcription models to improve accuracy for specialized terminology. Set to `"medical-v1"` to enable [Medical Mode](https://www.assemblyai.com/docs/pre-recorded-audio/medical-mode) for improved accuracy of medical terms such as medications, procedures, conditions, and dosages.

            Supported languages: English (`en`), Spanish (`es`), German (`de`), French (`fr`). If `medical-v1` is used with an unsupported language, the parameter is ignored and a warning is returned.
          type:
            - string
            - "null"
          enum:
            - medical-v1
            - null
          default: null

        entity_detection:
          x-label: Entity Detection
          description: Enable [Entity Detection](https://www.assemblyai.com/docs/speech-understanding/entity-detection), can be true or false
          type: boolean
          default: false

        filter_profanity:
          x-label: Filter profanity
          description: Filter profanity from the transcribed text, can be true or false. See [Profanity Filtering](https://www.assemblyai.com/docs/profanity-filtering) for more details.
          type: boolean
          default: false

        format_text:
          x-label: Format text
          description: Enable [Text Formatting](https://www.assemblyai.com/docs/pre-recorded-audio), can be true or false
          type: boolean
          default: true

        iab_categories:
          x-label: Topic Detection
          description: Enable [Topic Detection](https://www.assemblyai.com/docs/speech-understanding/topic-detection), can be true or false
          type: boolean
          default: false

        keyterms_prompt:
          x-label: Keyterms prompt
          description: |
            Improve accuracy with up to 200 (for Universal-2) or 1000 (for Universal-3.5 Pro) domain-specific words or phrases (maximum 6 words per phrase). See [Keyterms Prompting](https://www.assemblyai.com/docs/pre-recorded-audio/universal-3-5-pro/prompting#keyterms-prompting) for more details.
          type: array
          items:
            x-label: Keyterm
            type: string

        language_code:
          x-label: Language code
          description: |
            The language of your audio file. Possible values are found in [Supported Languages](https://www.assemblyai.com/docs/pre-recorded-audio/supported-languages).
            If you don't specify a language, it's detected automatically. Cannot be used together with `language_detection`.
          oneOf:
            - anyOf:
                - $ref: "#/components/schemas/TranscriptLanguageCode"
                - type: string
            - type: "null"
          x-ts-type: LiteralUnion<TranscriptLanguageCode, string> | null
          x-go-type: TranscriptLanguageCode

        language_codes:
          description: |
            The language codes of your audio file. Used for [Code switching](/speech-to-text/pre-recorded-audio/code-switching)
            One of the values specified must be `en`.
          type: [array, "null"]
          items:
            x-label: Language code
            $ref: "#/components/schemas/TranscriptLanguageCode"

        language_confidence_threshold:
          x-label: Language confidence threshold
          description: |
            The confidence threshold for the automatically detected language.
            An error will be returned if the language confidence is below this threshold.
            Defaults to 0. Can only be set when `language_detection` is enabled. See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
          type: number
          format: float
          minimum: 0
          maximum: 1
          default: 0

        language_detection:
          x-label: Language detection
          description: |
            [Automatic language detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) identifies the spoken language and routes the request to the best model. It's applied automatically when you don't specify a `language_code`. Set to `false` only together with a `language_code`; disabling it without specifying a language returns an error.
          type: boolean

        language_detection_options:
          x-label: Specify options for Automatic Language Detection.
          description: Specify options for [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection).
          type: object
          additionalProperties: false
          properties:
            expected_languages:
              x-label: Expected languages
              description: List of languages expected in the audio file. Defaults to `["all"]` when unspecified. See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
              type: array
              items:
                x-label: language
                type: string
            fallback_language:
              x-label: Fallback language
              description: |
                If the detected language of the audio file is not in the list of expected languages, the `fallback_language` is used. Specify `["auto"]` to let our model choose the fallback language from `expected_languages` with the highest confidence score. See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
              type: string
              default: "auto"
            code_switching:
              x-label: Code switching
              description: |
                Whether [code switching](/speech-to-text/pre-recorded-audio/code-switching) should be detected.
              type: boolean
              default: false
            code_switching_confidence_threshold:
              x-label: Code switching confidence threshold
              description: |
                The confidence threshold for [code switching](/speech-to-text/pre-recorded-audio/code-switching) detection. If the code switching confidence is below this threshold, the transcript will be processed in the language with the highest `language_detection_confidence` score.
              type: number
              minimum: 0
              maximum: 1
              default: 0.3
            localization:
              x-label: Localization
              description: |
                Render the transcript in a regional variant of the detected language. Supported values are `en_au` (Australian English) and `en_uk` (British English) — only English is supported today, and you can specify at most one locale per base language. Base or default-region codes such as `en` and `en_us` are not localization variants and return a `400`.

                When the detected language matches the requested locale's base language, the transcript uses that locale's spelling and `language_code` returns the region-aware code (for example `en_au`) instead of the base `en`. Otherwise, when the detected language isn't available as a locale, the option is ignored. See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
              type: array
              items:
                x-label: locale
                type: string

        multichannel:
          x-label: Multichannel
          description: Enable [Multichannel](https://www.assemblyai.com/docs/pre-recorded-audio/transcribe-multiple-audio-channels) transcription, can be true or false.
          type: boolean
          default: false

        prompt:
          x-label: Prompt
          description: |
            Provide natural language prompting of up to 1,500 words of contextual information to the model. See the [Prompting Guide](https://www.assemblyai.com/docs/pre-recorded-audio/prompting) for best practices.

            Note: This parameter is only supported for the Universal-3.5 Pro model.
          type: string

        punctuate:
          x-label: Punctuate
          description: Enable [Automatic Punctuation](https://www.assemblyai.com/docs/pre-recorded-audio), can be true or false
          type: boolean
          default: true

        redact_pii:
          x-label: Redact PII
          description: Redact PII from the transcribed text using the Redact PII model, can be true or false. Requires `format_text` to be `true`. See [PII Redaction](https://www.assemblyai.com/docs/pii-redaction) for more details.
          type: boolean
          default: false

        redact_pii_audio:
          x-label: Redact PII audio
          description: Generate a copy of the original media file with spoken PII "beeped" out, can be true or false. Requires `redact_pii` to be `true`. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) for more details.
          type: boolean
          default: false

        redact_pii_audio_options:
          x-label: Specify options for PII redacted audio files.
          description: Specify options for [PII redacted audio](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) files.
          type: object
          additionalProperties: false
          properties:
            return_redacted_no_speech_audio:
              x-label: Return redacted no speech audio
              description: By default, audio redaction provides redacted audio URLs only when speech is detected. However, if your use-case specifically requires redacted audio files even for silent audio files without any dialogue, you can opt to receive these URLs by setting this parameter to `true`. Requires `redact_pii_audio` to be `true`.
              type: boolean
              default: false
            override_audio_redaction_method:
              x-label: Override audio redaction method
              description: Specify the method used to redact audio. By default, redacted audio uses a beep sound. Set to `silence` to replace PII with silence instead of a beep.
              type: string
              enum:
                - silence

        redact_pii_audio_quality:
          x-label: Redact PII audio quality
          description: Controls the filetype of the audio created by redact_pii_audio. Currently supports mp3 (default) and wav. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) for more details.
          default: mp3
          $ref: "#/components/schemas/RedactPiiAudioQuality"

        redact_pii_policies:
          x-label: Redact PII policies
          description: The list of PII Redaction policies to enable. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more details.
          type: array
          items:
            x-label: PII policy
            $ref: "#/components/schemas/PiiPolicy"

        redact_pii_sub:
          x-label: Redact PII substitution
          description: The replacement logic for detected PII, can be `entity_name` or `hash`. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more details.
          oneOf:
            - $ref: "#/components/schemas/SubstitutionPolicy"
            - type: "null"
          default: hash

        redact_pii_return_unredacted:
          x-label: Return unredacted transcript
          description: |
            When set to `true`, returns the original unredacted transcript alongside the redacted one in the same response. Requires `redact_pii` to be `true`, otherwise a 400 error is returned.

            When enabled, the response includes the additional fields `unredacted_text`, `unredacted_words`, and `unredacted_utterances`. The existing `text`, `words`, and `utterances` fields remain fully redacted. When disabled (default), the response is unchanged and contains only the redacted transcript. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more details.
          type: boolean
          default: false

        redact_static_entities:
          x-label: Redact static entities
          description: |
            A map of user-defined terms to redact, where each key is a redaction label and each value is a list of exact terms to match (e.g. `{ "INTERNAL_TOOL": ["Bearclaw", "Cubclaw"] }`). Each matching term in the transcript is redacted using the `redact_pii_sub` substitution, on top of standard PII Redaction. Useful for redacting specific, predefined terms (proprietary names, internal codenames) that aren't general PII categories.

            This is a literal find-and-replace (tolerant of casing, surrounding punctuation, and minor spacing/hyphenation), not a model — it does not generalize beyond the terms you provide. Requires `redact_pii` to be `true`, otherwise a 400 error is returned. When `redact_pii_audio` is enabled, matched terms are also redacted in the audio output. You can provide up to 100 labels, each with up to 200 terms of at most 200 characters; a label may contain only letters, numbers, spaces, underscores, and hyphens (max 80 characters). See [Static Entity Redaction](https://www.assemblyai.com/docs/guardrails/redact-pii-from-transcripts#static-entity-redaction) for more details.
          type: object
          additionalProperties:
            type: array
            items:
              type: string

        sentiment_analysis:
          x-label: Sentiment Analysis
          description: Enable [Sentiment Analysis](https://www.assemblyai.com/docs/speech-understanding/sentiment-analysis), can be true or false. Requires `punctuate` to be `true`.
          type: boolean
          default: false

        speaker_labels:
          x-label: Speaker labels
          description: Enable [Speaker diarization](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers), can be true or false. Requires `punctuate` to be `true`.
          type: boolean
          default: false

        speaker_options:
          x-label: Specify options for speaker diarization.
          description: Specify options for [Speaker diarization](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers#set-a-range-of-possible-speakers). Use this to set a range of possible speakers. Requires `speaker_labels` to be `true`, and cannot be used together with `speakers_expected`. When both bounds are set, `min_speakers_expected` must be less than or equal to `max_speakers_expected`.
          type: object
          additionalProperties: false
          properties:
            min_speakers_expected:
              x-label: Minimum speakers expected
              description: A hard lower limit on the number of speaker labels — the model won't return fewer speakers than this. See [Set a range of possible speakers](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers#set-a-range-of-possible-speakers) for more details.
              type: integer
            max_speakers_expected:
              x-label: Maximum speakers expected
              description: |
                <Warning>Setting this parameter too high may hurt model accuracy</Warning>
                A hard upper limit on the number of speaker labels. If more people speak than this value, the additional speakers are merged into existing labels. Setting it higher than the true number of speakers can cause the model to over-split and return more speakers than are actually present. The default depends on audio duration: no limit for 0-2 minutes, 10 for 2-10 minutes, and 30 for 10+ minutes. See [Set a range of possible speakers](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers#set-a-range-of-possible-speakers) for more details.
              type: integer

        speakers_expected:
          x-label: Speakers expected
          description: Tells the speaker label model how many speakers it should attempt to identify. Requires `speaker_labels` to be `true` and must be a positive integer; cannot be used together with `speaker_options`. See [Set number of speakers expected](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers#set-number-of-speakers-expected) for more details.
          type: [integer, "null"]
          default: null

        speech_models:
          x-label: Speech models
          description: |
            Optional. Supported values: `universal-3-5-pro`, `universal-2`. If omitted, defaults to `["universal-3-5-pro", "universal-2"]`. See [Model Selection](https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model) for available models and routing behavior.
          type: array
          items:
            x-label: Speech model
            $ref: "#/components/schemas/SpeechModel"
          default:
            - universal-3-5-pro
            - universal-2

        speech_threshold:
          x-label: Speech threshold
          description: |
            Reject audio files that contain less than this fraction of speech.
            Valid values are in the range [0, 1] inclusive. See [Speech Threshold](https://www.assemblyai.com/docs/speech-threshold) for more details.
          type: [number, "null"]
          format: float
          minimum: 0
          maximum: 1
          default: 0

        speech_understanding:
          x-label: Speech Understanding
          description: |
            Enable speech understanding tasks like [Translation](https://www.assemblyai.com/docs/speech-understanding/translation), [Speaker Identification](https://www.assemblyai.com/docs/speech-understanding/speaker-identification), and [Custom Formatting](https://www.assemblyai.com/docs/speech-understanding/custom-formatting). See the task-specific docs for available options and configuration.
          type: object
          properties:
            request:
              oneOf:
                - $ref: "#/components/schemas/TranslationRequestBody"
                - $ref: "#/components/schemas/SpeakerIdentificationRequestBody"
                - $ref: "#/components/schemas/CustomFormattingRequestBody"
                - $ref: "#/components/schemas/SummarizationRequestBody"
                - $ref: "#/components/schemas/ActionItemsRequestBody"
          required:
            - request
        summarization:
          x-label: Enable Summarization
          description: |
            Enable [Summarization](https://www.assemblyai.com/docs/speech-understanding/summarization), can be true or false. Requires both `punctuate` and `format_text` to be `true`, and cannot be enabled together with `auto_chapters`. Deprecated - use [LLM Gateway](https://www.assemblyai.com/docs/llm-gateway/quickstart) instead for more flexible summaries. See the [updated Summarization page](https://www.assemblyai.com/docs/speech-understanding/summarization) for details.

            Note: This parameter is only supported for the Universal-2 model.
          type: boolean
          default: false
          deprecated: true

        summary_model:
          x-label: Summary model
          description: The model to summarize the transcript. Must be set together with `summary_type`. Compatibility - `catchy` supports `gist` and `headline`; `informative` and `conversational` support `headline`, `paragraph`, `bullets`, and `bullets_verbose`. Deprecated - use [LLM Gateway](https://www.assemblyai.com/docs/llm-gateway/quickstart) instead for more flexible summaries. See the [updated Summarization page](https://www.assemblyai.com/docs/speech-understanding/summarization) for details.
          default: informative
          deprecated: true
          $ref: "#/components/schemas/SummaryModel"

        summary_type:
          x-label: Summary type
          description: The type of summary. Must be set together with `summary_model`; see `summary_model` for the supported model and type combinations. Deprecated - use [LLM Gateway](https://www.assemblyai.com/docs/llm-gateway/quickstart) instead for more flexible summaries. See the [updated Summarization page](https://www.assemblyai.com/docs/speech-understanding/summarization) for details.
          default: bullets
          deprecated: true
          $ref: "#/components/schemas/SummaryType"

        remove_audio_tags:
          x-label: Remove audio tags
          description: |
            Universal-3.5 Pro generates rich transcripts that can include inline annotations such as audio event markers and speaker cues. Set to `"all"` to remove all inline annotations, or `"speaker"` to remove only speaker cues while keeping other annotations. By default, all inline annotations are removed.

            Note: This parameter is only supported for the Universal-3.5 Pro model.
          oneOf:
            - type: string
              enum:
                - all
                - speaker
            - type: "null"
          default: all

        temperature:
          x-label: Temperature
          description: |
            Control the amount of randomness injected into the model's response. See the [Prompting Guide](https://www.assemblyai.com/docs/pre-recorded-audio/prompting) for more details.

            Note: This parameter only takes effect on the Universal-3.5 Pro model.
          type: number
          minimum: 0.0
          maximum: 1.0
          default: 0.0

        webhook_auth_header_name:
          x-label: Webhook auth header name
          description: The header name to be sent with the transcript completed or failed [webhook](https://www.assemblyai.com/docs/deployment/webhooks-for-pre-recorded-audio) requests. Must be 1-1000 characters and contain only ASCII letters, numbers, hyphens, and underscores. Requires `webhook_auth_header_value` and `webhook_url` to also be set.
          type: [string, "null"]
          default: null

        webhook_auth_header_value:
          x-label: Webhook auth header value
          description: The header value to send back with the transcript completed or failed [webhook](https://www.assemblyai.com/docs/deployment/webhooks-for-pre-recorded-audio) requests for added security. Must be 1-1000 characters and must not contain carriage returns or newlines. Requires `webhook_auth_header_name` and `webhook_url` to also be set.
          type: [string, "null"]
          default: null

        webhook_url:
          x-label: Webhook URL
          description: |
            The URL to which we send [webhook](https://www.assemblyai.com/docs/deployment/webhooks-for-pre-recorded-audio) requests.
          type: string
          format: url

        custom_topics:
          x-label: Enable custom topics
          description: This parameter does not currently have any functionality attached to it.
          type: boolean
          default: false
          deprecated: true

        speech_model:
          x-label: Speech model
          description: |
            This parameter has been replaced with the `speech_models` parameter, learn more about the `speech_models` parameter [here](https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model).
          oneOf:
            - $ref: "#/components/schemas/SpeechModel"
            - type: "null"
          deprecated: True

        topics:
          x-label: Custom topics
          description: This parameter does not currently have any functionality attached to it.
          type: array
          items:
            x-label: Topic
            type: string
          deprecated: true

      example:
        {
          speech_model: null,
          language_detection: true,
          language_confidence_threshold: 0.7,
          punctuate: true,
          format_text: true,
          multichannel: true,
          webhook_url: "https://your-webhook-url.tld/path",
          webhook_auth_header_name: "webhook-secret",
          webhook_auth_header_value: "webhook-secret-value",
          auto_highlights: true,
          audio_start_from: 10,
          audio_end_at: 280,
          filter_profanity: true,
          redact_pii: true,
          redact_pii_audio: true,
          redact_pii_audio_quality: "mp3",
          redact_pii_policies:
            ["us_social_security_number", "credit_card_number"],
          redact_pii_sub: "hash",
          speaker_labels: true,
          speakers_expected: 2,
          content_safety: true,
          iab_categories: true,
          custom_spelling: [],
          disfluencies: false,
          sentiment_analysis: true,
          auto_chapters: false,
          entity_detection: true,
          speech_threshold: 0.5,
          summarization: false,
          summary_model: null,
          summary_type: null,
          custom_topics: true,
          topics: [],
          remove_audio_tags: null,
          domain: null,
          speech_understanding:
            {
              request:
                {
                  translation:
                    {
                      target_languages: ["es", "de"],
                      formal: true,
                      match_original_utterance: true,
                    },
                },
            },
        }

    TranscriptParams:
      x-label: Transcript parameters
      description: The parameters for creating a transcript
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      allOf:
        - type: object
          required: [audio_url]
          properties:
            audio_url:
              x-label: Audio URL
              description: The URL of the audio or video file to transcribe.
              type: string
              format: url
          additionalProperties: false
        - $ref: "#/components/schemas/TranscriptOptionalParams"
      example:
        {
          speech_model: null,
          language_detection: true,
          language_confidence_threshold: 0.7,
          audio_url: "https://assembly.ai/wildfires.mp3",
          punctuate: true,
          format_text: true,
          multichannel: true,
          webhook_url: "https://your-webhook-url/path",
          webhook_auth_header_name: "webhook-secret",
          webhook_auth_header_value: "webhook-secret-value",
          auto_highlights: true,
          audio_start_from: 10,
          audio_end_at: 280,
          filter_profanity: true,
          redact_pii: true,
          redact_pii_audio: true,
          redact_pii_audio_quality: "mp3",
          redact_pii_policies:
            ["us_social_security_number", "credit_card_number"],
          redact_pii_sub: "hash",
          speaker_labels: true,
          speakers_expected: 2,
          content_safety: true,
          iab_categories: true,
          custom_spelling: [],
          disfluencies: false,
          sentiment_analysis: true,
          auto_chapters: false,
          entity_detection: true,
          speech_threshold: 0.5,
          summarization: false,
          summary_model: null,
          summary_type: null,
          custom_topics: true,
          topics: [],
          remove_audio_tags: null,
          domain: null,
          speech_understanding:
            {
              request:
                {
                  translation:
                    {
                      target_languages: ["es", "de"],
                      formal: true,
                      match_original_utterance: true,
                    },
                },
            },
        }

    SummaryModel:
      type: string
      x-label: Summary model
      description: The model to summarize the transcript
      x-fern-sdk-group-name: transcripts
      enum:
        - informative
        - conversational
        - catchy
      x-aai-enum:
        informative:
          label: Informative
        conversational:
          label: Conversational
        catchy:
          label: Catchy

    SummaryType:
      type: string
      x-label: Summary type
      description: The type of summary
      x-fern-sdk-group-name: transcripts
      enum:
        - bullets
        - bullets_verbose
        - gist
        - headline
        - paragraph
      x-aai-enum:
        bullets:
          label: Bullets
        bullets_verbose:
          label: Bullets verbose
        gist:
          label: Gist
        headline:
          label: Headline
        paragraph:
          label: Paragraph

    TranscriptCustomSpelling:
      x-label: Custom spelling
      description: Object containing words or phrases to replace, and the word or phrase to replace with
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      properties:
        from:
          x-label: From
          description: Words or phrases to replace
          type: array
          items:
            x-label: Word or phrase
            description: Word or phrase to replace
            type: string
        to:
          x-label: To
          description: Word to replace with
          type: string
      required: [from, to]
      example: { from: ["dicarlo"], to: "Decarlo" }

    TranscriptUtterance:
      type: object
      x-label: Utterance
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      properties:
        confidence:
          x-label: Confidence
          description: The confidence score for the transcript of this utterance
          type: number
          format: double
          minimum: 0
          maximum: 1
        start:
          x-label: Start
          description: The starting time, in milliseconds, of the utterance in the audio file
          type: integer
        end:
          x-label: End
          description: The ending time, in milliseconds, of the utterance in the audio file
          type: integer
        text:
          x-label: Text
          description: The text for this utterance
          type: string
        words:
          x-label: Words
          description: The words in the utterance.
          type: array
          items:
            x-label: Word
            $ref: "#/components/schemas/TranscriptWord"
        channel:
          x-label: Channel
          description: The channel of this utterance. The left and right channels are channels 1 and 2. Additional channels increment the channel number sequentially.
          type: [string, "null"]
        speaker:
          x-label: Speaker
          description: The speaker of this utterance, where each speaker is assigned a sequential capital letter - e.g. "A" for Speaker A, "B" for Speaker B, etc.
          type: string
        translated_texts:
          x-label: Translated texts
          description: 'Translations keyed by language code (e.g., `{"es": "Texto traducido", "de": "Übersetzter Text"}`). Only present when `match_original_utterance` is enabled with translation.'
          type: object
          additionalProperties:
            type: string
      required:
        - confidence
        - start
        - end
        - text
        - words
        - speaker
      example:
        {
          confidence: 0.9359033333333334,
          end: 26950,
          speaker: "A",
          start: 250,
          text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter de Carlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University Varsity. Good morning, professor.",
          words:
            [
              {
                text: "Smoke",
                start: 250,
                end: 650,
                confidence: 0.97503,
                speaker: "A",
              },
              {
                text: "from",
                start: 730,
                end: 1022,
                confidence: 0.99999,
                speaker: "A",
              },
              {
                text: "hundreds",
                start: 1076,
                end: 1418,
                confidence: 0.99843,
                speaker: "A",
              },
              {
                text: "of",
                start: 1434,
                end: 1614,
                confidence: 0.85,
                speaker: "A",
              },
              {
                text: "wildfires",
                start: 1652,
                end: 2346,
                confidence: 0.89657,
                speaker: "A",
              },
              {
                text: "in",
                start: 2378,
                end: 2526,
                confidence: 0.99994,
                speaker: "A",
              },
              {
                text: "Canada",
                start: 2548,
                end: 3130,
                confidence: 0.93864,
                speaker: "A",
              },
              {
                text: "is",
                start: 3210,
                end: 3454,
                confidence: 0.999,
                speaker: "A",
              },
              {
                text: "triggering",
                start: 3492,
                end: 3946,
                confidence: 0.75366,
                speaker: "A",
              },
              {
                text: "air",
                start: 3978,
                end: 4174,
                confidence: 1.0,
                speaker: "A",
              },
              {
                text: "quality",
                start: 4212,
                end: 4558,
                confidence: 0.87745,
                speaker: "A",
              },
              {
                text: "alerts",
                start: 4644,
                end: 5114,
                confidence: 0.94739,
                speaker: "A",
              },
              {
                text: "throughout",
                start: 5162,
                end: 5466,
                confidence: 0.99726,
                speaker: "A",
              },
              {
                text: "the",
                start: 5498,
                end: 5694,
                confidence: 0.79,
                speaker: "A",
              },
              {
                text: "US.",
                start: 5732,
                end: 6382,
                confidence: 0.88,
                speaker: "A",
              },
            ],
        }

    SubstitutionPolicy:
      x-label: Redact PII substitution
      type: string
      x-fern-sdk-group-name: transcripts
      description: The replacement logic for detected PII, can be `entity_name` or `hash`. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more details.
      enum:
        - entity_name
        - hash
      x-aai-enum:
        entity_name:
          label: Entity name
        hash:
          label: Hash

    RedactPiiAudioQuality:
      x-label: Redact PII audio quality
      type: string
      description: Controls the filetype of the audio created by redact_pii_audio. Currently supports mp3 (default) and wav. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) for more details.
      x-fern-sdk-group-name: transcripts
      enum:
        - mp3
        - wav
      x-fern-enum:
        mp3:
          description: MP3 audio format is lower quality and lower size than WAV.
          casing:
            camel: mp3
            snake: mp3
            pascal: Mp3
            screamingSnake: MP3
        wav:
          description: WAV audio format is the highest quality (no compression) and larger size than MP3.
      x-aai-enum:
        mp3:
          label: MP3
        wav:
          label: WAV
      example: "mp3"

    PiiPolicy:
      x-label: PII policy
      description: The type of PII to redact
      x-fern-sdk-group-name: transcripts
      type: string
      enum:
        - account_number
        - banking_information
        - blood_type
        - credit_card_cvv
        - credit_card_expiration
        - credit_card_number
        - date
        - date_interval
        - date_of_birth
        - drivers_license
        - drug
        - duration
        - email_address
        - event
        - filename
        - gender
        - gender_sexuality
        - healthcare_number
        - injury
        - ip_address
        - language
        - location
        - location_address
        - location_address_street
        - location_city
        - location_coordinate
        - location_country
        - location_state
        - location_zip
        - marital_status
        - medical_condition
        - medical_process
        - money_amount
        - nationality
        - number_sequence
        - occupation
        - organization
        - organization_medical_facility
        - passport_number
        - password
        - person_age
        - person_name
        - phone_number
        - physical_attribute
        - political_affiliation
        - religion
        - sexuality
        - statistics
        - time
        - url
        - us_social_security_number
        - username
        - vehicle_id
        - zodiac_sign
      x-fern-enum:
        account_number:
          description:
            "Customer account or membership identification number (e.g., Policy
            No. 10042992, Member ID: HZ-5235-001)"
        banking_information:
          description: Banking information, including account and routing numbers
        blood_type:
          description: Blood type (e.g., O-, AB positive)
        credit_card_cvv:
          description: "Credit card verification code (e.g., CVV: 080)"
        credit_card_expiration:
          description: Expiration date of a credit card
        credit_card_number:
          description: Credit card number
        date:
          description: Specific calendar date (e.g., December 18)
        date_interval:
          description:
            Broader time periods, including date ranges, months, seasons, years,
            and decades (e.g., 2020-2021, 5-9 May, January 1984)
        date_of_birth:
          description: "Date of birth (e.g., Date of Birth: March 7,1961)"
        drivers_license:
          description: Driver's license number. (e.g., DL# 356933-540)
        drug:
          description:
            Medications, vitamins, or supplements (e.g., Advil, Acetaminophen,
            Panadol)
        duration:
          description:
            Measurements of time expressed as a numerical value plus a unit (e.g.,
            8 months, 2 years)
        email_address:
          description: Email address (e.g., support@assemblyai.com)
        event:
          description: Name of an event or holiday (e.g., Olympics, Yom Kippur)
        filename:
          description:
            Names of computer files, including the extension or filepath (e.g.,
            Taxes/2012/brad-tax-returns.pdf)
        gender:
          description: Terms indicating gender identity (e.g., female, male, non-binary)
        gender_sexuality:
          description:
            Terms indicating gender identity or sexual orientation, including
            slang terms (e.g., female, bisexual, trans)
        healthcare_number:
          description:
            "Healthcare numbers and health plan beneficiary numbers (e.g.,
            Policy No.: 5584-486-674-YM)"
        injury:
          description: Bodily injury (e.g., I broke my arm, I have a sprained wrist)
        ip_address:
          description: Internet IP address, including IPv4 and IPv6 formats (e.g., 192.168.0.1)
        language:
          description: Name of a natural language (e.g., Spanish, French)
        location:
          description:
            Any Location reference including mailing address, postal code,
            city, state, province, country, or coordinates. (e.g., Lake Victoria, 145
            Windsor St., 90210)
        location_address:
          description: A complete mailing address (e.g., 145 Windsor St., Toronto, ON M5A 2P5)
        location_address_street:
          description: Street-level component of an address (e.g., 145 Windsor St.)
        location_city:
          description: City name (e.g., Toronto, San Francisco)
        location_coordinate:
          description: Geographic coordinates (e.g., 40.7128° N, 74.0060° W)
        location_country:
          description: Country name (e.g., Canada, United States)
        location_state:
          description: State, province, or region name (e.g., Ontario, California)
        location_zip:
          description: Postal or ZIP code (e.g., M5A 2P5, 90210)
        marital_status:
          description:
            Terms indicating marital status (e.g., Single, common-law, ex-wife,
            married)
        medical_condition:
          description:
            Name of a medical condition, disease, syndrome, deficit, or disorder
            (e.g., chronic fatigue syndrome, arrhythmia, depression)
        medical_process:
          description:
            Medical process, including treatments, procedures, and tests (e.g.,
            heart surgery, CT scan)
        money_amount:
          description: Name and/or amount of currency (e.g., 15 pesos, $94.50)
        nationality:
          description:
            Terms indicating nationality, ethnicity, or race (e.g., American,
            Asian, Caucasian)
        number_sequence:
          description:
            Numerical PII (including alphanumeric strings) that doesn't fall
            under other categories
        occupation:
          description: Job title or profession (e.g., professor, actors, engineer, CPA)
        organization:
          description:
            Name of an organization (e.g., CNN, McDonalds, University of Alaska,
            Northwest General Hospital)
        organization_medical_facility:
          description:
            Name of a medical facility (e.g., Mayo Clinic, Northwest General
            Hospital)
        passport_number:
          description: Passport numbers, issued by any country (e.g., PA4568332, NU3C6L86S12)
        password:
          description:
            Account passwords, PINs, access keys, or verification answers (e.g.,
            27%alfalfa, temp1234, My mother's maiden name is Smith)
        person_age:
          description: Number associated with an age (e.g., 27, 75)
        person_name:
          description: Name of a person (e.g., Bob, Doug Jones, Dr. Kay Martinez, MD)
        phone_number:
          description: Telephone or fax number
        physical_attribute:
          description: Distinctive bodily attributes, including race
            (e.g., I'm 190cm tall, He belongs to the Black students' association)
        political_affiliation:
          description:
            Terms referring to a political party, movement, or ideology (e.g.,
            Republican, Liberal)
        religion:
          description: Terms indicating religious affiliation (e.g., Hindu, Catholic)
        sexuality:
          description: Terms indicating sexual orientation (e.g., heterosexual, bisexual, gay)
        statistics:
          description: Medical statistics (e.g., 18%, 18 percent)
        time:
          description: Expressions indicating clock times (e.g., 19:37:28, 10pm EST)
        url:
          description: Internet addresses (e.g., https://www.assemblyai.com/)
        us_social_security_number:
          description: Social Security Number or equivalent
        username:
          description: Usernames, login names, or handles (e.g., @AssemblyAI)
        vehicle_id:
          description:
            Vehicle identification numbers (VINs), vehicle serial numbers,
            and license plate numbers (e.g., 5FNRL38918B111818, BIF7547)
        zodiac_sign:
          description: Names of Zodiac signs (e.g., Aries, Taurus)
      x-aai-enum:
        account_number:
          label: Account number
        banking_information:
          label: Banking information
        blood_type:
          label: Blood type
        credit_card_cvv:
          label: Credit card CVV
        credit_card_expiration:
          label: Credit card expiration
        credit_card_number:
          label: Credit card number
        date:
          label: Date
        date_interval:
          label: Date interval
        date_of_birth:
          label: Date of birth
        drivers_license:
          label: Driver's license
        drug:
          label: Drug
        duration:
          label: Duration
        email_address:
          label: Email address
        event:
          label: Event
        filename:
          label: Filename
        gender:
          label: Gender
        gender_sexuality:
          label: Gender sexuality
        healthcare_number:
          label: Healthcare number
        injury:
          label: Injury
        ip_address:
          label: IP address
        language:
          label: Language
        location:
          label: Location
        location_address:
          label: Location address
        location_address_street:
          label: Location address street
        location_city:
          label: Location city
        location_coordinate:
          label: Location coordinate
        location_country:
          label: Location country
        location_state:
          label: Location state
        location_zip:
          label: Location ZIP
        marital_status:
          label: Marital status
        medical_condition:
          label: Medical condition
        medical_process:
          label: Medical process
        money_amount:
          label: Money amount
        nationality:
          label: Nationality
        number_sequence:
          label: Number sequence
        occupation:
          label: Occupation
        organization:
          label: Organization
        organization_medical_facility:
          label: Organization medical facility
        passport_number:
          label: Passport number
        password:
          label: Password
        person_age:
          label: Person age
        person_name:
          label: Person name
        phone_number:
          label: Phone number
        physical_attribute:
          label: Physical attribute
        political_affiliation:
          label: Political affiliation
        religion:
          label: Religion
        sexuality:
          label: Sexuality
        statistics:
          label: Statistics
        time:
          label: Time
        url:
          label: URL
        us_social_security_number:
          label: US Social Security Number
        username:
          label: Username
        vehicle_id:
          label: Vehicle ID
        zodiac_sign:
          label: Zodiac sign

    SpeechModel:
      x-label: Speech model
      type: string
      description: The speech model to use for the transcription. See [Model Selection](https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model) for available models.
      enum:
        - universal-3-5-pro
        - universal-2
      x-fern-sdk-group-name: transcripts

    TranscriptLanguageCode:
      x-label: Language code
      type: string
      description: |
        The language of your audio file. Possible values are found in [Supported Languages](https://www.assemblyai.com/docs/pre-recorded-audio/supported-languages).
      x-fern-sdk-group-name: transcripts
      enum:
        - en
        - en_au
        - en_uk
        - en_us
        - es
        - fr
        - de
        - it
        - pt
        - nl
        - af
        - sq
        - am
        - ar
        - hy
        - as
        - az
        - ba
        - eu
        - be
        - bn
        - bs
        - br
        - bg
        - my
        - ca
        - zh
        - hr
        - cs
        - da
        - et
        - fo
        - fi
        - gl
        - ka
        - el
        - gu
        - ht
        - ha
        - haw
        - he
        - hi
        - hu
        - is
        - id
        - ja
        - jw
        - kn
        - kk
        - km
        - ko
        - lo
        - la
        - lv
        - ln
        - lt
        - lb
        - mk
        - mg
        - ms
        - ml
        - mt
        - mi
        - mr
        - mn
        - ne
        - no
        - nn
        - oc
        - pa
        - ps
        - fa
        - pl
        - ro
        - ru
        - sa
        - sr
        - sn
        - sd
        - si
        - sk
        - sl
        - so
        - su
        - sw
        - sv
        - tl
        - tg
        - ta
        - tt
        - te
        - th
        - bo
        - tr
        - tk
        - uk
        - ur
        - uz
        - vi
        - cy
        - yi
        - yo
      x-aai-enum:
        en:
          label: English (global)
        en_au:
          label: English (Australian)
        en_uk:
          label: English (British)
        en_us:
          label: English (US)
        es:
          label: Spanish
        fr:
          label: French
        de:
          label: German
        it:
          label: Italian
        pt:
          label: Portuguese
        nl:
          label: Dutch
        af:
          label: Afrikaans
        sq:
          label: Albanian
        am:
          label: Amharic
        ar:
          label: Arabic
        hy:
          label: Armenian
        as:
          label: Assamese
        az:
          label: Azerbaijani
        ba:
          label: Bashkir
        eu:
          label: Basque
        be:
          label: Belarusian
        bn:
          label: Bengali
        bs:
          label: Bosnian
        br:
          label: Breton
        bg:
          label: Bulgarian
        my:
          label: Burmese
        ca:
          label: Catalan
        zh:
          label: Chinese
        hr:
          label: Croatian
        cs:
          label: Czech
        da:
          label: Danish
        et:
          label: Estonian
        fo:
          label: Faroese
        fi:
          label: Finnish
        gl:
          label: Galician
        ka:
          label: Georgian
        el:
          label: Greek
        gu:
          label: Gujarati
        ht:
          label: Haitian
        ha:
          label: Hausa
        haw:
          label: Hawaiian
        he:
          label: Hebrew
        hi:
          label: Hindi
        hu:
          label: Hungarian
        is:
          label: Icelandic
        id:
          label: Indonesian
        ja:
          label: Japanese
        jw:
          label: Javanese
        kn:
          label: Kannada
        kk:
          label: Kazakh
        km:
          label: Khmer
        ko:
          label: Korean
        lo:
          label: Lao
        la:
          label: Latin
        lv:
          label: Latvian
        ln:
          label: Lingala
        lt:
          label: Lithuanian
        lb:
          label: Luxembourgish
        mk:
          label: Macedonian
        mg:
          label: Malagasy
        ms:
          label: Malay
        ml:
          label: Malayalam
        mt:
          label: Maltese
        mi:
          label: Maori
        mr:
          label: Marathi
        mn:
          label: Mongolian
        ne:
          label: Nepali
        no:
          label: Norwegian
        nn:
          label: Norwegian Nynorsk
        oc:
          label: Occitan
        pa:
          label: Panjabi
        ps:
          label: Pashto
        fa:
          label: Persian
        pl:
          label: Polish
        ro:
          label: Romanian
        ru:
          label: Russian
        sa:
          label: Sanskrit
        sr:
          label: Serbian
        sn:
          label: Shona
        sd:
          label: Sindhi
        si:
          label: Sinhala
        sk:
          label: Slovak
        sl:
          label: Slovenian
        so:
          label: Somali
        su:
          label: Sundanese
        sw:
          label: Swahili
        sv:
          label: Swedish
        tl:
          label: Tagalog
        tg:
          label: Tajik
        ta:
          label: Tamil
        tt:
          label: Tatar
        te:
          label: Telugu
        th:
          label: Thai
        bo:
          label: Tibetan
        tr:
          label: Turkish
        tk:
          label: Turkmen
        uk:
          label: Ukrainian
        ur:
          label: Urdu
        uz:
          label: Uzbek
        vi:
          label: Vietnamese
        cy:
          label: Welsh
        yi:
          label: Yiddish
        yo:
          label: Yoruba

    TranscriptStatus:
      x-label: Status
      type: string
      description: The status of your transcript. Possible values are queued, processing, completed, or error.
      x-fern-sdk-group-name: transcripts
      enum:
        - queued
        - processing
        - completed
        - error
      x-fern-enum:
        queued:
          description: The audio file is in the queue to be processed by the API.
        processing:
          description: The audio file is being processed by the API.
        completed:
          description: The transcript job has been completed successfully.
        error:
          description: An error occurred while processing the audio file.
      x-aai-enum:
        queued:
          label: Queued
        processing:
          label: Processing
        completed:
          label: Completed
        error:
          label: Error

    TranscriptReadyStatus:
      x-label: Status
      type: string
      description: The status of the transcript. Either completed or error.
      x-fern-sdk-group-name: transcripts
      enum:
        - completed
        - error
      x-fern-enum:
        completed:
          description: The transcript job has been completed successfully.
        error:
          description: An error occurred while processing the audio file.
      x-aai-enum:
        completed:
          label: Completed
        error:
          label: Error

    Transcript:
      x-label: Transcript
      description: A transcript object
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      properties:
        audio_channels:
          x-label: Audio channels
          description: The number of audio channels in the audio file. This is only present when [multichannel](https://www.assemblyai.com/docs/pre-recorded-audio/transcribe-multiple-audio-channels) is enabled.
          type: integer

        audio_duration:
          x-label: Audio duration
          description: The duration of this transcript object's media file, in seconds
          type: [integer, "null"]

        audio_end_at:
          x-label: Audio end at
          description: The point in time, in milliseconds, in the file at which the transcription was terminated. See [Set the start and end of the transcript](https://www.assemblyai.com/docs/pre-recorded-audio/set-the-start-and-end-of-the-transcript) for more details.
          type: [integer, "null"]

        audio_start_from:
          x-label: Audio start from
          description: The point in time, in milliseconds, in the file at which the transcription was started. See [Set the start and end of the transcript](https://www.assemblyai.com/docs/pre-recorded-audio/set-the-start-and-end-of-the-transcript) for more details.
          type: [integer, "null"]

        audio_url:
          x-label: Audio URL
          description: The URL of the media that was transcribed
          type: string
          format: url

        auto_chapters:
          x-label: Auto Chapters enabled
          description: |
            Whether [Auto Chapters](https://www.assemblyai.com/docs/speech-understanding/auto-chapters) is enabled, can be true or false. Deprecated - use [LLM Gateway](https://www.assemblyai.com/docs/llm-gateway/quickstart) instead for more flexible chapter summaries. See the [updated Auto Chapters page](https://www.assemblyai.com/docs/speech-understanding/auto-chapters) for details.

            Note: This parameter is only supported for the Universal-2 model.
          type: [boolean, "null"]
          deprecated: true

        auto_highlights:
          x-label: Key Phrases
          description: Whether [Key Phrases](https://www.assemblyai.com/docs/speech-understanding/key-phrases) is enabled, either true or false
          type: boolean

        auto_highlights_result:
          x-label: Key Phrases result
          description: |
            An array of results for the Key Phrases model, if it is enabled.
            See [Key Phrases](https://www.assemblyai.com/docs/speech-understanding/key-phrases) for more information.
          oneOf:
            - $ref: "#/components/schemas/AutoHighlightsResult"
            - type: "null"

        chapters:
          x-label: Chapters
          description: An array of temporally sequential chapters for the audio file. See [Auto Chapters](https://www.assemblyai.com/docs/speech-understanding/auto-chapters) for more information.
          type: [array, "null"]
          items:
            x-label: Chapter
            $ref: "#/components/schemas/Chapter"

        confidence:
          x-label: Confidence
          description: The confidence score for the transcript, between 0.0 (low confidence) and 1.0 (high confidence)
          type: [number, "null"]
          format: double
          minimum: 0
          maximum: 1

        content_safety:
          x-label: Content Moderation
          description: Whether [Content Moderation](https://www.assemblyai.com/docs/content-moderation) is enabled, can be true or false
          type: [boolean, "null"]

        content_safety_labels:
          x-label: Content Moderation labels
          description: |
            An array of results for the Content Moderation model, if it is enabled.
            See [Content moderation](https://www.assemblyai.com/docs/content-moderation) for more information.
          oneOf:
            - $ref: "#/components/schemas/ContentSafetyLabelsResult"
            - type: "null"

        custom_spelling:
          x-label: Custom spellings
          description: Customize how words are spelled and formatted using to and from values. Each `to` value must be a single word, and each `from` phrase can contain at most 5 words. See [Custom Spelling](https://www.assemblyai.com/docs/pre-recorded-audio/correct-spelling-of-terms) for more details.
          type: [array, "null"]
          items:
            x-label: Custom spelling
            $ref: "#/components/schemas/TranscriptCustomSpelling"

        disfluencies:
          x-label: Disfluencies
          description: Transcribe [Filler Words](https://www.assemblyai.com/docs/pre-recorded-audio/include-filler-words), like "umm", in your media file; can be true or false. Supported on Universal-3.5 Pro and Universal-2.
          type: [boolean, "null"]

        domain:
          x-label: Domain
          description: |
            The domain-specific model applied to the transcript. When set to `"medical-v1"`, [Medical Mode](https://www.assemblyai.com/docs/pre-recorded-audio/medical-mode) was used to improve accuracy for medical terminology.
          type: [string, "null"]

        entities:
          x-label: Entities
          description: |
            An array of results for the Entity Detection model, if it is enabled.
            See [Entity detection](https://www.assemblyai.com/docs/speech-understanding/entity-detection) for more information.
          type: [array, "null"]
          items:
            x-label: Entity
            $ref: "#/components/schemas/Entity"

        entity_detection:
          x-label: Entity Detection
          description: Whether [Entity Detection](https://www.assemblyai.com/docs/speech-understanding/entity-detection) is enabled, can be true or false
          type: [boolean, "null"]

        error:
          x-label: Error
          description: Error message of why the transcript failed
          type: string

        filter_profanity:
          x-label: Filter profanity
          description: Whether [Profanity Filtering](https://www.assemblyai.com/docs/profanity-filtering) is enabled, either true or false
          type: [boolean, "null"]

        format_text:
          x-label: Format text
          description: Whether [Text Formatting](https://www.assemblyai.com/docs/pre-recorded-audio) is enabled, either true or false
          type: [boolean, "null"]

        iab_categories:
          x-label: Topic Detection
          description: Whether [Topic Detection](https://www.assemblyai.com/docs/speech-understanding/topic-detection) is enabled, can be true or false
          type: [boolean, "null"]

        iab_categories_result:
          x-label: Topic Detection result
          description: |
            The result of the Topic Detection model, if it is enabled.
            See [Topic Detection](https://www.assemblyai.com/docs/speech-understanding/topic-detection) for more information.
          oneOf:
            - $ref: "#/components/schemas/TopicDetectionModelResult"
            - type: "null"

        id:
          x-label: ID
          description: The unique identifier of your transcript
          type: string
          format: uuid

        keyterms_prompt:
          x-label: Keyterms prompt
          description: |
            Improve accuracy with up to 200 (for Universal-2) or 1000 (for Universal-3.5 Pro) domain-specific words or phrases (maximum 6 words per phrase). See [Keyterms Prompting](https://www.assemblyai.com/docs/pre-recorded-audio/universal-3-5-pro/prompting#keyterms-prompting) for more details.
          type: array
          items:
            x-label: Keyterm
            type: string

        language_code:
          x-label: Language code
          description: |
            The language of your audio file.
            Possible values are found in [Supported Languages](https://www.assemblyai.com/docs/pre-recorded-audio/supported-languages).
          anyOf:
            - $ref: "#/components/schemas/TranscriptLanguageCode"
            - type: string
          x-ts-type: LiteralUnion<TranscriptLanguageCode, string>
          x-go-type: TranscriptLanguageCode

        language_codes:
          description: |
            The language codes of your audio file. Used for [Code switching](/speech-to-text/pre-recorded-audio/code-switching)
            One of the values specified must be `en`.
          type: [array, "null"]
          items:
            x-label: Language code
            $ref: "#/components/schemas/TranscriptLanguageCode"

        language_confidence:
          x-label: Language confidence
          description: The confidence score for the detected language, between 0.0 (low confidence) and 1.0 (high confidence). See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
          type: [number, "null"]
          format: double
          minimum: 0
          maximum: 1

        language_confidence_threshold:
          x-label: Language confidence threshold
          description: |
            The confidence threshold for the automatically detected language.
            An error will be returned if the language confidence is below this threshold.
            See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
          type: [number, "null"]
          format: float
          minimum: 0
          maximum: 1

        language_detection:
          x-label: Language detection
          description: Whether [Automatic language detection](/pre-recorded-audio/automatic-language-detection) is enabled, either true or false
          type: [boolean, "null"]

        language_detection_options:
          x-label: Specify options for Automatic Language Detection.
          description: Specify options for [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection).
          type: object
          additionalProperties: false
          properties:
            expected_languages:
              x-label: Expected languages
              description: List of languages expected in the audio file. Defaults to `["all"]` when unspecified. See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
              type: array
              items:
                x-label: language
                type: string
            fallback_language:
              x-label: Fallback language
              description: |
                If the detected language of the audio file is not in the list of expected languages, the `fallback_language` is used. Specify `["auto"]` to let our model choose the fallback language from `expected_languages` with the highest confidence score. See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
              type: string
              default: "auto"
            code_switching:
              x-label: Code switching
              description: |
                Whether [code switching](/speech-to-text/pre-recorded-audio/code-switching) should be detected.
              type: boolean
              default: false
            code_switching_confidence_threshold:
              x-label: Code switching confidence threshold
              description: |
                The confidence threshold for [code switching](/speech-to-text/pre-recorded-audio/code-switching) detection. If the code switching confidence is below this threshold, the transcript will be processed in the language with the highest `language_detection_confidence` score.
              type: number
              minimum: 0
              maximum: 1
              default: 0.3
            localization:
              x-label: Localization
              description: |
                Render the transcript in a regional variant of the detected language. Supported values are `en_au` (Australian English) and `en_uk` (British English) — only English is supported today, and you can specify at most one locale per base language. Base or default-region codes such as `en` and `en_us` are not localization variants and return a `400`.

                When the detected language matches the requested locale's base language, the transcript uses that locale's spelling and `language_code` returns the region-aware code (for example `en_au`) instead of the base `en`. Otherwise, when the detected language isn't available as a locale, the option is ignored. See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
              type: array
              items:
                x-label: locale
                type: string

        multichannel:
          x-label: Multichannel
          description: Whether [Multichannel transcription](https://www.assemblyai.com/docs/pre-recorded-audio/transcribe-multiple-audio-channels) was enabled in the transcription request, either true or false
          type: [boolean, "null"]

        prompt:
          x-label: Prompt
          description: |
            Provide natural language prompting of up to 1,500 words of contextual information to the model. See the [Prompting Guide](https://www.assemblyai.com/docs/pre-recorded-audio/prompting) for best practices.

            Note: This parameter is only supported for the Universal-3.5 Pro model.
          type: string

        punctuate:
          x-label: Punctuate
          description: Whether [Automatic Punctuation](https://www.assemblyai.com/docs/pre-recorded-audio) is enabled, either true or false
          type: [boolean, "null"]

        redact_pii:
          x-label: Redact PII
          description: Whether [PII Redaction](https://www.assemblyai.com/docs/pii-redaction) is enabled, either true or false
          type: boolean

        redact_pii_audio:
          x-label: Redact PII audio
          description: |
            Whether a redacted version of the audio file was generated,
            either true or false. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) for more information.
          type: [boolean, "null"]

        redact_pii_audio_options:
          x-label: Redact PII audio options
          description: |
            The options for PII-redacted audio, if redact_pii_audio is enabled.
            See [PII redaction](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) for more information.
          type: object
          additionalProperties: false
          properties:
            return_redacted_no_speech_audio:
              x-label: Return redacted no speech audio
              description: By default, audio redaction provides redacted audio URLs only when speech is detected. However, if your use-case specifically requires redacted audio files even for silent audio files without any dialogue, you can opt to receive these URLs by setting this parameter to `true`. Requires `redact_pii_audio` to be `true`.
              type: boolean
              default: false
            override_audio_redaction_method:
              x-label: Override audio redaction method
              description: Specify the method used to redact audio. By default, redacted audio uses a beep sound. Set to `silence` to replace PII with silence instead of a beep.
              type: string
              enum:
                - silence

        redact_pii_audio_quality:
          x-label: Redact PII audio quality
          description: |
            The audio quality of the PII-redacted audio file, if redact_pii_audio is enabled.
            See [PII redaction](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) for more information.
          oneOf:
            - $ref: "#/components/schemas/RedactPiiAudioQuality"
            - type: "null"

        redact_pii_policies:
          x-label: Redact PII policies
          description: |
            The list of PII Redaction policies that were enabled, if PII Redaction is enabled.
            See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more information.
          type: [array, "null"]
          items:
            x-label: PII policy
            $ref: "#/components/schemas/PiiPolicy"

        redact_pii_sub:
          x-label: Redact PII substitution
          description: The replacement logic for detected PII, can be `entity_name` or `hash`. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more details.
          $ref: "#/components/schemas/SubstitutionPolicy"

        redact_pii_return_unredacted:
          x-label: Return unredacted transcript
          description: |
            Whether the original unredacted transcript was also returned alongside the redacted one. When `true`, the response includes `unredacted_text`, `unredacted_words`, and `unredacted_utterances`. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more information.
          type: [boolean, "null"]

        sentiment_analysis:
          x-label: Sentiment Analysis
          description: Whether [Sentiment Analysis](https://www.assemblyai.com/docs/speech-understanding/sentiment-analysis) is enabled, can be true or false
          type: [boolean, "null"]

        sentiment_analysis_results:
          x-label: Sentiment Analysis results
          description: |
            An array of results for the Sentiment Analysis model, if it is enabled.
            See [Sentiment Analysis](https://www.assemblyai.com/docs/speech-understanding/sentiment-analysis) for more information.
          type: [array, "null"]
          items:
            x-label: Sentiment Analysis result
            $ref: "#/components/schemas/SentimentAnalysisResult"

        speaker_labels:
          x-label: Speaker labels
          description: Whether [Speaker diarization](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers) is enabled, can be true or false
          type: [boolean, "null"]

        speakers_expected:
          x-label: Speakers expected
          description: Tell the speaker label model how many speakers it should attempt to identify. See [Set number of speakers expected](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers#set-number-of-speakers-expected) for more details.
          type: [integer, "null"]

        speech_model_used:
          x-label: Speech model used
          description: The speech model that was actually used for the transcription. See [Model Selection](https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model) for available models.
          type: string
          $ref: "#/components/schemas/SpeechModel"

        speech_models:
          x-label: Speech models
          description: |
            List of speech models that were used (in priority order) to transcribe the audio. If not specified in the request, this defaults to `["universal-3-5-pro", "universal-2"]`. See [Model Selection](https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model) for available models and routing behavior.
          type: [array, "null"]
          items:
            x-label: Speech model
            $ref: "#/components/schemas/SpeechModel"

        speech_threshold:
          x-label: Speech threshold
          description: |
            Defaults to null. Reject audio files that contain less than this fraction of speech.
            Valid values are in the range [0, 1] inclusive. See [Speech Threshold](https://www.assemblyai.com/docs/speech-threshold) for more details.
          type: [number, "null"]
          minimum: 0
          maximum: 1
          format: float

        speech_understanding:
          x-label: Speech Understanding
          description: |
            Speech understanding tasks like [Translation](https://www.assemblyai.com/docs/speech-understanding/translation), [Speaker Identification](https://www.assemblyai.com/docs/speech-understanding/speaker-identification), and [Custom Formatting](https://www.assemblyai.com/docs/speech-understanding/custom-formatting). See the task-specific docs for available options and configuration.
          type: object
          properties:
            request:
              oneOf:
                - $ref: "#/components/schemas/TranslationRequestBody"
                - $ref: "#/components/schemas/SpeakerIdentificationRequestBody"
                - $ref: "#/components/schemas/CustomFormattingRequestBody"
                - $ref: "#/components/schemas/SummarizationRequestBody"
                - $ref: "#/components/schemas/ActionItemsRequestBody"
            response:
              oneOf:
                - $ref: "#/components/schemas/TranslationResponse"
                - $ref: "#/components/schemas/SpeakerIdentificationResponse"
                - $ref: "#/components/schemas/CustomFormattingResponse"
                - $ref: "#/components/schemas/SummarizationResponse"
                - $ref: "#/components/schemas/ActionItemsResponse"

        status:
          x-label: Status
          description: The status of your transcript. Possible values are queued, processing, completed, or error.
          $ref: "#/components/schemas/TranscriptStatus"

        summarization:
          x-label: Summarization enabled
          description: |
            Whether [Summarization](https://www.assemblyai.com/docs/speech-understanding/summarization) is enabled, either true or false. Deprecated - use [LLM Gateway](https://www.assemblyai.com/docs/llm-gateway/quickstart) instead for more flexible summaries. See the [updated Summarization page](https://www.assemblyai.com/docs/speech-understanding/summarization) for details.

            Note: This parameter is only supported for the Universal-2 model.
          type: boolean
          deprecated: true

        summary:
          x-label: Summary
          description: The generated summary of the media file, if [Summarization](https://www.assemblyai.com/docs/speech-understanding/summarization) is enabled. Deprecated - use [LLM Gateway](https://www.assemblyai.com/docs/llm-gateway/quickstart) instead for more flexible summaries. See the [updated Summarization page](https://www.assemblyai.com/docs/speech-understanding/summarization) for details.
          type: [string, "null"]
          deprecated: true

        summary_model:
          x-label: Summary model
          description: |
            The Summarization model used to generate the summary,
            if [Summarization](https://www.assemblyai.com/docs/speech-understanding/summarization) is enabled. Deprecated - use [LLM Gateway](https://www.assemblyai.com/docs/llm-gateway/quickstart) instead for more flexible summaries. See the [updated Summarization page](https://www.assemblyai.com/docs/speech-understanding/summarization) for details.
          type: [string, "null"]
          deprecated: true

        summary_type:
          x-label: Summary type
          description: The type of summary generated, if [Summarization](https://www.assemblyai.com/docs/speech-understanding/summarization) is enabled. Deprecated - use [LLM Gateway](https://www.assemblyai.com/docs/llm-gateway/quickstart) instead for more flexible summaries. See the [updated Summarization page](https://www.assemblyai.com/docs/speech-understanding/summarization) for details.
          type: [string, "null"]
          deprecated: true

        remove_audio_tags:
          x-label: Remove audio tags
          description: |
            Universal-3.5 Pro generates rich transcripts that can include inline annotations such as audio event markers and speaker cues. Set to `"all"` to remove all inline annotations, or `"speaker"` to remove only speaker cues while keeping other annotations. By default, all inline annotations are removed.

            Note: This parameter is only supported for the Universal-3.5 Pro model.
          oneOf:
            - type: string
              enum:
                - all
                - speaker
            - type: "null"

        temperature:
          x-label: Temperature
          description: |
            The temperature that was used for the model's response. See the [Prompting Guide](https://www.assemblyai.com/docs/pre-recorded-audio/prompting) for more details.

            Note: This parameter only takes effect on the Universal-3.5 Pro model.
          type: [number, "null"]
          minimum: 0.0
          maximum: 1.0

        text:
          x-label: Text
          description: The textual transcript of your media file
          type: [string, "null"]

        unredacted_text:
          x-label: Unredacted text
          description: |
            The original textual transcript of your media file before PII redaction was applied. Only returned when `redact_pii_return_unredacted` was set to `true` on the transcription request, otherwise this field is omitted and the `text` field remains fully redacted. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more information.
          type: [string, "null"]

        throttled:
          x-label: Throttled
          description: True while a request is throttled and false when a request is no longer throttled
          type: [boolean, "null"]

        utterances:
          x-label: Utterances
          description: |
            When multichannel or speaker_labels is enabled, a list of turn-by-turn utterance objects.
            See [Speaker diarization](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers) and [Multichannel transcription](https://www.assemblyai.com/docs/pre-recorded-audio/transcribe-multiple-audio-channels) for more information.
          type: [array, "null"]
          items:
            x-label: Utterance
            $ref: "#/components/schemas/TranscriptUtterance"

        unredacted_utterances:
          x-label: Unredacted utterances
          description: |
            The original turn-by-turn utterance objects before PII redaction was applied. Same shape as `utterances`. Only returned when `redact_pii_return_unredacted` was set to `true` on the transcription request, otherwise this field is omitted and the `utterances` field remains fully redacted. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more information.
          type: [array, "null"]
          items:
            x-label: Utterance
            $ref: "#/components/schemas/TranscriptUtterance"

        webhook_auth:
          x-label: Webhook auth enabled
          description: Whether [webhook](https://www.assemblyai.com/docs/deployment/webhooks-for-pre-recorded-audio) authentication details were provided
          type: boolean

        webhook_auth_header_name:
          x-label: Webhook auth header name
          description: The header name to be sent with the transcript completed or failed [webhook](https://www.assemblyai.com/docs/deployment/webhooks-for-pre-recorded-audio) requests. Must be 1-1000 characters and contain only ASCII letters, numbers, hyphens, and underscores. Requires `webhook_auth_header_value` and `webhook_url` to also be set.
          type: [string, "null"]

        webhook_status_code:
          x-label: Webhook HTTP status code
          description: The status code we received from your server when delivering the transcript completed or failed [webhook](https://www.assemblyai.com/docs/deployment/webhooks-for-pre-recorded-audio) request, if a webhook URL was provided
          type: [integer, "null"]

        webhook_url:
          x-label: Webhook URL
          description: |
            The URL to which we send [webhook](https://www.assemblyai.com/docs/deployment/webhooks-for-pre-recorded-audio) requests.
          type: [string, "null"]
          format: url

        words:
          x-label: Words
          description: |
            An array of temporally-sequential word objects, one for each word in the transcript.
          type: [array, "null"]
          items:
            x-label: Word
            $ref: "#/components/schemas/TranscriptWord"

        unredacted_words:
          x-label: Unredacted words
          description: |
            The original temporally-sequential word objects before PII redaction was applied. Same shape as `words`. Only returned when `redact_pii_return_unredacted` was set to `true` on the transcription request, otherwise this field is omitted and the `words` field remains fully redacted. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more information.
          type: [array, "null"]
          items:
            x-label: Word
            $ref: "#/components/schemas/TranscriptWord"

        acoustic_model:
          x-label: Acoustic model
          description: This parameter does not currently have any functionality attached to it.
          type: string
          deprecated: true

        custom_topics:
          x-label: Custom topics enabled
          description: This parameter does not currently have any functionality attached to it.
          type: [boolean, "null"]
          deprecated: true

        language_model:
          x-label: Language model
          description: This parameter does not currently have any functionality attached to it.
          type: string
          deprecated: true

        speech_model:
          x-label: Speech model
          description: |
            This parameter has been replaced with the `speech_models` parameter, learn more about the `speech_models` parameter [here](https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model).
          oneOf:
            - $ref: "#/components/schemas/SpeechModel"
            - type: "null"
          deprecated: True

        speed_boost:
          x-label: Speed boost
          description: This parameter does not currently have any functionality attached to it.
          type: [boolean, "null"]
          deprecated: true

        topics:
          x-label: Topics
          description: This parameter does not currently have any functionality attached to it.
          type: array
          items:
            x-label: Topic
            type: string
          deprecated: true

        translated_texts:
          # x-label: Translated text
          type: object
          description: Translated text keyed by language code. See [Translation](https://www.assemblyai.com/docs/speech-understanding/translation) for more details.
          properties:
            language_code:
              x-label: Language code
              type: string
              description: Translated text for this language code

      required:
        - id
        - speech_model
        - language_model
        - acoustic_model
        - status
        - audio_url
        - webhook_auth
        - auto_highlights
        - redact_pii
        - summarization
        - language_confidence_threshold
        - language_confidence
      example:
        {
          id: "9ea68fd3-f953-42c1-9742-976c447fb463",
          speech_model: null,
          language_model: "assemblyai_default",
          acoustic_model: "assemblyai_default",
          language_code: "en_us",
          language_detection: true,
          language_confidence_threshold: 0.7,
          language_confidence: 0.9959,
          status: "completed",
          audio_url: "https://assembly.ai/wildfires.mp3",
          text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter de Carlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University Varsity. Good morning, professor. Good morning. What is it about the conditions right now that have caused this round of wildfires to affect so many people so far away? Well, there's a couple of things. The season has been pretty dry already. And then the fact that we're getting hit in the US. Is because there's a couple of weather systems that are essentially channeling the smoke from those Canadian wildfires through Pennsylvania into the Mid Atlantic and the Northeast and kind of just dropping the smoke there. So what is it in this haze that makes it harmful? And I'm assuming it is harmful. It is. The levels outside right now in Baltimore are considered unhealthy. And most of that is due to what's called particulate matter, which are tiny particles, microscopic smaller than the width of your hair that can get into your lungs and impact your respiratory system, your cardiovascular system, and even your neurological your brain. What makes this particularly harmful? Is it the volume of particulant? Is it something in particular? What is it exactly? Can you just drill down on that a little bit more? Yeah. So the concentration of particulate matter I was looking at some of the monitors that we have was reaching levels of what are, in science, big 150 micrograms per meter cubed, which is more than ten times what the annual average should be and about four times higher than what you're supposed to have on a 24 hours average. And so the concentrations of these particles in the air are just much, much higher than we typically see. And exposure to those high levels can lead to a host of health problems. And who is most vulnerable? I noticed that in New York City, for example, they're canceling outdoor activities. And so here it is in the early days of summer, and they have to keep all the kids inside. So who tends to be vulnerable in a situation like this? It's the youngest. So children, obviously, whose bodies are still developing. The elderly, who are their bodies are more in decline and they're more susceptible to the health impacts of breathing, the poor air quality. And then people who have preexisting health conditions, people with respiratory conditions or heart conditions can be triggered by high levels of air pollution. Could this get worse? That's a good question. In some areas, it's much worse than others. And it just depends on kind of where the smoke is concentrated. I think New York has some of the higher concentrations right now, but that's going to change as that air moves away from the New York area. But over the course of the next few days, we will see different areas being hit at different times with the highest concentrations. I was going to ask you about more fires start burning. I don't expect the concentrations to go up too much higher. I was going to ask you how and you started to answer this, but how much longer could this last? Or forgive me if I'm asking you to speculate, but what do you think? Well, I think the fires are going to burn for a little bit longer, but the key for us in the US. Is the weather system changing. And so right now, it's kind of the weather systems that are pulling that air into our mid Atlantic and Northeast region. As those weather systems change and shift, we'll see that smoke going elsewhere and not impact us in this region as much. And so I think that's going to be the defining factor. And I think the next couple of days we're going to see a shift in that weather pattern and start to push the smoke away from where we are. And finally, with the impacts of climate change, we are seeing more wildfires. Will we be seeing more of these kinds of wide ranging air quality consequences or circumstances? I mean, that is one of the predictions for climate change. Looking into the future, the fire season is starting earlier and lasting longer, and we're seeing more frequent fires. So, yeah, this is probably something that we'll be seeing more frequently. This tends to be much more of an issue in the Western US. So the eastern US. Getting hit right now is a little bit new. But yeah, I think with climate change moving forward, this is something that is going to happen more frequently. That's Peter De Carlo, associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University. Sergeant Carlo, thanks so much for joining us and sharing this expertise with us. Thank you for having me.",
          words:
            [
              {
                text: "Smoke",
                start: 250,
                end: 650,
                confidence: 0.97465,
                speaker: null,
              },
              {
                text: "from",
                start: 730,
                end: 1022,
                confidence: 0.99999,
                speaker: null,
              },
              {
                text: "hundreds",
                start: 1076,
                end: 1418,
                confidence: 0.99844,
                speaker: null,
              },
              {
                text: "of",
                start: 1434,
                end: 1614,
                confidence: 0.84,
                speaker: null,
              },
              {
                text: "wildfires",
                start: 1652,
                end: 2346,
                confidence: 0.89572,
                speaker: null,
              },
              {
                text: "in",
                start: 2378,
                end: 2526,
                confidence: 0.99994,
                speaker: null,
              },
              {
                text: "Canada",
                start: 2548,
                end: 3130,
                confidence: 0.93953,
                speaker: null,
              },
              {
                text: "is",
                start: 3210,
                end: 3454,
                confidence: 0.999,
                speaker: null,
              },
              {
                text: "triggering",
                start: 3492,
                end: 3946,
                confidence: 0.74794,
                speaker: null,
              },
              {
                text: "air",
                start: 3978,
                end: 4174,
                confidence: 1.0,
                speaker: null,
              },
              {
                text: "quality",
                start: 4212,
                end: 4558,
                confidence: 0.88077,
                speaker: null,
              },
              {
                text: "alerts",
                start: 4644,
                end: 5114,
                confidence: 0.94814,
                speaker: null,
              },
              {
                text: "throughout",
                start: 5162,
                end: 5466,
                confidence: 0.99726,
                speaker: null,
              },
              {
                text: "the",
                start: 5498,
                end: 5694,
                confidence: 0.79,
                speaker: null,
              },
              {
                text: "US.",
                start: 5732,
                end: 6382,
                confidence: 0.89,
                speaker: null,
              },
            ],
          utterances:
            [
              {
                confidence: 0.9359033333333334,
                end: 26950,
                speaker: "A",
                start: 250,
                text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter de Carlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University Varsity. Good morning, professor.",
                words:
                  [
                    {
                      text: "Smoke",
                      start: 250,
                      end: 650,
                      confidence: 0.97503,
                      speaker: "A",
                    },
                    {
                      text: "from",
                      start: 730,
                      end: 1022,
                      confidence: 0.99999,
                      speaker: "A",
                    },
                    {
                      text: "hundreds",
                      start: 1076,
                      end: 1418,
                      confidence: 0.99843,
                      speaker: "A",
                    },
                    {
                      text: "of",
                      start: 1434,
                      end: 1614,
                      confidence: 0.85,
                      speaker: "A",
                    },
                    {
                      text: "wildfires",
                      start: 1652,
                      end: 2346,
                      confidence: 0.89657,
                      speaker: "A",
                    },
                    {
                      text: "in",
                      start: 2378,
                      end: 2526,
                      confidence: 0.99994,
                      speaker: "A",
                    },
                    {
                      text: "Canada",
                      start: 2548,
                      end: 3130,
                      confidence: 0.93864,
                      speaker: "A",
                    },
                    {
                      text: "is",
                      start: 3210,
                      end: 3454,
                      confidence: 0.999,
                      speaker: "A",
                    },
                    {
                      text: "triggering",
                      start: 3492,
                      end: 3946,
                      confidence: 0.75366,
                      speaker: "A",
                    },
                    {
                      text: "air",
                      start: 3978,
                      end: 4174,
                      confidence: 1.0,
                      speaker: "A",
                    },
                    {
                      text: "quality",
                      start: 4212,
                      end: 4558,
                      confidence: 0.87745,
                      speaker: "A",
                    },
                    {
                      text: "alerts",
                      start: 4644,
                      end: 5114,
                      confidence: 0.94739,
                      speaker: "A",
                    },
                    {
                      text: "throughout",
                      start: 5162,
                      end: 5466,
                      confidence: 0.99726,
                      speaker: "A",
                    },
                    {
                      text: "the",
                      start: 5498,
                      end: 5694,
                      confidence: 0.79,
                      speaker: "A",
                    },
                    {
                      text: "US.",
                      start: 5732,
                      end: 6382,
                      confidence: 0.88,
                      speaker: "A",
                    },
                  ],
              },
            ],
          confidence: 0.9404651451800253,
          audio_duration: 281,
          punctuate: true,
          format_text: true,
          multichannel: false,
          webhook_url: "https://your-webhook-url.tld/path",
          webhook_status_code: 200,
          webhook_auth: true,
          webhook_auth_header_name: "webhook-secret",
          auto_highlights_result:
            {
              status: "success",
              results:
                [
                  {
                    count: 1,
                    rank: 0.08,
                    text: "air quality alerts",
                    timestamps: [{ start: 3978, end: 5114 }],
                  },
                  {
                    count: 1,
                    rank: 0.08,
                    text: "wide ranging air quality consequences",
                    timestamps: [{ start: 235388, end: 238694 }],
                  },
                  {
                    count: 1,
                    rank: 0.07,
                    text: "more wildfires",
                    timestamps: [{ start: 230972, end: 232354 }],
                  },
                  {
                    count: 1,
                    rank: 0.07,
                    text: "air pollution",
                    timestamps: [{ start: 156004, end: 156910 }],
                  },
                  {
                    count: 3,
                    rank: 0.07,
                    text: "weather systems",
                    timestamps:
                      [
                        { start: 47344, end: 47958 },
                        { start: 205268, end: 205818 },
                        { start: 211588, end: 213434 },
                      ],
                  },
                  {
                    count: 2,
                    rank: 0.06,
                    text: "high levels",
                    timestamps:
                      [
                        { start: 121128, end: 121646 },
                        { start: 155412, end: 155866 },
                      ],
                  },
                  {
                    count: 1,
                    rank: 0.06,
                    text: "health conditions",
                    timestamps: [{ start: 152138, end: 152666 }],
                  },
                  {
                    count: 2,
                    rank: 0.06,
                    text: "Peter de Carlo",
                    timestamps:
                      [
                        { start: 18948, end: 19930 },
                        { start: 268298, end: 269194 },
                      ],
                  },
                  {
                    count: 1,
                    rank: 0.06,
                    text: "New York City",
                    timestamps: [{ start: 125768, end: 126274 }],
                  },
                  {
                    count: 1,
                    rank: 0.05,
                    text: "respiratory conditions",
                    timestamps: [{ start: 152964, end: 153786 }],
                  },
                  {
                    count: 3,
                    rank: 0.05,
                    text: "New York",
                    timestamps:
                      [
                        { start: 125768, end: 126034 },
                        { start: 171448, end: 171938 },
                        { start: 176008, end: 176322 },
                      ],
                  },
                  {
                    count: 3,
                    rank: 0.05,
                    text: "climate change",
                    timestamps:
                      [
                        { start: 229548, end: 230230 },
                        { start: 244576, end: 245162 },
                        { start: 263348, end: 263950 },
                      ],
                  },
                  {
                    count: 1,
                    rank: 0.05,
                    text: "Johns Hopkins University Varsity",
                    timestamps: [{ start: 23972, end: 25490 }],
                  },
                  {
                    count: 1,
                    rank: 0.05,
                    text: "heart conditions",
                    timestamps: [{ start: 153988, end: 154506 }],
                  },
                  {
                    count: 1,
                    rank: 0.05,
                    text: "air quality warnings",
                    timestamps: [{ start: 12308, end: 13434 }],
                  },
                ],
            },
          auto_highlights: true,
          audio_start_from: 10,
          audio_end_at: 280,
          filter_profanity: true,
          redact_pii: true,
          redact_pii_audio: true,
          redact_pii_audio_quality: "mp3",
          redact_pii_policies:
            ["us_social_security_number", "credit_card_number"],
          redact_pii_sub: "hash",
          speaker_labels: true,
          content_safety: true,
          iab_categories: true,
          content_safety_labels:
            {
              status: "success",
              results:
                [
                  {
                    text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter de Carlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University Varsity. Good morning, professor. Good morning.",
                    labels:
                      [
                        {
                          label: "disasters",
                          confidence: 0.8142836093902588,
                          severity: 0.4093044400215149,
                        },
                      ],
                    sentences_idx_start: 0,
                    sentences_idx_end: 5,
                    timestamp: { start: 250, end: 28840 },
                  },
                ],
              summary:
                {
                  disasters: 0.9940800441842205,
                  health_issues: 0.9216489289040967,
                },
              severity_score_summary:
                {
                  disasters:
                    {
                      low: 0.5733263024656846,
                      medium: 0.42667369753431533,
                      high: 0.0,
                    },
                  health_issues:
                    {
                      low: 0.22863814977924785,
                      medium: 0.45014154926938227,
                      high: 0.32122030095136983,
                    },
                },
            },
          iab_categories_result:
            {
              status: "success",
              results:
                [
                  {
                    text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter de Carlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University Varsity. Good morning, professor. Good morning.",
                    labels:
                      [
                        {
                          relevance: 0.988274097442627,
                          label: "Home&Garden>IndoorEnvironmentalQuality",
                        },
                        {
                          relevance: 0.5821335911750793,
                          label: "NewsAndPolitics>Weather",
                        },
                        {
                          relevance: 0.0042327106930315495,
                          label: "MedicalHealth>DiseasesAndConditions>LungAndRespiratoryHealth",
                        },
                        {
                          relevance: 0.0033971222583204508,
                          label: "NewsAndPolitics>Disasters",
                        },
                        {
                          relevance: 0.002469958271831274,
                          label: "BusinessAndFinance>Business>GreenSolutions",
                        },
                        {
                          relevance: 0.0014376690378412604,
                          label: "MedicalHealth>DiseasesAndConditions>Cancer",
                        },
                        {
                          relevance: 0.0014294233405962586,
                          label: "Science>Environment",
                        },
                        {
                          relevance: 0.001234519761055708,
                          label: "Travel>TravelLocations>PolarTravel",
                        },
                        {
                          relevance: 0.0010231725173071027,
                          label: "MedicalHealth>DiseasesAndConditions>ColdAndFlu",
                        },
                        {
                          relevance: 0.0007445293595083058,
                          label: "BusinessAndFinance>Industries>PowerAndEnergyIndustry",
                        },
                      ],
                    timestamp: { start: 250, end: 28840 },
                  },
                ],
              summary:
                {
                  "NewsAndPolitics>Weather": 1.0,
                  "Home&Garden>IndoorEnvironmentalQuality": 0.9043831825256348,
                  "Science>Environment": 0.16117265820503235,
                  "BusinessAndFinance>Industries>EnvironmentalServicesIndustry": 0.14393523335456848,
                  "MedicalHealth>DiseasesAndConditions>LungAndRespiratoryHealth": 0.11401086300611496,
                  "BusinessAndFinance>Business>GreenSolutions": 0.06348437070846558,
                  "NewsAndPolitics>Disasters": 0.05041387677192688,
                  "Travel>TravelLocations>PolarTravel": 0.01308488193899393,
                  HealthyLiving: 0.008222488686442375,
                  "MedicalHealth>DiseasesAndConditions>ColdAndFlu": 0.0022315620444715023,
                  "MedicalHealth>DiseasesAndConditions>HeartAndCardiovascularDiseases": 0.00213034451007843,
                  "HealthyLiving>Wellness>SmokingCessation": 0.001540527562610805,
                  "MedicalHealth>DiseasesAndConditions>Injuries": 0.0013950627762824297,
                  "BusinessAndFinance>Industries>PowerAndEnergyIndustry": 0.0012570273829624057,
                  "MedicalHealth>DiseasesAndConditions>Cancer": 0.001097781932912767,
                  "MedicalHealth>DiseasesAndConditions>Allergies": 0.0010148967849090695,
                  "MedicalHealth>DiseasesAndConditions>MentalHealth": 0.000717321818228811,
                  "Style&Fashion>PersonalCare>DeodorantAndAntiperspirant": 0.0006022014422342181,
                  "Technology&Computing>Computing>ComputerNetworking": 0.0005461975233629346,
                  "MedicalHealth>DiseasesAndConditions>Injuries>FirstAid": 0.0004885646631009877,
                },
            },
          custom_spelling: null,
          throttled: null,
          auto_chapters: false,
          summarization: false,
          summary_type: null,
          summary_model: null,
          custom_topics: true,
          topics: [],
          speech_threshold: 0.5,
          remove_audio_tags: null,
          domain: null,
          disfluencies: false,
          sentiment_analysis: true,
          sentiment_analysis_results: null,
          entity_detection: true,
          entities:
            [
              {
                entity_type: "location",
                text: "Canada",
                start: 2548,
                end: 3130,
              },
              {
                entity_type: "location",
                text: "the US",
                start: 5498,
                end: 6382,
              },
              {
                entity_type: "location",
                text: "Maine",
                start: 7492,
                end: 7914,
              },
              {
                entity_type: "location",
                text: "Maryland",
                start: 8212,
                end: 8634,
              },
              {
                entity_type: "location",
                text: "Minnesota",
                start: 8932,
                end: 9578,
              },
              {
                entity_type: "person_name",
                text: "Peter de Carlo",
                start: 18948,
                end: 19930,
              },
              {
                entity_type: "occupation",
                text: "associate professor",
                start: 20292,
                end: 21194,
              },
              {
                entity_type: "organization",
                text: "Department of Environmental Health and Engineering",
                start: 21508,
                end: 23706,
              },
              {
                entity_type: "organization",
                text: "Johns Hopkins University Varsity",
                start: 23972,
                end: 25490,
              },
              {
                entity_type: "occupation",
                text: "professor",
                start: 26076,
                end: 26950,
              },
              {
                entity_type: "location",
                text: "the US",
                start: 45184,
                end: 45898,
              },
              {
                entity_type: "nationality",
                text: "Canadian",
                start: 49728,
                end: 50086,
              },
            ],
          chapters: null,
          summary: null,
          speakers_expected: 2,
        }

    TopicDetectionModelResult:
      x-label: Topic Detection result
      description: |
        The result of the Topic Detection model, if it is enabled.
        See [Topic Detection](https://www.assemblyai.com/docs/speech-understanding/topic-detection) for more information.
      x-fern-sdk-group-name: transcripts
      type: object
      required:
        - status
        - results
        - summary
      properties:
        status:
          x-label: Status
          description: The status of the Topic Detection model. Either success, or unavailable in the rare case that the model failed.
          $ref: "#/components/schemas/AudioIntelligenceModelStatus"
        results:
          x-label: Results
          description: An array of results for the Topic Detection model
          type: array
          items:
            x-label: Topic Detection result
            $ref: "#/components/schemas/TopicDetectionResult"
        summary:
          x-label: Summary
          description: The overall relevance of topic to the entire audio file
          type: object
          additionalProperties:
            type: number
            format: double
            minimum: 0
            maximum: 1
      example:
        {
          status: "success",
          results:
            [
              {
                text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter de Carlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University Varsity. Good morning, professor. Good morning.",
                labels:
                  [
                    {
                      relevance: 0.988274097442627,
                      label: "Home&Garden>IndoorEnvironmentalQuality",
                    },
                    {
                      relevance: 0.5821335911750793,
                      label: "NewsAndPolitics>Weather",
                    },
                    {
                      relevance: 0.0042327106930315495,
                      label: "MedicalHealth>DiseasesAndConditions>LungAndRespiratoryHealth",
                    },
                    {
                      relevance: 0.0033971222583204508,
                      label: "NewsAndPolitics>Disasters",
                    },
                    {
                      relevance: 0.002469958271831274,
                      label: "BusinessAndFinance>Business>GreenSolutions",
                    },
                    {
                      relevance: 0.0014376690378412604,
                      label: "MedicalHealth>DiseasesAndConditions>Cancer",
                    },
                    {
                      relevance: 0.0014294233405962586,
                      label: "Science>Environment",
                    },
                    {
                      relevance: 0.001234519761055708,
                      label: "Travel>TravelLocations>PolarTravel",
                    },
                    {
                      relevance: 0.0010231725173071027,
                      label: "MedicalHealth>DiseasesAndConditions>ColdAndFlu",
                    },
                    {
                      relevance: 0.0007445293595083058,
                      label: "BusinessAndFinance>Industries>PowerAndEnergyIndustry",
                    },
                  ],
                timestamp: { start: 250, end: 28840 },
              },
            ],
          summary:
            {
              "NewsAndPolitics>Weather": 1.0,
              "Home&Garden>IndoorEnvironmentalQuality": 0.9043831825256348,
              "Science>Environment": 0.16117265820503235,
              "BusinessAndFinance>Industries>EnvironmentalServicesIndustry": 0.14393523335456848,
              "MedicalHealth>DiseasesAndConditions>LungAndRespiratoryHealth": 0.11401086300611496,
              "BusinessAndFinance>Business>GreenSolutions": 0.06348437070846558,
              "NewsAndPolitics>Disasters": 0.05041387677192688,
              "Travel>TravelLocations>PolarTravel": 0.01308488193899393,
              HealthyLiving: 0.008222488686442375,
              "MedicalHealth>DiseasesAndConditions>ColdAndFlu": 0.0022315620444715023,
              "MedicalHealth>DiseasesAndConditions>HeartAndCardiovascularDiseases": 0.00213034451007843,
              "HealthyLiving>Wellness>SmokingCessation": 0.001540527562610805,
              "MedicalHealth>DiseasesAndConditions>Injuries": 0.0013950627762824297,
              "BusinessAndFinance>Industries>PowerAndEnergyIndustry": 0.0012570273829624057,
              "MedicalHealth>DiseasesAndConditions>Cancer": 0.001097781932912767,
              "MedicalHealth>DiseasesAndConditions>Allergies": 0.0010148967849090695,
              "MedicalHealth>DiseasesAndConditions>MentalHealth": 0.000717321818228811,
              "Style&Fashion>PersonalCare>DeodorantAndAntiperspirant": 0.0006022014422342181,
              "Technology&Computing>Computing>ComputerNetworking": 0.0005461975233629346,
              "MedicalHealth>DiseasesAndConditions>Injuries>FirstAid": 0.0004885646631009877,
            },
        }

    ContentSafetyLabelsResult:
      x-label: Content Moderation labels result
      description: |
        An array of results for the Content Moderation model, if it is enabled.
        See [Content moderation](https://www.assemblyai.com/docs/content-moderation) for more information.
      x-fern-sdk-group-name: transcripts
      type: object
      required:
        - status
        - results
        - summary
        - severity_score_summary
      properties:
        status:
          x-label: Status
          description: The status of the Content Moderation model. Either success, or unavailable in the rare case that the model failed.
          $ref: "#/components/schemas/AudioIntelligenceModelStatus"
        results:
          x-label: Results
          description: An array of results for the Content Moderation model
          type: array
          items:
            x-label: Content Moderation label result
            $ref: "#/components/schemas/ContentSafetyLabelResult"
        summary:
          x-label: Summary
          description: A summary of the Content Moderation confidence results for the entire audio file
          type: object
          additionalProperties:
            description: A confidence score for the presence of the sensitive topic "topic" across the entire audio file
            type: number
            format: double
            minimum: 0
            maximum: 1
        severity_score_summary:
          x-label: Severity score summary
          description: A summary of the Content Moderation severity results for the entire audio file
          type: object
          additionalProperties:
            $ref: "#/components/schemas/SeverityScoreSummary"
      example:
        {
          status: "success",
          results:
            [
              {
                text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter de Carlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University Varsity. Good morning, professor. Good morning.",
                labels:
                  [
                    {
                      label: "disasters",
                      confidence: 0.8142836093902588,
                      severity: 0.4093044400215149,
                    },
                  ],
                sentences_idx_start: 0,
                sentences_idx_end: 5,
                timestamp: { start: 250, end: 28840 },
              },
            ],
          summary:
            {
              disasters: 0.9940800441842205,
              health_issues: 0.9216489289040967,
            },
          severity_score_summary:
            {
              disasters:
                {
                  low: 0.5733263024656846,
                  medium: 0.42667369753431533,
                  high: 0.0,
                },
              health_issues:
                {
                  low: 0.22863814977924785,
                  medium: 0.45014154926938227,
                  high: 0.32122030095136983,
                },
            },
        }

    Chapter:
      x-label: Chapter
      description: Chapter of the audio file
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      required:
        - gist
        - headline
        - summary
        - start
        - end
      properties:
        gist:
          x-label: Gist
          description: An ultra-short summary (just a few words) of the content spoken in the chapter
          type: string
        headline:
          x-label: Headline
          description: A single sentence summary of the content spoken during the chapter
          type: string
        summary:
          x-label: Summary
          description: A one paragraph summary of the content spoken during the chapter
          type: string
        start:
          x-label: Start
          description: The starting time, in milliseconds, for the chapter
          type: integer
        end:
          x-label: End
          description: The starting time, in milliseconds, for the chapter
          type: integer
      example:
        {
          summary: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. In some places, the air quality warnings include the warning to stay inside.",
          gist: "Smoggy air quality alerts across US",
          headline: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts across US",
          start: 250,
          end: 28840,
        }

    Entity:
      x-label: Entity
      description: A detected entity
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      required:
        - entity_type
        - text
        - start
        - end
      properties:
        entity_type:
          x-label: Entity type
          description: The type of entity for the detected entity
          $ref: "#/components/schemas/EntityType"
        text:
          x-label: Text
          description: The text for the detected entity
          type: string
        start:
          x-label: Start
          description: The starting time, in milliseconds, at which the detected entity appears in the audio file
          type: integer
        end:
          x-label: End
          description: The ending time, in milliseconds, for the detected entity in the audio file
          type: integer
      example:
        { entity_type: "location", text: "Canada", start: 2548, end: 3130 }

    EntityType:
      x-label: Entity type
      description: The type of entity for the detected entity. Entity Detection returns every location reference under the single `location` value; granular location subtypes (`location_address`, `location_city`, etc.) are supported only by PII redaction.
      x-fern-sdk-group-name: transcripts
      type: string
      enum:
        - account_number
        - banking_information
        - blood_type
        - credit_card_cvv
        - credit_card_expiration
        - credit_card_number
        - date
        - date_interval
        - date_of_birth
        - drivers_license
        - drug
        - duration
        - email_address
        - event
        - filename
        - gender
        - gender_sexuality
        - healthcare_number
        - injury
        - ip_address
        - language
        - location
        - marital_status
        - medical_condition
        - medical_process
        - money_amount
        - nationality
        - number_sequence
        - occupation
        - organization
        - organization_medical_facility
        - passport_number
        - password
        - person_age
        - person_name
        - phone_number
        - physical_attribute
        - political_affiliation
        - religion
        - sexuality
        - statistics
        - time
        - url
        - us_social_security_number
        - username
        - vehicle_id
        - zodiac_sign
      x-fern-enum:
        account_number:
          description:
            "Customer account or membership identification number (e.g., Policy
            No. 10042992, Member ID: HZ-5235-001)"
        banking_information:
          description: Banking information, including account and routing numbers
        blood_type:
          description: Blood type (e.g., O-, AB positive)
        credit_card_cvv:
          description: "Credit card verification code (e.g., CVV: 080)"
        credit_card_expiration:
          description: Expiration date of a credit card
        credit_card_number:
          description: Credit card number
        date:
          description: Specific calendar date (e.g., December 18)
        date_interval:
          description:
            Broader time periods, including date ranges, months, seasons, years,
            and decades (e.g., 2020-2021, 5-9 May, January 1984)
        date_of_birth:
          description: "Date of birth (e.g., Date of Birth: March 7,1961)"
        drivers_license:
          description: Driver's license number. (e.g., DL# 356933-540)
        drug:
          description:
            Medications, vitamins, or supplements (e.g., Advil, Acetaminophen,
            Panadol)
        duration:
          description:
            Measurements of time expressed as a numerical value plus a unit (e.g.,
            8 months, 2 years)
        email_address:
          description: Email address (e.g., support@assemblyai.com)
        event:
          description: Name of an event or holiday (e.g., Olympics, Yom Kippur)
        filename:
          description:
            Names of computer files, including the extension or filepath (e.g.,
            Taxes/2012/brad-tax-returns.pdf)
        gender:
          description: Terms indicating gender identity (e.g., female, male, non-binary)
        gender_sexuality:
          description:
            Terms indicating gender identity or sexual orientation, including
            slang terms (e.g., female, bisexual, trans)
        healthcare_number:
          description:
            "Healthcare numbers and health plan beneficiary numbers (e.g.,
            Policy No.: 5584-486-674-YM)"
        injury:
          description: Bodily injury (e.g., I broke my arm, I have a sprained wrist)
        ip_address:
          description: Internet IP address, including IPv4 and IPv6 formats (e.g., 192.168.0.1)
        language:
          description: Name of a natural language (e.g., Spanish, French)
        location:
          description:
            Any Location reference including mailing address, postal code,
            city, state, province, country, or coordinates. (e.g., Lake Victoria, 145
            Windsor St., 90210)
        marital_status:
          description:
            Terms indicating marital status (e.g., Single, common-law, ex-wife,
            married)
        medical_condition:
          description:
            Name of a medical condition, disease, syndrome, deficit, or disorder
            (e.g., chronic fatigue syndrome, arrhythmia, depression)
        medical_process:
          description:
            Medical process, including treatments, procedures, and tests (e.g.,
            heart surgery, CT scan)
        money_amount:
          description: Name and/or amount of currency (e.g., 15 pesos, $94.50)
        nationality:
          description:
            Terms indicating nationality, ethnicity, or race (e.g., American,
            Asian, Caucasian)
        number_sequence:
          description:
            Numerical PII (including alphanumeric strings) that doesn't fall
            under other categories
        occupation:
          description: Job title or profession (e.g., professor, actors, engineer, CPA)
        organization:
          description:
            Name of an organization (e.g., CNN, McDonalds, University of Alaska,
            Northwest General Hospital)
        organization_medical_facility:
          description:
            Name of a medical facility (e.g., Mayo Clinic, Northwest General
            Hospital)
        passport_number:
          description: Passport numbers, issued by any country (e.g., PA4568332, NU3C6L86S12)
        password:
          description:
            Account passwords, PINs, access keys, or verification answers (e.g.,
            27%alfalfa, temp1234, My mother's maiden name is Smith)
        person_age:
          description: Number associated with an age (e.g., 27, 75)
        person_name:
          description: Name of a person (e.g., Bob, Doug Jones, Dr. Kay Martinez, MD)
        phone_number:
          description: Telephone or fax number
        physical_attribute:
          description: Distinctive bodily attributes, including race
            (e.g., I'm 190cm tall, He belongs to the Black students' association)
        political_affiliation:
          description:
            Terms referring to a political party, movement, or ideology (e.g.,
            Republican, Liberal)
        religion:
          description: Terms indicating religious affiliation (e.g., Hindu, Catholic)
        sexuality:
          description: Terms indicating sexual orientation (e.g., heterosexual, bisexual, gay)
        statistics:
          description: Medical statistics (e.g., 18%, 18 percent)
        time:
          description: Expressions indicating clock times (e.g., 19:37:28, 10pm EST)
        url:
          description: Internet addresses (e.g., https://www.assemblyai.com/)
        us_social_security_number:
          description: Social Security Number or equivalent
        username:
          description: Usernames, login names, or handles (e.g., @AssemblyAI)
        vehicle_id:
          description:
            Vehicle identification numbers (VINs), vehicle serial numbers,
            and license plate numbers (e.g., 5FNRL38918B111818, BIF7547)
        zodiac_sign:
          description: Names of Zodiac signs (e.g., Aries, Taurus)
      x-aai-enum:
        account_number:
          label: Account number
        banking_information:
          label: Banking information
        blood_type:
          label: Blood type
        credit_card_cvv:
          label: Credit card CVV
        credit_card_expiration:
          label: Credit card expiration
        credit_card_number:
          label: Credit card number
        date:
          label: Date
        date_interval:
          label: Date interval
        date_of_birth:
          label: Date of birth
        drivers_license:
          label: Driver's license
        drug:
          label: Drug
        duration:
          label: Duration
        email_address:
          label: Email address
        event:
          label: Event
        filename:
          label: Filename
        gender:
          label: Gender
        gender_sexuality:
          label: Gender sexuality
        healthcare_number:
          label: Healthcare number
        injury:
          label: Injury
        ip_address:
          label: IP address
        language:
          label: Language
        location:
          label: Location
        marital_status:
          label: Marital status
        medical_condition:
          label: Medical condition
        medical_process:
          label: Medical process
        money_amount:
          label: Money amount
        nationality:
          label: Nationality
        number_sequence:
          label: Number sequence
        occupation:
          label: Occupation
        organization:
          label: Organization
        organization_medical_facility:
          label: Organization medical facility
        passport_number:
          label: Passport number
        password:
          label: Password
        person_age:
          label: Person age
        person_name:
          label: Person name
        phone_number:
          label: Phone number
        physical_attribute:
          label: Physical attribute
        political_affiliation:
          label: Political affiliation
        religion:
          label: Religion
        sexuality:
          label: Sexuality
        statistics:
          label: Statistics
        time:
          label: Time
        url:
          label: URL
        us_social_security_number:
          label: US Social Security Number
        username:
          label: Username
        vehicle_id:
          label: Vehicle ID
        zodiac_sign:
          label: Zodiac sign

    SentimentAnalysisResult:
      x-label: Sentiment Analysis result
      description: The result of the Sentiment Analysis model
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      required:
        - text
        - start
        - end
        - sentiment
        - confidence
        - speaker
      properties:
        text:
          x-label: Text
          description: The transcript of the sentence
          type: string
        start:
          x-label: Start
          description: The starting time, in milliseconds, of the sentence
          type: integer
        end:
          x-label: End
          description: The ending time, in milliseconds, of the sentence
          type: integer
        sentiment:
          x-label: Sentiment
          description: The detected sentiment for the sentence, one of POSITIVE, NEUTRAL, NEGATIVE
          $ref: "#/components/schemas/Sentiment"
        confidence:
          x-label: Confidence
          description: The confidence score for the detected sentiment of the sentence, from 0 to 1
          type: number
          format: double
          minimum: 0
          maximum: 1
        channel:
          x-label: Channel
          description: The channel of this utterance. The left and right channels are channels 1 and 2. Additional channels increment the channel number sequentially.
          type: [string, "null"]
        speaker:
          x-label: Speaker
          description: The speaker of the sentence if [Speaker Diarization](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers) is enabled, else null
          type: [string, "null"]
      example:
        {
          text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US.",
          start: 250,
          end: 6350,
          sentiment: "NEGATIVE",
          confidence: 0.8181032538414001,
          speaker: null,
        }

    Sentiment:
      x-label: Sentiment
      x-fern-sdk-group-name: transcripts
      enum:
        - POSITIVE
        - NEUTRAL
        - NEGATIVE
      x-aai-enum:
        POSITIVE:
          label: Positive
        NEUTRAL:
          label: Neutral
        NEGATIVE:
          label: Negative

    TopicDetectionResult:
      x-label: Topic detection result
      description: The result of the topic detection model
      x-fern-sdk-group-name: transcripts
      type: object
      additionalProperties: false
      required:
        - text
      properties:
        text:
          x-label: Text
          description: The text in the transcript in which a detected topic occurs
          type: string
        labels:
          x-label: Labels
          description: An array of detected topics in the text
          type: array
          items:
            x-label: Label
            type: object
            additionalProperties: false
            required:
              - relevance
              - label
            properties:
              relevance:
                x-label: Relevance
                description: How relevant the detected topic is of a detected topic
                type: number
                format: double
                minimum: 0
                maximum: 1
              label:
                x-label: Label
                description: The IAB taxonomical label for the label of the detected topic, where > denotes supertopic/subtopic relationship
                type: string
        timestamp:
          x-label: Timestamp
          $ref: "#/components/schemas/Timestamp"
      example:
        {
          text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter de Carlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University Varsity. Good morning, professor. Good morning.",
          labels:
            [
              {
                relevance: 0.988274097442627,
                label: "Home&Garden>IndoorEnvironmentalQuality",
              },
              {
                relevance: 0.5821335911750793,
                label: "NewsAndPolitics>Weather",
              },
              {
                relevance: 0.0042327106930315495,
                label: "MedicalHealth>DiseasesAndConditions>LungAndRespiratoryHealth",
              },
              {
                relevance: 0.0033971222583204508,
                label: "NewsAndPolitics>Disasters",
              },
              {
                relevance: 0.002469958271831274,
                label: "BusinessAndFinance>Business>GreenSolutions",
              },
              {
                relevance: 0.0014376690378412604,
                label: "MedicalHealth>DiseasesAndConditions>Cancer",
              },
              {
                relevance: 0.0014294233405962586,
                label: "Science>Environment",
              },
              {
                relevance: 0.001234519761055708,
                label: "Travel>TravelLocations>PolarTravel",
              },
              {
                relevance: 0.0010231725173071027,
                label: "MedicalHealth>DiseasesAndConditions>ColdAndFlu",
              },
              {
                relevance: 0.0007445293595083058,
                label: "BusinessAndFinance>Industries>PowerAndEnergyIndustry",
              },
            ],
          timestamp: { start: 250, end: 28840 },
        }

    ContentSafetyLabel:
      x-label: Content Moderation label
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - label
        - confidence
        - severity
      properties:
        label:
          x-label: Label
          description: The label of the sensitive topic
          type: string
        confidence:
          x-label: Confidence
          description: The confidence score for the topic being discussed, from 0 to 1
          type: number
          format: double
          minimum: 0
          maximum: 1
        severity:
          x-label: Severity
          description: How severely the topic is discussed in the section, from 0 to 1
          type: number
          format: double
          minimum: 0
          maximum: 1
      example:
        {
          label: "disasters",
          confidence: 0.8142836093902588,
          severity: 0.4093044400215149,
        }

    ContentSafetyLabelResult:
      x-label: Content Moderation label result
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - text
        - labels
        - sentences_idx_start
        - sentences_idx_end
        - timestamp
      properties:
        text:
          x-label: Text
          description: The transcript of the section flagged by the Content Moderation model
          type: string
        labels:
          x-label: Labels
          description: An array of safety labels, one per sensitive topic that was detected in the section
          type: array
          items:
            x-label: Label
            $ref: "#/components/schemas/ContentSafetyLabel"
        sentences_idx_start:
          x-label: Sentence index start
          description: The sentence index at which the section begins
          type: integer
        sentences_idx_end:
          x-label: Sentence index end
          description: The sentence index at which the section ends
          type: integer
        timestamp:
          x-label: Timestamp
          description: Timestamp information for the section
          $ref: "#/components/schemas/Timestamp"
      example:
        {
          text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter de Carlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University Varsity. Good morning, professor. Good morning.",
          labels:
            [
              {
                label: "disasters",
                confidence: 0.8142836093902588,
                severity: 0.4093044400215149,
              },
            ],
          sentences_idx_start: 0,
          sentences_idx_end: 5,
          timestamp: { start: 250, end: 28840 },
        }

    SeverityScoreSummary:
      x-label: Severity score summary
      type: object
      x-fern-sdk-group-name: transcripts
      required:
        - low
        - medium
        - high
      properties:
        low:
          x-label: Low
          type: number
          format: double
          minimum: 0
          maximum: 1
        medium:
          x-label: Medium
          type: number
          format: double
          minimum: 0
          maximum: 1
        high:
          x-label: High
          type: number
          format: double
          minimum: 0
          maximum: 1
      example:
        { low: 0.5733263024656846, medium: 0.42667369753431533, high: 0.0 }

    AutoHighlightsResult:
      x-label: Auto highlights result
      description: |
        An array of results for the Key Phrases model, if it is enabled.
        See [Key phrases](https://www.assemblyai.com/docs/speech-understanding/key-phrases) for more information.
      x-fern-sdk-group-name: transcripts
      type: object
      required:
        - status
        - results
      properties:
        status:
          x-label: Status
          description: The status of the Key Phrases model. Either success, or unavailable in the rare case that the model failed.
          $ref: "#/components/schemas/AudioIntelligenceModelStatus"
        results:
          x-label: Results
          description: A temporally-sequential array of Key Phrases
          type: array
          items:
            x-label: Auto highlight result
            $ref: "#/components/schemas/AutoHighlightResult"
      example:
        {
          status: "success",
          results:
            [
              {
                count: 1,
                rank: 0.08,
                text: "air quality alerts",
                timestamps: [{ start: 3978, end: 5114 }],
              },
              {
                count: 1,
                rank: 0.08,
                text: "wide ranging air quality consequences",
                timestamps: [{ start: 235388, end: 238694 }],
              },
              {
                count: 1,
                rank: 0.07,
                text: "more wildfires",
                timestamps: [{ start: 230972, end: 232354 }],
              },
              {
                count: 1,
                rank: 0.07,
                text: "air pollution",
                timestamps: [{ start: 156004, end: 156910 }],
              },
              {
                count: 3,
                rank: 0.07,
                text: "weather systems",
                timestamps:
                  [
                    { start: 47344, end: 47958 },
                    { start: 205268, end: 205818 },
                    { start: 211588, end: 213434 },
                  ],
              },
              {
                count: 2,
                rank: 0.06,
                text: "high levels",
                timestamps:
                  [
                    { start: 121128, end: 121646 },
                    { start: 155412, end: 155866 },
                  ],
              },
              {
                count: 1,
                rank: 0.06,
                text: "health conditions",
                timestamps: [{ start: 152138, end: 152666 }],
              },
              {
                count: 2,
                rank: 0.06,
                text: "Peter de Carlo",
                timestamps:
                  [
                    { start: 18948, end: 19930 },
                    { start: 268298, end: 269194 },
                  ],
              },
              {
                count: 1,
                rank: 0.06,
                text: "New York City",
                timestamps: [{ start: 125768, end: 126274 }],
              },
              {
                count: 1,
                rank: 0.05,
                text: "respiratory conditions",
                timestamps: [{ start: 152964, end: 153786 }],
              },
              {
                count: 3,
                rank: 0.05,
                text: "New York",
                timestamps:
                  [
                    { start: 125768, end: 126034 },
                    { start: 171448, end: 171938 },
                    { start: 176008, end: 176322 },
                  ],
              },
              {
                count: 3,
                rank: 0.05,
                text: "climate change",
                timestamps:
                  [
                    { start: 229548, end: 230230 },
                    { start: 244576, end: 245162 },
                    { start: 263348, end: 263950 },
                  ],
              },
              {
                count: 1,
                rank: 0.05,
                text: "Johns Hopkins University Varsity",
                timestamps: [{ start: 23972, end: 25490 }],
              },
              {
                count: 1,
                rank: 0.05,
                text: "heart conditions",
                timestamps: [{ start: 153988, end: 154506 }],
              },
              {
                count: 1,
                rank: 0.05,
                text: "air quality warnings",
                timestamps: [{ start: 12308, end: 13434 }],
              },
            ],
        }

    AutoHighlightResult:
      x-label: Auto highlight result
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - count
        - rank
        - text
        - timestamps
      properties:
        count:
          x-label: Count
          description: The total number of times the key phrase appears in the audio file
          type: integer
        rank:
          x-label: Rank
          description: The total relevancy to the overall audio file of this key phrase - a greater number means more relevant
          type: number
          format: float
          minimum: 0
          maximum: 1
        text:
          x-label: Text
          description: The text itself of the key phrase
          type: string
        timestamps:
          x-label: Timestamps
          description: The timestamp of the of the key phrase
          type: array
          items:
            x-label: Timestamp
            $ref: "#/components/schemas/Timestamp"
      example:
        {
          count: 1,
          rank: 0.08,
          text: "air quality alerts",
          timestamps: [{ start: 3978, end: 5114 }],
        }

    TranscriptWord:
      x-label: Word
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - confidence
        - start
        - end
        - text
        - speaker
      properties:
        confidence:
          x-label: Confidence
          description: The confidence score for the transcript of this word
          type: number
          format: double
          minimum: 0
          maximum: 1
        start:
          x-label: Start
          description: The starting time, in milliseconds, for the word
          type: integer
        end:
          x-label: End
          description: The ending time, in milliseconds, for the word
          type: integer
        text:
          x-label: Text
          description: The text of the word
          type: string
        channel:
          x-label: Channel
          description: The channel of the word. The left and right channels are channels 1 and 2. Additional channels increment the channel number sequentially.
          type: [string, "null"]
        speaker:
          x-label: Speaker
          description: The speaker of the word if [Speaker Diarization](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers) is enabled, else null
          type: [string, "null"]
      example:
        {
          text: "Smoke",
          start: 250,
          end: 650,
          confidence: 0.97465,
          channel: null,
          speaker: null,
        }

    TranscriptSentence:
      x-label: Sentence
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - text
        - start
        - end
        - confidence
        - words
        - speaker
      properties:
        text:
          x-label: Text
          description: The transcript of the sentence
          type: string
        start:
          x-label: Start
          description: The starting time, in milliseconds, for the sentence
          type: integer
        end:
          x-label: End
          description: The ending time, in milliseconds, for the sentence
          type: integer
        confidence:
          x-label: Confidence
          description: The confidence score for the transcript of this sentence
          type: number
          format: double
          minimum: 0
          maximum: 1
        words:
          x-label: Words
          description: An array of words in the sentence
          type: array
          items:
            x-label: Word
            $ref: "#/components/schemas/TranscriptWord"
        channel:
          x-label: Channel
          description: The channel of the sentence. The left and right channels are channels 1 and 2. Additional channels increment the channel number sequentially.
          type: [string, "null"]
        speaker:
          x-label: Speaker
          description: The speaker of the sentence if [Speaker Diarization](https://www.assemblyai.com/docs/pre-recorded-audio/label-speakers) is enabled, else null
          type: [string, "null"]
      example:
        {
          text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US.",
          start: 250,
          end: 6350,
          confidence: 0.72412,
          words:
            [
              {
                text: "Smoke",
                start: 250,
                end: 650,
                confidence: 0.72412,
                speaker: null,
              },
              {
                text: "from",
                start: 730,
                end: 1022,
                confidence: 0.99996,
                speaker: null,
              },
              {
                text: "hundreds",
                start: 1076,
                end: 1466,
                confidence: 0.99992,
                speaker: null,
              },
              {
                text: "of",
                start: 1498,
                end: 1646,
                confidence: 1,
                speaker: null,
              },
            ],
          speaker: null,
        }

    SentencesResponse:
      x-label: Sentences response
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - id
        - confidence
        - audio_duration
        - sentences
      properties:
        id:
          x-label: Transcript ID
          description: The unique identifier for the transcript
          type: string
          format: uuid
        confidence:
          x-label: Confidence
          description: The confidence score for the transcript
          type: number
          format: double
          minimum: 0
          maximum: 1
        audio_duration:
          x-label: Audio duration
          description: The duration of the audio file in seconds
          type: number
        sentences:
          x-label: Sentences
          description: An array of sentences in the transcript
          type: array
          items:
            x-label: Sentence
            $ref: "#/components/schemas/TranscriptSentence"
      example:
        {
          sentences:
            [
              {
                text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US.",
                start: 250,
                end: 6350,
                confidence: 0.72412,
                words:
                  [
                    {
                      text: "Smoke",
                      start: 250,
                      end: 650,
                      confidence: 0.72412,
                      speaker: null,
                    },
                    {
                      text: "from",
                      start: 730,
                      end: 1022,
                      confidence: 0.99996,
                      speaker: null,
                    },
                    {
                      text: "hundreds",
                      start: 1076,
                      end: 1466,
                      confidence: 0.99992,
                      speaker: null,
                    },
                    {
                      text: "of",
                      start: 1498,
                      end: 1646,
                      confidence: 1,
                      speaker: null,
                    },
                  ],
                speaker: null,
              },
              {
                text: "Skylines from Maine to Maryland to Minnesota are gray and smoggy.",
                start: 6500,
                end: 11050,
                confidence: 0.99819,
                words:
                  [
                    {
                      text: "Skylines",
                      start: 6500,
                      end: 7306,
                      confidence: 0.99819,
                      speaker: null,
                    },
                    {
                      text: "from",
                      start: 7338,
                      end: 7534,
                      confidence: 0.99987,
                      speaker: null,
                    },
                    {
                      text: "Maine",
                      start: 7572,
                      end: 7962,
                      confidence: 0.9972,
                      speaker: null,
                    },
                    {
                      text: "to",
                      start: 8026,
                      end: 8206,
                      confidence: 1,
                      speaker: null,
                    },
                    {
                      text: "Maryland",
                      start: 8228,
                      end: 8650,
                      confidence: 0.5192,
                      speaker: null,
                    },
                    {
                      text: "to",
                      start: 8730,
                      end: 8926,
                      confidence: 1,
                      speaker: null,
                    },
                  ],
                speaker: null,
              },
            ],
          id: "d5a3d302-066e-43fb-b63b-8f57baf185db",
          confidence: 0.9579390654205628,
          audio_duration: 281,
        }

    TranscriptParagraph:
      x-label: Paragraph
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - text
        - start
        - end
        - confidence
        - words
      properties:
        text:
          x-label: Text
          description: The transcript of the paragraph
          type: string
        start:
          x-label: Start
          description: The starting time, in milliseconds, of the paragraph
          type: integer
        end:
          x-label: End
          description: The ending time, in milliseconds, of the paragraph
          type: integer
        confidence:
          x-label: Confidence
          description: The confidence score for the transcript of this paragraph
          type: number
          format: double
          minimum: 0
          maximum: 1
        words:
          x-label: Words
          description: An array of words in the paragraph
          type: array
          items:
            x-label: Word
            $ref: "#/components/schemas/TranscriptWord"
      example:
        {
          text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter Decarlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University. Good morning, professor.",
          start: 250,
          end: 26950,
          confidence: 0.73033,
          words:
            [
              {
                text: "Smoke",
                start: 250,
                end: 650,
                confidence: 0.73033,
                speaker: null,
              },
              {
                text: "from",
                start: 730,
                end: 1022,
                confidence: 1,
                speaker: null,
              },
              {
                text: "hundreds",
                start: 1076,
                end: 1466,
                confidence: 0.99992,
                speaker: null,
              },
              {
                text: "of",
                start: 1498,
                end: 1646,
                confidence: 1,
                speaker: null,
              },
            ],
        }

    ParagraphsResponse:
      x-label: Paragraphs response
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - id
        - confidence
        - audio_duration
        - paragraphs
      properties:
        id:
          x-label: Transcript ID
          description: The unique identifier of your transcript
          type: string
          format: uuid
        confidence:
          x-label: Confidence
          description: The confidence score for the transcript
          type: number
          format: double
          minimum: 0
          maximum: 1
        audio_duration:
          x-label: Audio duration
          description: The duration of the audio file in seconds
          type: number
        paragraphs:
          x-label: Paragraphs
          description: An array of paragraphs in the transcript
          type: array
          items:
            x-label: Paragraph
            $ref: "#/components/schemas/TranscriptParagraph"
      example:
        {
          paragraphs:
            [
              {
                text: "Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US. Skylines from Maine to Maryland to Minnesota are gray and smoggy. And in some places, the air quality warnings include the warning to stay inside. We wanted to better understand what's happening here and why, so we called Peter Decarlo, an associate professor in the Department of Environmental Health and Engineering at Johns Hopkins University. Good morning, professor.",
                start: 250,
                end: 26950,
                confidence: 0.73033,
                words:
                  [
                    {
                      text: "Smoke",
                      start: 250,
                      end: 650,
                      confidence: 0.73033,
                      speaker: null,
                    },
                    {
                      text: "from",
                      start: 730,
                      end: 1022,
                      confidence: 1,
                      speaker: null,
                    },
                    {
                      text: "hundreds",
                      start: 1076,
                      end: 1466,
                      confidence: 0.99992,
                      speaker: null,
                    },
                    {
                      text: "of",
                      start: 1498,
                      end: 1646,
                      confidence: 1,
                      speaker: null,
                    },
                  ],
              },
              {
                text: "Good morning. So what is it about the conditions right now that have caused this round of wildfires to affect so many people so far away? Well, there's a couple of things. The season has been pretty dry already, and then the fact that we're getting hit in the US. Is because there's a couple of weather systems that are essentially channeling the smoke from those Canadian wildfires through Pennsylvania into the Mid Atlantic and the Northeast and kind of just dropping the smoke there.",
                start: 27850,
                end: 56190,
                confidence: 0.99667,
                words:
                  [
                    {
                      text: "Good",
                      start: 27850,
                      end: 28262,
                      confidence: 0.99667,
                      speaker: null,
                    },
                    {
                      text: "morning.",
                      start: 28316,
                      end: 28920,
                      confidence: 0.99742,
                      speaker: null,
                    },
                    {
                      text: "So",
                      start: 29290,
                      end: 29702,
                      confidence: 0.94736,
                      speaker: null,
                    },
                  ],
              },
            ],
          id: "d5a3d302-066e-43fb-b63b-8f57baf185db",
          confidence: 0.9578730257009361,
          audio_duration: 281,
        }

    PageDetails:
      x-label: Page details
      description: Details of the transcript page. Transcripts are sorted from newest to oldest. The previous URL always points to a page with older transcripts.
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - limit
        - result_count
        - current_url
        - prev_url
        - next_url
      properties:
        limit:
          x-label: Limit
          description: The number of results this page is limited to
          type: integer
        result_count:
          x-label: Result count
          description: The actual number of results in the page
          type: integer
        current_url:
          x-label: Current URL
          description: The URL used to retrieve the current page of transcripts
          type: string
          format: url
        prev_url:
          x-label: Previous URL
          description: The URL to the next page of transcripts. The previous URL always points to a page with older transcripts.
          type: [string, "null"]
          format: url
        next_url:
          x-label: Next URL
          description: The URL to the next page of transcripts. The next URL always points to a page with newer transcripts.
          type: [string, "null"]
          format: url
      example:
        {
          limit: 10,
          result_count: 10,
          current_url: "https://api.assemblyai.com/v2/transcript?limit=10",
          prev_url: "https://api.assemblyai.com/v2/transcript?limit=10&before_id=62npeahu2b-a8ea-4112-854c-69542c20d90c",
          next_url: "https://api.assemblyai.com/v2/transcript?limit=10&after_id=62nfw3mlar-01ad-4631-92f6-629929496eed",
        }

    TranscriptListItem:
      x-label: Transcript list item
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - id
        - resource_url
        - status
        - created
        - completed
        - audio_url
        - error
      properties:
        id:
          x-label: ID
          description: The unique identifier for the transcript
          type: string
          format: uuid
        resource_url:
          x-label: Resource URL
          description: The URL to retrieve the transcript
          type: string
          format: url
        status:
          x-label: Status
          description: The status of the transcript
          $ref: "#/components/schemas/TranscriptStatus"
        created:
          x-label: Created
          description: The date and time the transcript was created
          type: string
          pattern: '^(?:(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2}(?:\.\d+)?))$'
          x-fern-type: datetime
          x-ts-type: Date
        completed:
          x-label: Completed
          description: The date and time the transcript was completed
          type: [string, "null"]
          pattern: '^(?:(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2}(?:\.\d+)?))$'
          x-fern-type: optional<datetime>
          x-ts-type: Date | null
        audio_url:
          x-label: Audio URL
          description: The URL to the audio file
          type: string
          format: url
        error:
          x-label: Error
          description: Error message of why the transcript failed
          type: [string, "null"]
      example:
        {
          id: "9ea68fd3-f953-42c1-9742-976c447fb463",
          resource_url: "https://api.assemblyai.com/v2/transcript/9ea68fd3-f953-42c1-9742-976c447fb463",
          status: "completed",
          created: "2023-11-02T21:49:25.586965",
          completed: "2023-11-02T21:49:25.586965",
          audio_url: "https://assembly.ai/wildfires.mp3",
          error: null,
        }

    TranscriptList:
      x-label: Transcript list
      description: A list of transcripts. Transcripts are sorted from newest to oldest. The previous URL always points to a page with older transcripts.
      type: object
      x-fern-sdk-group-name: transcripts
      additionalProperties: false
      required:
        - page_details
        - transcripts
      properties:
        page_details:
          x-label: Page details
          description: Details of the transcript page
          $ref: "#/components/schemas/PageDetails"
        transcripts:
          x-label: Transcripts
          description: An array of transcripts
          type: array
          items:
            x-label: Transcript list item
            $ref: "#/components/schemas/TranscriptListItem"
      example:
        {
          page_details:
            {
              limit: 3,
              result_count: 3,
              current_url: "https://api.assemblyai.com/v2/transcript?limit=3",
              prev_url: "https://api.assemblyai.com/v2/transcript?limit=3&before_id=28a73d01-98db-41dd-9e98-2533ba0af117",
              next_url: "https://api.assemblyai.com/v2/transcript?limit=3&after_id=b33f4691-85b7-4f31-be12-a87cef1c1229",
            },
          transcripts:
            [
              {
                id: "b33f4691-85b7-4f31-be12-a87cef1c1229",
                resource_url: "https://api.assemblyai.com/v2/transcript/b33f4691-85b7-4f31-be12-a87cef1c1229",
                status: "completed",
                created: "2024-03-11T21:29:59.936851",
                completed: "2024-03-11T21:30:07.314223",
                audio_url: "http://deleted_by_user",
                error: null,
              },
              {
                id: "ce522f10-d204-42e8-a838-6b95098145cc",
                resource_url: "https://api.assemblyai.com/v2/transcript/ce522f10-d204-42e8-a838-6b95098145cc",
                status: "error",
                created: "2024-03-11T21:23:59.979420",
                completed: null,
                audio_url: "https://storage.googleapis.com/client-docs-samples/nbc.oopsie",
                error: "Download error, unable to download https://storage.googleapis.com/client-docs-samples/nbc.oopsie. Please make sure the file exists and is accessible from the internet.",
              },
              {
                id: "28a73d01-98db-41dd-9e98-2533ba0af117",
                resource_url: "https://api.assemblyai.com/v2/transcript/28a73d01-98db-41dd-9e98-2533ba0af117",
                status: "completed",
                created: "2024-03-11T21:12:57.372215",
                completed: "2024-03-11T21:13:03.267020",
                audio_url: "https://assembly.ai/nbc.mp3",
                error: null,
              },
            ],
        }

    UploadedFile:
      x-label: Uploaded file
      type: object
      x-fern-sdk-group-name: files
      additionalProperties: false
      required:
        - upload_url
      properties:
        upload_url:
          x-label: Uploaded file URL
          description: |
            A URL that points to your audio file, accessible only by AssemblyAI's servers
          type: string
          format: url
      example:
        {
          upload_url: "https://cdn.assemblyai.com/upload/f756988d-47e2-4ca3-96ce-04bb168f8f2a",
        }

    AudioIntelligenceModelStatus:
      x-label: Audio intelligence model status
      x-fern-sdk-group-name: transcripts
      type: string
      description: Either success, or unavailable in the rare case that the model failed
      enum:
        - success
        - unavailable
      x-aai-enum:
        success:
          label: Success
        unavailable:
          label: Unavailable

    Error:
      x-label: Error
      type: object
      additionalProperties: true
      required: [error]
      properties:
        error:
          x-label: Error message
          description: Error message
          type: string
        status:
          x-label: Status
          type: string
          const: error
      example:
        { error: "Transcript creation error, audio_url not found" }

        # Speech Understanding Request Schemas
    TranslationRequestBody:
      x-label: Translation request body
      description: Request body for [Translation](https://www.assemblyai.com/docs/speech-understanding/translation).
      type: object
      properties:
        translation:
          type: object
          properties:
            target_languages:
              type: array
              items:
                type: string
              description: List of target language codes (e.g., `["es", "de"]`). See [Translation](https://www.assemblyai.com/docs/speech-understanding/translation) for supported languages.
            formal:
              type: boolean
              description: Use formal language style. See [Translation](https://www.assemblyai.com/docs/speech-understanding/translation) for more details.
              default: true
            match_original_utterance:
              type: boolean
              description: When enabled with Speaker Labels, returns translated text in the utterances array. Each utterance will include a `translated_texts` key containing translations for each target language.
              default: false
          required:
            - target_languages
      required:
        - translation

    SpeakerIdentificationRequestBody:
      type: object
      description: Request body for [Speaker Identification](https://www.assemblyai.com/docs/speech-understanding/speaker-identification).
      properties:
        speaker_identification:
          type: object
          properties:
            speaker_type:
              type: string
              enum: [role, name]
              description: Type of speaker identification. See [Speaker Identification](https://www.assemblyai.com/docs/speech-understanding/speaker-identification) for details on each type.
            known_values:
              type: array
              items:
                type: string
              description: Required if speaker_type is "role". Each value must be 35 characters or less.
            speakers:
              type: array
              description: An array of speaker objects with metadata to improve identification accuracy. Each object should include a `role` or `name` (depending on `speaker_type`) and an optional `description` to help the model identify the speaker. You can also include any additional custom properties (e.g., `company`, `title`) to provide more context. Use this as an alternative to `known_values` when you want to provide additional context about each speaker.
              items:
                type: object
                properties:
                  role:
                    type: string
                    description: The role of the speaker. Required when `speaker_type` is "role".
                  name:
                    type: string
                    description: The name of the speaker. Required when `speaker_type` is "name".
                  description:
                    type: string
                    description: A description of the speaker to help the model identify them based on conversational context.
                additionalProperties: true
          required:
            - speaker_type
      required:
        - speaker_identification

    CustomFormattingRequestBody:
      type: object
      description: Request body for [Custom Formatting](https://www.assemblyai.com/docs/speech-understanding/custom-formatting).
      properties:
        custom_formatting:
          type: object
          properties:
            date:
              type: string
              description: Date format pattern (e.g., `"mm/dd/yyyy"`). See [Custom Formatting](https://www.assemblyai.com/docs/speech-understanding/custom-formatting) for more details.
            phone_number:
              type: string
              description: Phone number format pattern (e.g., `"(xxx)xxx-xxxx"`). See [Custom Formatting](https://www.assemblyai.com/docs/speech-understanding/custom-formatting) for more details.
            email:
              type: string
              description: Email format pattern (e.g., `"username@domain.com"`). See [Custom Formatting](https://www.assemblyai.com/docs/speech-understanding/custom-formatting) for more details.
      required:
        - custom_formatting

    SummarizationRequestBody:
      type: object
      description: Request body for [Summarization](https://www.assemblyai.com/docs/speech-understanding/summarization).
      properties:
        summarization:
          type: object
          properties:
            summary_type:
              type: string
              enum: [ paragraph, bullets ]
              description: Type of summary. Bullets returns short bullet point style summaries, paragraph is generally more verbose and detailed.
            effort:
              type: string
              enum: [ low, medium ]
          required:
            - summary_type
      required:
        - summarization
      
    ActionItemsRequestBody:
      type: object
      description: Request body for [Action Items](https://www.assemblyai.com/docs/speech-understanding/action-items).
      properties:
        action_items:
          type: object
          properties:
            include_decisions:
              type: bool
              description: Option to include decision making in action items.
            effort:
              type: string
              enum: [ low, medium ]
      required:
        - action_items

    TranslationResponse:
      type: object
      properties:
        translation:
          type: object
          properties:
            status:
              type: string

    SpeakerIdentificationResponse:
      type: object
      properties:
        speaker_identification:
          type: object
          properties:
            mapping:
              type: object
              description: A mapping of the original generic speaker labels (e.g., "A", "B") to the identified speaker names or roles.
              additionalProperties:
                type: string
            status:
              type: string

    CustomFormattingResponse:
      type: object
      properties:
        custom_formatting:
          type: object
          properties:
            mapping:
              type: object
              additionalProperties:
                type: string
            formatted_text:
              type: string

    SummarizationResponse:
      type: object
      properties:
        summarization:
          type: object
          properties:
            summary:
              type: array
              description: Array of summaries.
              items:
                type: object
            status:
              type: string
          required:
            - summary
            - status
              
    ActionItemsResponse:
      type: object
      properties:
        action_items:
          type: object
          properties:
            items:
              type: array
              description: Array of action items.
              items:
                type: object
            status:
              type: string
          required:
            - action_items
            - status

  examples:
    VttSubtitlesResponse:
      value: |
        WEBVTT
        00:12.340 --> 00:16.220
        Last year I showed these two slides said that demonstrate
        00:16.200 --> 00:20.040
        that the Arctic ice cap which for most of the last 3,000,000 years has been the
        00:20.020 --> 00:25.040
        size of the lower 48 States has shrunk by 40% but this understates
    SrtSubtitlesResponse:
      value: |
        1
        00:00:13,160 --> 00:00:16,694
        Last year I showed these two slides that demonstrate that the Arctic

        2
        00:00:16,734 --> 00:00:20,214
        ice cap, which for most of the last 3 million years has been the size

        3
        00:00:20,254 --> 00:00:23,274
        of the lower 48 states, has shrunk by 40%.

  responses:
    BadRequest:
      x-label: Bad request
      description: Bad request
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example: { "error": "This is a sample error message" }
    Unauthorized:
      x-label: Unauthorized
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example:
            { "error": "Authentication error, API token missing/invalid" }
    CannotAccessUploadedFile:
      x-label: Cannot access uploaded file
      description: Cannot access uploaded file
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example: { "error": "Cannot access uploaded file" }
    NotFound:
      x-label: Not found
      description: Not found
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example: { "error": "Not found" }
    TooManyRequests:
      x-label: Too many requests
      description: Too many requests
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example: { "error": "Too Many Requests" }
      headers:
        Retry-After:
          description: The number of seconds to wait before retrying the request
          schema:
            type: integer
    InternalServerError:
      x-label: Internal server error
      description: An error occurred while processing the request
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example:
            {
              "error": "Internal server error. Please retry your request. If the error persists, please contact support@assemblyai.com for more information.",
            }
    ServiceUnavailable:
      x-label: Service unavailable
      description: Service unavailable
    GatewayTimeout:
      x-label: Gateway timeout
      description: Gateway timeout

  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: Authorization
