{
  "openapi": "3.0.1",
  "info": {
    "title": "Asynchronous Speech-To-Text API Documentation",
    "contact": {
      "email": "support@rev.com",
      "name": "Rev",
      "url": "https://www.rev.ai/"
    },
    "version": "v1",
    "description": "Asynchronous Speech-To-Text API Documentation\n",
    "termsOfService": "https://www.rev.ai/about/terms"
  },
  "servers": [
    {
      "url": "https://api.rev.ai/speechtotext/v1",
      "description": "Rev AI API"
    }
  ],
  "security": [
    {
      "AccessToken": []
    }
  ],
  "paths": {
    "/jobs/{id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/JobId"
        }
      ],
      "get": {
        "summary": "Get Job By Id",
        "operationId": "GetJobById",
        "description": "Returns information about a transcription job",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "200": {
            "description": "Transcription Job Details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AsyncTranscriptionJob"
                },
                "examples": {
                  "New Job": {
                    "$ref": "#/components/examples/NewJob"
                  },
                  "Transcribed Job": {
                    "$ref": "#/components/examples/TranscribedJob"
                  },
                  "Failed Job": {
                    "$ref": "#/components/examples/FailedJob"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenDeployment"
          },
          "404": {
            "$ref": "#/components/responses/JobNotFound"
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "curl -X GET \"https://api.rev.ai/speechtotext/v1/jobs/{id}\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\"\n"
          },
          {
            "lang": "Python",
            "source": "from rev_ai import apiclient\naccess_token = 'your_access_token'\njob_id = 'your_job_id'\n\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Get job details\njob_details = client.get_job_details(job_id)\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "import { RevAiApiClient } from 'revai-node-sdk';\nvar accessToken = \"yourAccessToken\";\nvar jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nvar client = new RevAiApiClient(accessToken);\n\n// Get job details\nvar jobDetails = await client.getJobDetails(jobId);\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\nString jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Get job details\nRevAiJob jobDetails = apiClient.getJobDetails(jobId);\n"
          }
        ]
      },
      "delete": {
        "summary": "Delete Job by Id",
        "operationId": "DeleteJobById",
        "description": "Deletes a transcription job. All data related to the job, such as input media and transcript, will be permanently deleted. A job can only be deleted once it's completed (either with success or failure).",
        "tags": [
          "Jobs"
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/DeleteJobSuccessful"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenDeployment"
          },
          "404": {
            "$ref": "#/components/responses/JobNotFound"
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidStateDetails"
                },
                "examples": {
                  "In Progress Job": {
                    "value": {
                      "allowed_values": [
                        "transcribed",
                        "failed"
                      ],
                      "current_value": "in_progress",
                      "type": "https://rev.ai/api/v1/errors/invalid-job-state",
                      "title": "Job is in invalid state",
                      "detail": "Job is in invalid state to be deleted",
                      "status": 409
                    }
                  }
                }
              }
            }
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "curl -X DELETE \"https://api.rev.ai/speechtotext/v1/jobs/{id}\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\"\n"
          },
          {
            "lang": "Python",
            "source": "from rev_ai import apiclient\naccess_token = 'your_access_token'\njob_id = 'your_job_id'\n\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Delete job\nclient.delete_job(job_id)\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "import { RevAiApiClient } from 'revai-node-sdk';\nvar accessToken = \"yourAccessToken\";\nvar jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nvar client = new RevAiApiClient(accessToken);\n\n// Delete job\nawait client.deleteJob(jobId);\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\nString jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Delete job\napiClient.deleteJob(jobId);\n"
          }
        ]
      }
    },
    "/jobs": {
      "get": {
        "summary": "Get List of Jobs",
        "operationId": "GetListOfJobs",
        "description": "Gets a list of transcription jobs submitted within the last 30 days in reverse chronological order up to the provided `limit` number of jobs per call. **Note:** Jobs older than 30 days will not be listed. Pagination is supported via passing the last job `id` from a previous call into `starting_after`.",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/JobListLimit"
          },
          {
            "$ref": "#/components/parameters/JobListStartingAfter"
          }
        ],
        "responses": {
          "200": {
            "description": "List of Rev AI Transcription Jobs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AsyncTranscriptionJob"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestProblemDetails"
                },
                "examples": {
                  "Limit Above Max Value": {
                    "$ref": "#/components/examples/BadLimitResponse"
                  },
                  "Invalid Job Id": {
                    "$ref": "#/components/examples/InvalidStartingAfterResponse"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenDeployment"
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "# Get list of jobs with a limit of 10 jobs\ncurl -X GET \"https://api.rev.ai/speechtotext/v1/jobs?limit=10\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\"\n\n# Get list of jobs starting after (submitted before) job with id Umx5c6F7pH7r\ncurl -X GET \"https://api.rev.ai/speechtotext/v1/jobs?starting_after=Umx5c6F7pH7r\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\"\n"
          },
          {
            "lang": "Python",
            "source": "from rev_ai import apiclient\naccess_token = 'your_access_token'\n\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Get list of jobs with a limit of 10 jobs\njobs = client.get_list_of_jobs(limit=10)\n\n# Get list of jobs starting after (submitted before) job with id Umx5c6F7pH7r\njobs = client.get_list_of_jobs(starting_after='Umx5c6F7pH7r')\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "import { RevAiApiClient } from 'revai-node-sdk';\nvar accessToken = \"yourAccessToken\";\n\n// Initialize your client with your access token\nvar client = new RevAiApiClient(accessToken);\n\n// Get list of jobs with a limit of 10 jobs\nvar jobs = await client.getListOfJobs(10);\n\n// Get list of jobs starting after (submitted before) job with id Umx5c6F7pH7r\nvar jobs = await client.getListOfJobs(undefined, 'Umx5c6F7pH7r');\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Get list of jobs with a limit of 10 jobs\nint numberOfJobsToReturn = 10;\nList<RevAiJob> tenJobs = apiClient.getListOfJobs(numberOfJobsToReturn);\n\n// Get list of jobs starting after (submitted before) job with id Umx5c6F7pH7r\nString jobId = \"Umx5c6F7pH7r\";\nList<RevAiJob> jobsStartingAfter = apiClient.getListOfJobs(jobId);\n"
          }
        ]
      },
      "post": {
        "summary": "Submit Transcription Job",
        "operationId": "SubmitTranscriptionJob",
        "description": "Starts an asynchronous job to transcribe speech-to-text for a media file. Media files can be specified in two ways, either by including a public url to the media in the transcription job `options` or by uploading a local file as part of a multipart/form request.",
        "tags": [
          "Jobs"
        ],
        "requestBody": {
          "description": "Transcription Job Options",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitJobMediaUrlOptions"
              },
              "examples": {
                "Example": {
                  "value": {
                    "metadata": "example metadata",
                    "notification_config": {
                      "url": "https://www.example.com/callback",
                      "auth_headers": {
                        "Authorization": "Bearer <notification-url-token>"
                      }
                    },
                    "source_config": {
                      "url": "https://www.rev.ai/FTC_Sample_1.mp3",
                      "auth_headers": {
                        "Authorization": "Bearer <source-url-token>"
                      }
                    },
                    "transcriber": "machine",
                    "skip_diarization": false,
                    "skip_punctuation": false,
                    "skip_postprocessing": false,
                    "remove_disfluencies": false,
                    "filter_profanity": false,
                    "speaker_channel_count": 1,
                    "delete_after_seconds": 2592000,
                    "custom_vocabulary_id": null,
                    "language": "en"
                  }
                },
                "Machine Non-verbatim Transcription": {
                  "value": {
                    "metadata": "example metadata",
                    "notification_config": {
                      "url": "https://www.example.com/callback",
                      "auth_headers": {
                        "Authorization": "Bearer <notification-url-token>"
                      }
                    },
                    "source_config": {
                      "url": "https://www.rev.ai/FTC_Sample_1.mp3",
                      "auth_headers": {
                        "Authorization": "Bearer <source-url-token>"
                      }
                    },
                    "transcriber": "machine",
                    "verbatim": false
                  }
                },
                "Human Transcription": {
                  "value": {
                    "metadata": "example metadata",
                    "notification_config": {
                      "url": "https://www.example.com/callback",
                      "auth_headers": {
                        "Authorization": "Bearer <notification-url-token>"
                      }
                    },
                    "source_config": {
                      "url": "https://www.rev.ai/FTC_Sample_1.mp3",
                      "auth_headers": {
                        "Authorization": "Bearer <source-url-token>"
                      }
                    },
                    "transcriber": "human",
                    "rush": false,
                    "verbatim": true,
                    "segments_to_transcribe": [
                      {
                        "start": 0.5,
                        "end": 60.7
                      },
                      {
                        "start": 240,
                        "end": 420.7
                      }
                    ]
                  }
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "media": {
                    "type": "string",
                    "format": "binary",
                    "description": "Limited to files less than 2GB in size.\nIf the file is larger than 2GB, submit a transcription job using `source_config`.\n**Note:**Most languages support media files with duration up to 17 hours, with the exception for Telugu (`te`) which has a limit of 6 hours.\nFor non-English jobs, expected turnaround time can be up to 6 hours.\n"
                  },
                  "options": {
                    "type": "object",
                    "nullable": true,
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/SubmitJobOptions"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transcription Job Details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AsyncTranscriptionJob"
                },
                "examples": {
                  "New Job": {
                    "$ref": "#/components/examples/NewJob"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestProblemDetails"
                },
                "example": {
                  "parameter": {
                    "media_url": [
                      "One of media_url or source_config must be set"
                    ]
                  },
                  "type": "https://www.rev.ai/api/v1/errors/invalid-parameters",
                  "title": "Your request parameters didn't validate",
                  "status": 400
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/SubmissionForbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "# Submit via media URL. URL must be publicly accessible and a direct link to media, note that custom_vocabularies parameter is optional\ncurl -X POST \"https://api.rev.ai/speechtotext/v1/jobs\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\" -H \"Content-Type: application/json\" -d \"{\\\"source_config\\\":{\\\"url\\\":\\\"https://www.rev.ai/FTC_Sample_1.mp3\\\"},\\\"metadata\\\":\\\"This is a sample submit jobs option\\\", \\\"custom_vocabularies\\\":[{\\\"phrases\\\": [\\\"Amelia Earhart\\\", \\\"Paul McCartney\\\"]}]}\"\n\n# Submit for local uploads. Must include the audio type, note that custom_vocabularies parameter is optional\ncurl -X POST \"https://api.rev.ai/speechtotext/v1/jobs\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\" -H \"Content-Type: multipart/form-data\" -F \"media=@/path/to/media_file.mp3;type=audio/mp3\" -F \"options={\\\"metadata\\\":\\\"This is a sample submit jobs option for multipart\\\", \\\"custom_vocabularies\\\":[{\\\"phrases\\\": [\\\"Amelia Earhart\\\", \\\"Paul McCartney\\\"]}]}\"\n"
          },
          {
            "lang": "Python",
            "source": "from rev_ai import apiclient\nfrom rev_ai.models import CustomVocabulary\naccess_token = 'your_access_token'\n\n# (optional) Create custom_vocabularies to submit with job\ncustom_vocabularies = [CustomVocabulary([\"Amelia Earhart\", \"Paul McCartney\"])]\n\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Submit job with a media url source\nsource_url = \"https://www.rev.ai/FTC_Sample_1.mp3\"\nnotification_url = \"https://www.example.com/callback\"\nurl_job = client.submit_job_url(source_config=CustomerUrlData(url=source_url), metadata=\"My_metadata\", notification_config=CustomerUrlData(url=notification_url), skip_diarization=False, custom_vocabularies=custom_vocabularies)\n\n# Submit from local file\nfile_job = client.submit_job_local_file(filename=\"/path/to/media/file.mp3\", metadata=\"This_is_some_job_metadata\", notification_config=CustomerUrlData(url=notification_url), skip_diarization=False, custom_vocabularies=custom_vocabularies)\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "const revai = require('revai-node-sdk');\n// ES6 compliant alternative import method also available below.\n// Note however that this is not as widely supported as the require syntax.\n// import {RevAiApiClient} from 'revai-node-sdk';\n\nvar accessToken = \"yourAccessToken\";\n\n// Initialize your client with your access token\nvar client = new revai.RevAiApiClient(accessToken);\n\n// Set up the url with the source media to transcribe\nconst sourceConfig = {\n  url: \"https://www.rev.ai/FTC_Sample_1.mp3\"\n};\n\n// Set up an optional webhook url to call on completion\nconst notificationConfig = {\n    url: \"https://example.com/callback\"\n};\n\n// Create a job options object\nconst jobOptions = {\n    source_config: sourceConfig,\n    metadata: 'Sample submit job',\n    notification_config: notificationConfig,\n    skip_diarization: false,\n    custom_vocabularies: [{\n        phrases: [\n            \"Amelia Earhart\",\n            \"Paul McCartney\"\n        ]\n    }]\n};\nclient.submitJob(jobOptions)\n\n// Create job options for local file\nconst localJobOptions = {\n    metadata: 'Sample local file submit job',\n    notification_config: notificationConfig,\n    skip_diarization: false,\n    custom_vocabularies: [{\n        phrases: [\n            \"Amelia Earhart\",\n            \"Paul McCartney\"\n        ]\n    }]\n};\n\n// Submit from local file\nvar fileJob = client.submitJobLocalFile(\"/path/to/file.mp4\", localJobOptions);\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Create a job options object with a remote source\nRevAiJobOptions urlJobOptions = new RevAiJobOptions();\nurlJobOptions.setSourceConfig(\"https://www.rev.ai/FTC_Sample_1.mp3\")\nurlJobOptions.setMetadata(\"Sample submit job\");\nurlJobOptions.setNotificationConfig(\"https://example.com/callback\");\nurlJobOptions.setSkipDiarization(false);\nurlJobOptions.setSkipPunctuation(false);\nRevAiJob urlJob apiClient.submitJobUrl(urlJobOptions);\n\n// Create a job options object for a local file submission\nRevAiJobOptions localFileJobOptions = new RevAiJobOptions();\nlocalFileJobOptions.setMetadata(\"Sample submit job\");\nlocalFileJobOptions.setNotificationConfig(\"https://example.com/callback\");\nlocalFileJobOptions.setSkipDiarization(false);\nlocalFileJobOptions.setSkipPunctuation(false);\n// Submit from local file\nString pathToLocalFile = \"/path/to/file.mp4\"\nRevAiJob fileJob = apiClient.submitJobLocalFile(pathToLocalFile, localFileJobOptions);\n"
          }
        ]
      }
    },
    "/jobs/{id}/transcript": {
      "parameters": [
        {
          "$ref": "#/components/parameters/JobId"
        },
        {
          "$ref": "#/components/parameters/GroupChannelsBy"
        },
        {
          "$ref": "#/components/parameters/GroupChannelsThresholdMs"
        }
      ],
      "get": {
        "summary": "Get Transcript By Id",
        "operationId": "GetTranscriptById",
        "description": "Returns the transcript for a completed transcription job. Transcript can be returned as either JSON or plaintext format. Transcript output format can be specified in the `Accept` header. Returns JSON by default.\n***\nNote: For streaming jobs, transient failure of our storage during a live session may prevent the final hypothesis elements from saving properly, resulting in an incomplete transcript. This is rare, but not impossible. To guarantee 100% completeness, we recommend capturing all final hypothesis when you receive them on the client.\n",
        "tags": [
          "Transcripts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/acceptTranscript"
          }
        ],
        "responses": {
          "200": {
            "description": "Rev AI API Transcript\n***\nNote: Transcript output format is required in the Accept header. Output can either be in Rev's JSON format or plaintext.\n",
            "content": {
              "application/vnd.rev.transcript.v1.0+json": {
                "schema": {
                  "$ref": "#/components/schemas/Transcript"
                },
                "examples": {
                  "skip_diarization false && skip_punctuation false": {
                    "value": {
                      "monologues": [
                        {
                          "speaker": 1,
                          "elements": [
                            {
                              "type": "text",
                              "value": "Hello",
                              "ts": 0.5,
                              "end_ts": 1.5,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "World",
                              "ts": 1.75,
                              "end_ts": 2.85,
                              "confidence": 0.8
                            },
                            {
                              "type": "punct",
                              "value": "."
                            }
                          ]
                        },
                        {
                          "speaker": 2,
                          "elements": [
                            {
                              "type": "text",
                              "value": "monologues",
                              "ts": 3,
                              "end_ts": 3.5,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "are",
                              "ts": 3.6,
                              "end_ts": 3.9,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "a",
                              "ts": 4,
                              "end_ts": 4.3,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "block",
                              "ts": 4.5,
                              "end_ts": 5.5,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "of",
                              "ts": 5.75,
                              "end_ts": 6.14,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "unknown",
                              "value": "<inaudible>"
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "text",
                              "ts": 6.5,
                              "end_ts": 7.78,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": "."
                            }
                          ]
                        }
                      ]
                    }
                  },
                  "skip_diarization true && skip_punctuation false": {
                    "value": {
                      "monologues": [
                        {
                          "speaker": 1,
                          "elements": [
                            {
                              "type": "text",
                              "value": "Hello",
                              "ts": 0.5,
                              "end_ts": 1.5,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "World",
                              "ts": 1.75,
                              "end_ts": 2.85,
                              "confidence": 0.8
                            },
                            {
                              "type": "punct",
                              "value": "."
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "monologues",
                              "ts": 3,
                              "end_ts": 3.5,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "are",
                              "ts": 3.6,
                              "end_ts": 3.9,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "a",
                              "ts": 4,
                              "end_ts": 4.3,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "block",
                              "ts": 4.5,
                              "end_ts": 5.5,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "of",
                              "ts": 5.75,
                              "end_ts": 6.14,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "unknown",
                              "value": "<inaudible>"
                            },
                            {
                              "type": "punct",
                              "value": " "
                            },
                            {
                              "type": "text",
                              "value": "text",
                              "ts": 6.5,
                              "end_ts": 7.78,
                              "confidence": 1
                            },
                            {
                              "type": "punct",
                              "value": "."
                            }
                          ]
                        }
                      ]
                    }
                  },
                  "skip_diarization false && skip_punctuation true": {
                    "value": {
                      "monologues": [
                        {
                          "speaker": 1,
                          "elements": [
                            {
                              "type": "text",
                              "value": "Hello",
                              "ts": 0.5,
                              "end_ts": 1.5,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "World",
                              "ts": 1.75,
                              "end_ts": 2.85,
                              "confidence": 0.8
                            }
                          ]
                        },
                        {
                          "speaker": 2,
                          "elements": [
                            {
                              "type": "text",
                              "value": "monologues",
                              "ts": 3,
                              "end_ts": 3.5,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "are",
                              "ts": 3.6,
                              "end_ts": 3.9,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "a",
                              "ts": 4,
                              "end_ts": 4.3,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "block",
                              "ts": 4.5,
                              "end_ts": 5.5,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "of",
                              "ts": 5.75,
                              "end_ts": 6.14,
                              "confidence": 1
                            },
                            {
                              "type": "unknown",
                              "value": "<inaudible>"
                            },
                            {
                              "type": "text",
                              "value": "text",
                              "ts": 6.5,
                              "end_ts": 7.78,
                              "confidence": 1
                            }
                          ]
                        }
                      ]
                    }
                  },
                  "skip_diarization true && skip_punctuation true": {
                    "value": {
                      "monologues": [
                        {
                          "speaker": 1,
                          "elements": [
                            {
                              "type": "text",
                              "value": "Hello",
                              "ts": 0.5,
                              "end_ts": 1.5,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "World",
                              "ts": 1.75,
                              "end_ts": 2.85,
                              "confidence": 0.8
                            },
                            {
                              "type": "text",
                              "value": "monologues",
                              "ts": 3,
                              "end_ts": 3.5,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "are",
                              "ts": 3.6,
                              "end_ts": 3.9,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "a",
                              "ts": 4,
                              "end_ts": 4.3,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "block",
                              "ts": 4.5,
                              "end_ts": 5.5,
                              "confidence": 1
                            },
                            {
                              "type": "text",
                              "value": "of",
                              "ts": 5.75,
                              "end_ts": 6.14,
                              "confidence": 1
                            },
                            {
                              "type": "unknown",
                              "value": "<inaudible>"
                            },
                            {
                              "type": "text",
                              "value": "text",
                              "ts": 6.5,
                              "end_ts": 7.78,
                              "confidence": 1
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "skip_diarization false && skip_punctuation false": {
                    "value": "Speaker 0:    00:00:00    Hello there, this is a sample transcript in plain text.\nSpeaker 1:    00:00:43    Words are returned with spaces between them.\n"
                  },
                  "skip_diarization true && skip_punctuation false": {
                    "value": "Speaker 0:    00:00:01    Hello there, this is a sample transcript in plain text. Words are returned with spaces between them.\n"
                  },
                  "skip_diarization false && skip_punctuation true": {
                    "value": "Speaker 0:    00:00:00    Hello there this is a sample transcript in plain text\nSpeaker 1:    00:00:43    Words are returned with spaces between them\n"
                  },
                  "skip_diarization true && skip_punctuation true": {
                    "value": "Speaker 0:    00:00:01    Hello there this is a sample transcript in plain text Words are returned with spaces between them\n"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenDeployment"
          },
          "404": {
            "$ref": "#/components/responses/JobNotFound"
          },
          "406": {
            "$ref": "#/components/responses/InvalidTranscriptFormat"
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidStateDetails"
                },
                "examples": {
                  "In Progress Job": {
                    "value": {
                      "allowed_values": [
                        "transcribed"
                      ],
                      "current_value": "in_progress",
                      "type": "https://rev.ai/api/v1/errors/invalid-job-state",
                      "title": "Job is in invalid state",
                      "detail": "Job is in invalid state to obtain the output",
                      "status": 409
                    }
                  }
                }
              }
            }
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "curl -X GET \"https://api.rev.ai/speechtotext/v1/jobs/{id}/transcript\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\" -H \"Accept: application/vnd.rev.transcript.v1.0+json\"\n"
          },
          {
            "lang": "Python",
            "source": "import json\nfrom rev_ai import apiclient\naccess_token = 'your_access_token'\njob_id = 'your_job_id'\n\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Get transcript as text\ntranscript_text = client.get_transcript_text(job_id)\nprint(transcript_text)\n\n# Get transcript as json\ntranscript_json = client.get_transcript_json(job_id)\nprint(json.dumps(transcript_json))\n\n# Get transcript as object\ntranscript_obj = client.get_transcript_object(job_id)\nprint(transcript_obj)\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "import { RevAiApiClient } from 'revai-node-sdk';\nvar accessToken = \"yourAccessToken\";\nvar jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nvar client = new RevAiApiClient(accessToken);\n\n// Get transcript as text\nvar transcriptText = await client.getTranscriptText(jobId);\n\n// Get transcript as object\nvar transcriptObj = await client.getTranscriptObject(jobId);\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\nString jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Get transcript as text\nString transcriptText = apiClient.getTranscriptText(jobId);\n\n// Get transcript as object\nRevAiTranscript transcriptObj = apiClient.getTranscriptObject(jobId);\n"
          }
        ]
      }
    },
    "/jobs/{id}/transcript/translation/{language}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/JobId"
        },
        {
          "name": "language",
          "in": "path",
          "description": "When requesting translated transcript, it is important to specify the language code that corresponds to your desired translation language. This language code should be one of the target languages you previously defined in your job submission.",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/TranslationLanguageField"
          }
        }
      ],
      "get": {
        "summary": "Get Translated Transcript By Id",
        "operationId": "GetTranslatedTranscriptById",
        "description": "Returns translated transcript for a completed transcription job. Translation must be requested as part of the submitted job. Transcript can be returned in either JSON or plaintext format. Transcript output format can be specified in the `Accept` header. Returns JSON by default.\n",
        "tags": [
          "Transcripts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/acceptTranscript"
          }
        ],
        "responses": {
          "200": {
            "description": "Rev AI API Transcript\n***\nNote: Transcript output format is required in the Accept header. Output can either be in Rev's JSON format or plaintext.\n",
            "content": {
              "application/vnd.rev.transcript.v1.0+json": {
                "schema": {
                  "$ref": "#/components/schemas/Transcript"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenDeployment"
          },
          "404": {
            "$ref": "#/components/responses/JobNotFound"
          },
          "406": {
            "$ref": "#/components/responses/InvalidTranscriptFormat"
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidStateDetails"
                },
                "examples": {
                  "In Progress Job": {
                    "value": {
                      "allowed_values": [
                        "transcribed"
                      ],
                      "current_value": "in_progress",
                      "type": "https://rev.ai/api/v1/errors/invalid-job-state",
                      "title": "Job is in invalid state",
                      "detail": "Job is in invalid state to obtain the output",
                      "status": 409
                    }
                  }
                }
              }
            }
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "curl -X GET \"https://api.rev.ai/speechtotext/v1/jobs/{id}/transcript/translation/{language}\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\" -H \"Accept: application/vnd.rev.transcript.v1.0+json\"\n"
          },
          {
            "lang": "Python",
            "source": "import json\nfrom rev_ai import apiclient\naccess_token = 'your_access_token'\njob_id = 'your_job_id'\nlanguage_id='es'\n\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Get transcript as text\ntranscript_text = client.get_translated_transcript_text(job_id, language_id)\nprint(transcript_text)\n\n# Get transcript as json\ntranscript_json = client.get_translated_transcript_json(job_id, language_id)\nprint(json.dumps(transcript_json))\n\n# Get transcript as object\ntranscript_obj = client.get_translated_transcript_object(job_id, language_id)\nprint(transcript_obj)\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "import { RevAiApiClient } from 'revai-node-sdk';\nvar accessToken = \"yourAccessToken\";\nvar jobId = \"yourJobId\";\nvar languageId = \"es\";\n\n// Initialize your client with your access token\nvar client = new RevAiApiClient(accessToken);\n\n// Get transcript as text\nvar transcriptText = await client.getTranslatedTranscriptText(jobId, languageId);\n\n// Get transcript as object\nvar transcriptObj = await client.getTranslatedTranscriptObject(jobId, languageId);\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\nString jobId = \"yourJobId\";\nString languageId = \"es\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Get transcript as text\nString transcriptText = apiClient.getTranslatedTranscriptText(jobId, languageId);\n\n// Get transcript as object\nRevAiTranscript transcriptObj = apiClient.getTranslatedTranscriptObject(jobId, languageId);\n"
          }
        ]
      }
    },
    "/jobs/{id}/transcript/summary": {
      "parameters": [
        {
          "$ref": "#/components/parameters/JobId"
        }
      ],
      "get": {
        "summary": "Get Transcript Summary By Id",
        "operationId": "GetTranscriptSummaryById",
        "description": "Returns the transcript summary for a completed transcription job. Summary can be returned as either JSON or plaintext format. Summary output format can be specified in the `Accept` header. Returns plaintext by default.\n",
        "tags": [
          "Transcripts"
        ],
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "MIME type specifying summary output format",
            "required": false,
            "schema": {
              "type": "string",
              "default": "text/plain",
              "enum": [
                "text/plain",
                "application/json"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Transcript summary.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "summary": {
                      "type": "string",
                      "description": "contains text summary if it was requested as \"paragraph\""
                    },
                    "bullets": {
                      "type": "array",
                      "description": "contains an array of bulletpoints if summary was requested as \"bullets\"",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenDeployment"
          },
          "404": {
            "$ref": "#/components/responses/JobNotFound"
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidStateDetails"
                },
                "examples": {
                  "In Progress Job": {
                    "value": {
                      "allowed_values": [
                        "transcribed"
                      ],
                      "current_value": "in_progress",
                      "type": "https://rev.ai/api/v1/errors/invalid-job-state",
                      "title": "Job is in invalid state",
                      "detail": "Job is in invalid state to obtain the output",
                      "status": 409
                    }
                  }
                }
              }
            }
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "curl -X GET \"https://api.rev.ai/speechtotext/v1/jobs/{id}/transcript/summary\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\" -H \"Accept: text/plain\"\n"
          },
          {
            "lang": "Python",
            "source": "import json\nfrom rev_ai import apiclient\naccess_token = 'your_access_token'\njob_id = 'your_job_id'\n\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Get summary as text\ntext_summary = client.get_transcript_summary_text(job_id)\nprint(text_summary)\n\n# Get summary as json\njson_summary = client.get_transcript_summary_json(job_id)\nprint(json.dumps(json_summary))\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "import { RevAiApiClient } from 'revai-node-sdk';\nvar accessToken = \"yourAccessToken\";\nvar jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nvar client = new RevAiApiClient(accessToken);\n\n// Get summary as text\nvar summaryText = await client.getTranscriptSummaryText(jobId);\n\n// Get summary as object\nvar summaryObj = await client.getTranscriptSummaryObject(jobId);\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\nString jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Get summary as text\nString summaryText = apiClient.getTranscriptSummaryText(jobId);\n\n// Get summary as object\nSummary transcriptObj = apiClient.getTranscriptSummaryObject(jobId);\n"
          }
        ]
      }
    },
    "/jobs/{id}/captions": {
      "parameters": [
        {
          "$ref": "#/components/parameters/JobId"
        }
      ],
      "get": {
        "summary": "Get Captions",
        "operationId": "GetCaptions",
        "description": "Returns the caption output for a transcription job. We currently support SubRip (SRT) and Web Video Text Tracks (VTT) output.\nCaption output format can be specified in the `Accept` header. Returns SRT by default.\n***\nNote: For streaming jobs, transient failure of our storage during a live session may prevent the final hypothesis elements from saving properly, resulting in an incomplete caption file. This is rare, but not impossible.\n",
        "tags": [
          "Captions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/acceptCaption"
          },
          {
            "in": "query",
            "name": "speaker_channel",
            "schema": {
              "type": "integer"
            },
            "required": false,
            "description": "Identifies which channel of the job output to caption. Default is `null` which works only for jobs with no `speaker_channels_count` provided during job submission."
          }
        ],
        "responses": {
          "200": {
            "description": "Rev AI API Captions\n***\nNote: Caption output format is required in the Accept header. The supported headers are `application/x-subrip` and `text/vtt`.\n([SRT](https://en.wikipedia.org/wiki/SubRip))\n",
            "content": {
              "application/x-subrip": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "SubRip Text (SRT)": {
                    "value": "1\n00:00:01,210 --> 00:00:04,840\nHello there, this is a example captions output\n\n2\n00:00:07,350 --> 00:00:10,970\nEach caption group is in the SubRip Text\nfile format\n"
                  }
                }
              },
              "text/vtt": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "WebVTT (VTT)": {
                    "value": "WebVTT\n\n1\n00:00:01,210 ==> 00:00:04,840\nHello there,\nthis is an example captions output\n\n2\n00:00:07,350 --> 00:00:10,970\nEach caption group is in the vtt\nfile format\n"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenDeployment"
          },
          "404": {
            "$ref": "#/components/responses/JobNotFound"
          },
          "405": {
            "$ref": "#/components/responses/InvalidJobPropertyCaptions"
          },
          "406": {
            "$ref": "#/components/responses/InvalidCaptionFormat"
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidStateDetails"
                },
                "examples": {
                  "In Progress Job": {
                    "value": {
                      "allowed_values": [
                        "transcribed"
                      ],
                      "current_value": "in_progress",
                      "type": "https://rev.ai/api/v1/errors/invalid-job-state",
                      "title": "Job is in invalid state",
                      "detail": "Job is in invalid state to obtain the output",
                      "status": 409
                    }
                  }
                }
              }
            }
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "curl -X GET \"https://api.rev.ai/speechtotext/v1/jobs/{id}/captions\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\" -H \"Accept: application/x-subrip\"\n"
          },
          {
            "lang": "Python",
            "source": "import json\nfrom rev_ai import apiclient\naccess_token = 'your_access_token'\njob_id = 'your_job_id'\n\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Get captions\ncaptions = client.get_captions(job_id)\nprint(captions)\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "import { RevAiApiClient } from 'revai-node-sdk';\nvar accessToken = \"yourAccessToken\";\nvar jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nvar client = new RevAiApiClient(accessToken);\n\n// Get captions\nvar captions = await client.getCaptions(jobId);\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\nString jobId = \"yourJobId\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Get captions\nInputStream captions = apiClient.getCaptions(jobId);\n"
          }
        ]
      }
    },
    "/jobs/{id}/captions/translation/{language}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/JobId"
        },
        {
          "name": "language",
          "in": "path",
          "description": "When requesting translated captions, it is important to specify the language code that corresponds to your desired translation language. This language code should be one of the target languages you previously defined in your job submission.",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/TranslationLanguageField"
          }
        }
      ],
      "get": {
        "summary": "Get Translated Captions",
        "operationId": "GetTranslatedCaptions",
        "description": "Returns translated caption output for a transcription job. Translation must be requested as part of the submited job. We currently support SubRip (SRT) and Web Video Text Tracks (VTT) output.\nCaption output format can be specified in the `Accept` header. Returns SRT by default.\n",
        "tags": [
          "Captions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/acceptCaption"
          }
        ],
        "responses": {
          "200": {
            "description": "Rev AI API Captions\n***\nNote: Caption output format is required in the Accept header. The supported headers are `application/x-subrip` and `text/vtt`.\n([SRT](https://en.wikipedia.org/wiki/SubRip))\n",
            "content": {
              "application/x-subrip": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "SubRip Text (SRT)": {
                    "value": "1\n00:00:01,210 --> 00:00:04,840\nHello there, this is an example captions output\n\n2\n00:00:07,350 --> 00:00:10,970\nEach caption group is in the SubRip Text\nfile format\n"
                  }
                }
              },
              "text/vtt": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "WebVTT (VTT)": {
                    "value": "WebVTT\n\n1\n00:00:01,210 ==> 00:00:04,840\nHello there,\nthis is an example captions output\n\n2\n00:00:07,350 --> 00:00:10,970\nEach caption group is in the vtt\nfile format\n"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/ForbiddenDeployment"
          },
          "404": {
            "$ref": "#/components/responses/JobNotFound"
          },
          "405": {
            "$ref": "#/components/responses/InvalidJobPropertyCaptions"
          },
          "406": {
            "$ref": "#/components/responses/InvalidCaptionFormat"
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidStateDetails"
                },
                "examples": {
                  "In Progress Job": {
                    "value": {
                      "allowed_values": [
                        "transcribed"
                      ],
                      "current_value": "in_progress",
                      "type": "https://rev.ai/api/v1/errors/invalid-job-state",
                      "title": "Job is in invalid state",
                      "detail": "Job is in invalid state to obtain the output",
                      "status": 409
                    }
                  }
                }
              }
            }
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "curl -X GET \"https://api.rev.ai/speechtotext/v1/jobs/{id}/captions\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\" -H \"Accept: application/x-subrip\"\n"
          },
          {
            "lang": "Python",
            "source": "import json\nfrom rev_ai import apiclient\naccess_token = 'your_access_token'\njob_id = 'your_job_id'\nlanguage_id = 'es'\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Get captions\ncaptions = client.get_translated_captions(job_id, language_id)\nprint(captions)\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "import { RevAiApiClient } from 'revai-node-sdk';\nvar accessToken = \"yourAccessToken\";\nvar jobId = \"yourJobId\";\nvar languageId = \"es\";\n\n// Initialize your client with your access token\nvar client = new RevAiApiClient(accessToken);\n\n// Get captions\nvar captions = await client.getTranslatedCaptions(jobId, languageId);\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\nString jobId = \"yourJobId\";\nString languageId = \"es\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Get captions\nInputStream captions = apiClient.getTranslatedCaptions(jobId, languageId);\n"
          }
        ]
      }
    },
    "/account": {
      "get": {
        "summary": "Get Account",
        "operationId": "GetAccount",
        "description": "Get the developer's account information",
        "tags": [
          "Accounts"
        ],
        "responses": {
          "200": {
            "description": "Rev AI Account",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        },
        "x-code-samples": [
          {
            "lang": "Shell",
            "label": "curl",
            "source": "curl -X GET \"https://api.rev.ai/speechtotext/v1/account\" -H \"Authorization: Bearer $REV_ACCESS_TOKEN\"\n"
          },
          {
            "lang": "Python",
            "source": "from rev_ai import apiclient\naccess_token = 'your_access_token'\n\n# Create client with your access token\nclient = apiclient.RevAiAPIClient(access_token)\n\n# Get account info\naccount = client.get_account()\nprint(account.email)\nprint(account.free_balance)\nprint(account.purchased_balance)\nprint(account.total_balance)\n# Only available for invoiced accounts, null otherwise\nprint(account.invoiced_balance)\nprint(account.hipaa_enabled)\n"
          },
          {
            "lang": "JavaScript",
            "label": "Node",
            "source": "import { RevAiApiClient } from 'revai-node-sdk';\nvar accessToken = \"yourAccessToken\";\n\n// Initialize your client with your access token\nvar client = new RevAiApiClient(accessToken);\n\n// Get account info\nvar account = await client.getAccount();\n"
          },
          {
            "lang": "Java",
            "source": "String accessToken = \"Your Access Token\";\n\n// Initialize your client with your access token\nApiClient apiClient = new ApiClient(accessToken);\n\n// Get account info\nRevAiAccount account = apiClient.getAccount();\n"
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "AccessToken": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "parameters": {
      "JobId": {
        "name": "id",
        "in": "path",
        "description": "Rev AI API Job Id",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "JobListLimit": {
        "in": "query",
        "name": "limit",
        "schema": {
          "type": "integer",
          "default": 100,
          "maximum": 1000,
          "minimum": 0,
          "nullable": true
        },
        "required": false,
        "description": "Limits the number of jobs returned, default is 100, max is 1000"
      },
      "JobListStartingAfter": {
        "in": "query",
        "name": "starting_after",
        "schema": {
          "type": "string",
          "nullable": true
        },
        "required": false,
        "description": "If specified, returns jobs submitted before the job with this id, exclusive (job with this id is not included)"
      },
      "GroupChannelsBy": {
        "in": "query",
        "name": "group_channels_by",
        "schema": {
          "type": "string",
          "enum": [
            "speaker",
            "word",
            "sentence"
          ],
          "default": "word",
          "nullable": true
        },
        "required": false,
        "description": "Specifies the grouping strategy for organizing tokens in the output transcript for multichannel inputs (`speaker_channels_count` > 1). The parameter determines the granularity of grouping based on speaker changes or interruptions.\nAllowed values are:\n- `speaker`: Groups all tokens spoken by the same speaker, preserving continuity in monologues.\n- `sentence`: Groups tokens at the sentence level. Sentences remain intact even when interrupted by another speaker.\n- `word`: Groups tokens at the word level. In cases of interruptions, monologues are split per word, ensuring no overlap.\nThis parameter works together with `group_channels_threshold_ms` to define how interruptions between speakers are handled.\n"
      },
      "GroupChannelsThresholdMs": {
        "in": "query",
        "name": "group_channels_threshold_ms",
        "schema": {
          "type": "integer",
          "default": 100,
          "nullable": true,
          "minimum": 0,
          "maximum": 5000
        },
        "required": false,
        "description": "Defines the maximum time delay (in milliseconds) allowed between tokens of different speakers to prevent splitting tokens of the current speaker.\nThis parameter is used alongside `group_channels_by` to handle interruptions. For example:\n- When set to a low value, interruptions from other speakers are more likely to split tokens into separate groups.\n- When set to a high value, interruptions are tolerated longer, allowing ongoing phrases or words to complete before splitting.\nThe value ensures continuity within the specified grouping type, such as completing a word when grouping by `word`, or keeping a sentence intact when grouping by `sentence`.\n**Note**: This parameter is ignored when `group_channels_by` is set to `speaker`, as tokens are always grouped by speaker without considering time delays.\n"
      },
      "acceptTranscript": {
        "name": "Accept",
        "in": "header",
        "description": "MIME type specifying the transcription output format",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "application/vnd.rev.transcript.v1.0+json",
            "text/plain"
          ]
        }
      },
      "acceptCaption": {
        "name": "Accept",
        "in": "header",
        "description": "MIME type specifying the caption output format",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "application/x-subrip",
            "text/vtt"
          ]
        }
      }
    },
    "schemas": {
      "JobIdField": {
        "type": "string",
        "description": "Id of the job.",
        "example": "Umx5c6F7pH7r"
      },
      "CreatedOnField": {
        "type": "string",
        "format": "date-time",
        "description": "The date and time the job was created in ISO-8601 UTC form.",
        "example": "2018-05-05T23:23:22.29Z"
      },
      "CompletedOnField": {
        "type": "string",
        "format": "date-time",
        "description": "The date and time the job was completed, whether successfully or failing, in ISO-8601 UTC form.",
        "nullable": true,
        "example": "2018-05-05T23:28:22.29Z"
      },
      "MetadataField": {
        "type": "string",
        "maxLength": 512,
        "description": "Optional metadata that was provided during job submission.",
        "nullable": true
      },
      "FailureDetailField": {
        "type": "string",
        "description": "Human-readable reason why the job failed.",
        "nullable": true,
        "example": "Internal server error."
      },
      "CallbackUrlField": {
        "deprecated": true,
        "type": "string",
        "maxLength": 1024,
        "description": "*Deprecated. Use notification_config instead*. Optional callback url to invoke when processing is complete.\nIf this parameter is used to pass in the callback url, the callback url will be visible in the response.\nIt is recommended to provide webhooks with the `notification_config` parameter as authorization headers can be included\nand both the callback url and auth headers will be encrypted when stored.\n",
        "nullable": true,
        "example": "https://www.example.com/callback"
      },
      "DeleteAfterSecondsField": {
        "description": "Amount of time after job completion when job is auto-deleted. Present only when preference set in job request.",
        "type": "integer",
        "minimum": 0,
        "maximum": 2592000,
        "nullable": true
      },
      "BaseApiJob": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/JobIdField"
          },
          "created_on": {
            "$ref": "#/components/schemas/CreatedOnField"
          },
          "completed_on": {
            "$ref": "#/components/schemas/CompletedOnField"
          },
          "metadata": {
            "$ref": "#/components/schemas/MetadataField"
          },
          "failure_detail": {
            "$ref": "#/components/schemas/FailureDetailField"
          },
          "callback_url": {
            "$ref": "#/components/schemas/CallbackUrlField"
          },
          "delete_after_seconds": {
            "$ref": "#/components/schemas/DeleteAfterSecondsField"
          }
        }
      },
      "AsyncTranscriptionStatusField": {
        "description": "Current status of the job",
        "type": "string",
        "enum": [
          "in_progress",
          "transcribed",
          "failed"
        ],
        "x-enumDescriptions": {
          "in_progress": "job is being processed",
          "transcribed": "job processing is complete and results are available",
          "failed": "job processing failed and resulted in an error"
        },
        "example": "transcribed"
      },
      "FileNameField": {
        "type": "string",
        "description": "Name of the file provided. Present when the file name is available",
        "nullable": true,
        "example": "sample_audio.mp3"
      },
      "FileDurationSecondsField": {
        "type": "number",
        "format": "double",
        "description": "Duration of the file in seconds. Null if the file could not be retrieved or there was not a valid media file",
        "nullable": true,
        "example": 324.36
      },
      "StreamDurationSecondsField": {
        "type": "number",
        "format": "double",
        "description": "Duration of the WebSocket stream in seconds. `null` if not a streaming job.",
        "nullable": true,
        "example": 423.34
      },
      "AsyncTranscriptionFailureField": {
        "type": "string",
        "description": "Simple reason of why the transcription job failed. Check `failure_detail` for specific details and solutions",
        "enum": [
          "internal_processing",
          "download_failure",
          "duration_exceeded",
          "duration_too_short",
          "invalid_media",
          "empty_media",
          "transcription",
          "insufficient_balance",
          "invoicing_limit_exceeded",
          "custom_vocabulary"
        ],
        "nullable": true,
        "example": "download_failure"
      },
      "JobTypeField": {
        "description": "Type of speech recognition performed\n",
        "type": "string",
        "enum": [
          "async",
          "human_tc",
          "stream"
        ],
        "x-enumDescriptions": {
          "async": "Machine transcription job submitted through Asynchronous Speech-to-Text API",
          "human_tc": "Human transcription job submitted through Asynchronous Speech-to-Text API",
          "stream": "Machine transcription job resulting from a Streaming Speech-to-Text API session"
        }
      },
      "OptionalFlagField": {
        "type": "boolean",
        "default": false,
        "nullable": true,
        "example": true
      },
      "CustomVocabularyIdField": {
        "description": "User-supplied custom vocabulary ID to be used with job for transcription.",
        "type": "string",
        "nullable": true,
        "example": "cvgnDwmB6iXevn"
      },
      "SpeakerChannelsCountField": {
        "description": "User-supplied number of speaker channels in the audio.",
        "type": "integer",
        "minimum": 1,
        "maximum": 8,
        "nullable": true,
        "example": 2
      },
      "AsyncLanguageField": {
        "description": "User-supplied language to transcribe the audio into.",
        "type": "string",
        "default": "en",
        "nullable": true,
        "example": "en",
        "enum": [
          "af",
          "ar",
          "az",
          "be",
          "bg",
          "bs",
          "ca",
          "cmn",
          "cs",
          "cy",
          "da",
          "de",
          "el",
          "en",
          "en-gb",
          "en-us",
          "en/es",
          "es",
          "et",
          "fa",
          "fi",
          "fr",
          "gl",
          "he",
          "hi",
          "hr",
          "hu",
          "hy",
          "id",
          "is",
          "it",
          "ja",
          "kk",
          "kn",
          "ko",
          "lt",
          "lv",
          "mk",
          "mr",
          "ms",
          "ne",
          "nl",
          "no",
          "pl",
          "pt",
          "ro",
          "ru",
          "sk",
          "sl",
          "sr",
          "sv",
          "sw",
          "ta",
          "te",
          "th",
          "tl",
          "tr",
          "uk",
          "ur",
          "vi"
        ]
      },
      "TranscriberField": {
        "description": "User-supplied transcriber to transcribe the audio file.",
        "type": "string",
        "default": "machine",
        "nullable": true,
        "example": "machine",
        "enum": [
          "machine",
          "human"
        ]
      },
      "SummarizationModel": {
        "type": "string",
        "nullable": true,
        "default": "standard",
        "enum": [
          "standard",
          "premium"
        ],
        "description": "Model type for summarization.",
        "example": "premium"
      },
      "SummarizationFormattingType": {
        "type": "string",
        "nullable": true,
        "default": "paragraph",
        "enum": [
          "paragraph",
          "bullets"
        ],
        "description": "Summarization formatting type. Use Paragraph for a text summary or Bullets for a list of topics",
        "example": "paragraph"
      },
      "TranslationLanguageField": {
        "type": "string",
        "description": "Target language for translation.",
        "enum": [
          "en",
          "en-us",
          "en-gb",
          "ar",
          "pt",
          "pt-br",
          "pt-pt",
          "fr",
          "fr-ca",
          "es",
          "es-es",
          "es-la",
          "it",
          "ja",
          "ko",
          "de",
          "ru"
        ],
        "example": "en"
      },
      "TranslationModel": {
        "type": "string",
        "nullable": true,
        "default": "standard",
        "enum": [
          "standard",
          "premium"
        ],
        "description": "Model type for translation.",
        "example": "premium"
      },
      "AsyncTranscriptionJob": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseApiJob"
          },
          {
            "type": "object",
            "description": "Rev AI Transcription Job\n***\nNote: properties are not displayed in the returned object if they are null\n",
            "properties": {
              "status": {
                "$ref": "#/components/schemas/AsyncTranscriptionStatusField"
              },
              "name": {
                "$ref": "#/components/schemas/FileNameField"
              },
              "duration_seconds": {
                "$ref": "#/components/schemas/FileDurationSecondsField"
              },
              "stream_duration_seconds": {
                "$ref": "#/components/schemas/StreamDurationSecondsField"
              },
              "failure": {
                "$ref": "#/components/schemas/AsyncTranscriptionFailureField"
              },
              "type": {
                "$ref": "#/components/schemas/JobTypeField",
                "nullable": false,
                "example": "async"
              },
              "media_url": {
                "description": "Media URL provided at job submission. Null if the job referenced a local file. Only visible if `media_url` was used in the submit request."
              },
              "skip_diarization": {
                "description": "User-supplied preference on whether to skip diarization.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "skip_postprocessing": {
                "description": "User-supplied preference on whether to skip post-processing operations such as inverse text normalization (ITN), casing and punctuation.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "skip_punctuation": {
                "description": "User-supplied preference on whether to skip punctuation.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "remove_disfluencies": {
                "description": "User-supplied preference on whether to remove disfluencies.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "remove_atmospherics": {
                "description": "User-supplied preference on whether to remove atmospherics.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "filter_profanity": {
                "description": "User-supplied preference on whether to remove explicit words.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "custom_vocabulary_id": {
                "$ref": "#/components/schemas/CustomVocabularyIdField"
              },
              "speaker_channels_count": {
                "$ref": "#/components/schemas/SpeakerChannelsCountField"
              },
              "language": {
                "$ref": "#/components/schemas/AsyncLanguageField"
              },
              "enable_multilingual": {
                "description": "Enable mixed-language (codeswitch) language identification when `language` is `auto`. When\nenabled, audio with sustained code-switching may be detected as a language pair (e.g.\n`en/es`, \"Spanglish\") and transcribed as such rather than as a single dominant language.\nHas no effect when a specific `language` is provided.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "transcriber": {
                "$ref": "#/components/schemas/TranscriberField"
              },
              "summarization": {
                "type": "object",
                "nullable": true,
                "description": "Rev AI Summarization options.\n",
                "properties": {
                  "model": {
                    "$ref": "#/components/schemas/SummarizationModel",
                    "nullable": false
                  },
                  "type": {
                    "$ref": "#/components/schemas/SummarizationFormattingType",
                    "nullable": false
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed",
                      "failed"
                    ]
                  },
                  "failure": {
                    "type": "string",
                    "nullable": true
                  }
                }
              },
              "translation": {
                "type": "object",
                "nullable": true,
                "description": "Rev AI Translation options.\n",
                "properties": {
                  "target_languages": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 5,
                    "items": {
                      "type": "object",
                      "description": "Translation options for specific language.\n",
                      "properties": {
                        "language": {
                          "$ref": "#/components/schemas/TranslationLanguageField"
                        },
                        "model": {
                          "$ref": "#/components/schemas/TranslationModel"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed",
                            "failed"
                          ]
                        },
                        "failure": {
                          "type": "string",
                          "nullable": true
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        ],
        "example": {
          "id": "Umx5c6F7pH7r",
          "status": "in_progress",
          "created_on": "2018-05-05T23:23:22.29Z",
          "type": "async",
          "delete_after_seconds": 50,
          "transcriber": "machine"
        }
      },
      "BaseProblemDetails": {
        "type": "object",
        "description": "Problem details object returned on errors",
        "properties": {
          "title": {
            "type": "string",
            "description": "Short, human-readable summary of the problem type"
          },
          "type": {
            "type": "string",
            "description": "URI that identifies the problem"
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code of the error"
          }
        }
      },
      "InvalidStateDetails": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseProblemDetails"
          },
          {
            "type": "object",
            "properties": {
              "current_value": {
                "type": "string",
                "description": "Value passed in given request"
              },
              "allowed_values": {
                "type": "array",
                "description": "Allowed values for this request",
                "items": {
                  "type": "string"
                }
              },
              "detail": {
                "type": "string",
                "description": "Human-readable explanation specific to this occurrence of the problem"
              }
            }
          }
        ]
      },
      "BadRequestProblemDetails": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseProblemDetails"
          },
          {
            "type": "object",
            "properties": {
              "parameters": {
                "description": "Invalid properties object where each property is the key, mapped to a list of reasons why the property is invalid",
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        ]
      },
      "SourceConfig": {
        "description": "Optional authorization headers, if they are needed to access the resource at the URL. Headers could be\n a single `Authorization` header of the form `<scheme> <token>`, and one of the [AWS signature v4 headers](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html).\nOnly one of `source_config` and `media_url` may be set.\nThis option will not be visible in the submission response.\n",
        "nullable": true,
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "Direct download media url. Ignored if submitting job from file.",
            "maxLength": 2048,
            "example": "https://www.rev.ai/FTC_Sample_1.mp3"
          },
          "auth_headers": {
            "description": "Optional authorization headers, if they are needed to access the resource at the media url. There are a few constraints: 1) the “Authorization” header is the only header that can be passed in, and 2) the header value must be of the form `<scheme> <token>`. For example: `{\"Authorization\": \"Bearer $BEARER_TOKEN\"}`",
            "type": "object",
            "nullable": true,
            "properties": {
              "Authorization": {
                "type": "string",
                "example": "Bearer <token>"
              }
            },
            "required": [
              "Authorization"
            ],
            "maxLength": 1000
          }
        }
      },
      "NotificationConfig": {
        "type": "object",
        "nullable": true,
        "description": "Optional configuration for a callback url to invoke when processing is complete, in addition to auth\nheaders if they are needed to invoke the callback url.\nCannot be set if `callback_url` is set.\nThis option will not be visible in the submission response.\n",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "Optional callback url to invoke when processing is complete",
            "maxLength": 2048,
            "example": "https://www.example.com/callback"
          },
          "auth_headers": {
            "description": "Optional authorization headers, if they are needed to invoke the callback. There are a few constraints: 1) the “Authorization” header is the only header that can be passed in, and 2) the header value must be of the form `<scheme> <token>`. For example: `{\"Authorization\": \"Bearer $BEARER_TOKEN\"}`",
            "type": "object",
            "nullable": true,
            "properties": {
              "Authorization": {
                "type": "string",
                "example": "Bearer <token>"
              }
            },
            "required": [
              "Authorization"
            ],
            "maxLength": 1000
          }
        }
      },
      "BaseSubmitJobOptions": {
        "type": "object",
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/MetadataField"
          },
          "callback_url": {
            "$ref": "#/components/schemas/CallbackUrlField"
          },
          "notification_config": {
            "$ref": "#/components/schemas/NotificationConfig"
          },
          "delete_after_seconds": {
            "$ref": "#/components/schemas/DeleteAfterSecondsField"
          }
        }
      },
      "VerbatimField": {
        "type": "boolean",
        "example": true,
        "description": "Configures the transcriber to transcribe every syllable. This will include all false starts and disfluencies in the transcript.\n\nThe behavior depends on the transcriber option:\n| Transcriber  | Description                                                        |\n|--------------|--------------------------------------------------------------------|\n| `machine`    | the default is **true**. To turn it off **false** should be explicitly provided  |\n| `human`      | the default is **false** To turn it on **true** should be explicitly provided    |\n"
      },
      "RushField": {
        "description": "<span class=\"hipaa-badge\">**[HIPAA Unsupported]**</span> **Only available for `human` transcriber option** When this field is set to true\nyour job is given higher priority and will be worked on sooner by our human transcribers.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/OptionalFlagField"
          }
        ]
      },
      "TestModeField": {
        "description": "<span class=\"hipaa-badge\">**[HIPAA Unsupported]**</span> **Only available for `human` transcriber option** When this field is set to true\nthe behavior will mock a normal human transcription job except no transcription will\nhappen. The primary use case is to test integrations without being charged for human\ntranscription.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/OptionalFlagField"
          }
        ]
      },
      "SegmentsToTranscribeField": {
        "description": "<span class=\"hipaa-badge\">**[HIPAA Unsupported]**</span> **Only available for `human` transcriber option**. Use this option to specify which\nsections of the transcript need to be transcribed. Segments must be at least 1 minute\nin length and cannot overlap.\n",
        "type": "array",
        "nullable": true,
        "items": {
          "type": "object",
          "properties": {
            "start": {
              "type": "number",
              "description": "The timestamp of the beginning of the segment relative to the beginning of the audio in seconds (centisecond precision)\n"
            },
            "end": {
              "type": "number",
              "description": "The timestamp of the end of the segment relative to the beginning of the audio in seconds (centisecond precision)\n"
            }
          }
        }
      },
      "SpeakerNamesField": {
        "description": "<span class=\"hipaa-badge\">**[HIPAA Unsupported]**</span> **Only available for `human` transcriber option**. Use this option to specify up to 100 names of speakers in\nthe transcript. Names may only be up to 50 characters long.\n",
        "type": "array",
        "minItems": 0,
        "maxItems": 100,
        "nullable": true,
        "items": {
          "type": "object",
          "required": [
            "display_name"
          ],
          "properties": {
            "display_name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 50,
              "description": "The name of the speaker to be used when labeling monologues. Max of 50 characters.\n"
            }
          }
        }
      },
      "SpeakersCountField": {
        "description": "User-supplied number of speakers in the audio.",
        "type": "integer",
        "default": null,
        "minimum": 1,
        "nullable": true,
        "example": 4
      },
      "DiarizationTypeField": {
        "description": "Diarization type.",
        "type": "string",
        "default": "standard",
        "nullable": true,
        "example": "standard",
        "enum": [
          "standard",
          "premium"
        ]
      },
      "CustomVocabulariesField": {
        "type": "array",
        "minItems": 1,
        "maxItems": 50,
        "items": {
          "type": "object",
          "description": "Contains a collection of phrases. Custom vocabulary informs and biases the speech recognition to find those phrases (at the cost of slightly slower transcription).",
          "required": [
            "phrases"
          ],
          "properties": {
            "phrases": {
              "type": "array",
              "minItems": 1,
              "maxItems": 6000,
              "description": "Array of phrases not found in normal dictionary. Add technical jargon, proper nouns and uncommon phrases as strings in this array to add them to the lexicon for this job.\n\nA phrase must contain at least 1 alpha character but may contain any non-numeric character from the Basic Latin set. A phrase can contain up to 12 words. Each word can contain up to 34 characters.\n\n**Note**: Only 6000 phrases can be used per transcription job. For more details, check [Custom Vocabularies](https://docs.rev.ai/api/features/#custom-vocabularies).\n",
              "items": {
                "type": "string",
                "title": "phrase"
              },
              "example": [
                "Paul McCartney",
                "Amelia Earhart",
                "Weiss-Bergman",
                "BLM"
              ]
            }
          }
        }
      },
      "Strict": {
        "type": "boolean",
        "example": true,
        "description": "If true, only exact phrases will be used as custom vocabulary, i.e. phrases will not be split into individual words for processing. By default is enabled."
      },
      "SummarizationConfig": {
        "type": "object",
        "nullable": true,
        "description": "Rev AI Summarization options.\n",
        "properties": {
          "model": {
            "$ref": "#/components/schemas/SummarizationModel"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SummarizationFormattingType"
              }
            ],
            "description": "Summarization formatting type. Use Paragraph for a text summary or Bullets for a list of topics.\n\n`prompt` and `type` parameters are mutuially exclusive.\n"
          },
          "prompt": {
            "type": "string",
            "nullable": true,
            "description": "Custom prompt. Provides the most flexible way to create summaries, but may lead to unprediclable results.\nSummary is produced in [Markdown](https://www.markdownguide.org/) format.\n\n`prompt` and `type` parameters are mutuially exclusive.\n",
            "example": "Were there any action items called out?"
          }
        }
      },
      "TranslationConfig": {
        "type": "object",
        "nullable": true,
        "description": "Rev AI Translation options.\n",
        "properties": {
          "target_languages": {
            "type": "array",
            "minItems": 1,
            "maxItems": 5,
            "items": {
              "type": "object",
              "description": "Translation options for specific language.\n",
              "properties": {
                "language": {
                  "$ref": "#/components/schemas/TranslationLanguageField"
                },
                "model": {
                  "$ref": "#/components/schemas/TranslationModel"
                }
              }
            }
          }
        }
      },
      "SubmitJobOptions": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseSubmitJobOptions"
          },
          {
            "type": "object",
            "description": "Rev AI Job Options Object Model",
            "properties": {
              "transcriber": {
                "description": "Select which service you would like to transcribe this file with.\n\n| Model         | Description                                                                                         |\n|---------------|-----------------------------------------------------------------------------------------------------|\n| `machine`     | the default and routes to our standard (Reverb) model.                                              |\n| `human`       | <span class=\"hipaa-badge\">**[HIPAA Unsupported]**</span> routes the file to our human transcribers. |\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TranscriberField"
                  }
                ]
              },
              "verbatim": {
                "$ref": "#/components/schemas/VerbatimField"
              },
              "rush": {
                "$ref": "#/components/schemas/RushField"
              },
              "test_mode": {
                "$ref": "#/components/schemas/TestModeField"
              },
              "segments_to_transcribe": {
                "$ref": "#/components/schemas/SegmentsToTranscribeField"
              },
              "speaker_names": {
                "$ref": "#/components/schemas/SpeakerNamesField"
              },
              "skip_diarization": {
                "description": "Specify if speaker diarization will be skipped by the speech engine",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "skip_postprocessing": {
                "description": "**Only available for English and Spanish languages.** User-supplied preference on whether to skip post-processing operations such as inverse text normalization (ITN), casing and punctuation.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "skip_punctuation": {
                "description": "Specify if \"punct\" type elements will be skipped by the speech engine. For JSON outputs, this includes removing spaces. For text outputs,\nwords will still be delimited by a space\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "remove_disfluencies": {
                "description": "Currently we only define disfluencies as 'ums' and 'uhs'. When set to true, disfluencies will not appear in the transcript.\nThis option also removes atmospherics if the `remove_atmospherics` is not set. This option is not available for human transcription jobs.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "remove_atmospherics": {
                "description": "We define many atmospherics such `<laugh>, <affirmative>` etc. When set to true, atmospherics will not appear in the transcript. This option is not available for human transcription jobs.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "filter_profanity": {
                "description": "Enabling this option will filter for approx. 600 profanities, which cover most use cases. If a transcribed word matches a word on this list, then all the characters of that word will be replaced by asterisks except for the first and last character.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "speaker_channels_count": {
                "description": "**Only available for English, Spanish and French languages.** Use to specify the total number of unique speaker channels in the audio.\n\nGiven the number of audio channels provided, each channel will be transcribed\nseparately and the channel id assigned to the `speaker` label. The final output will be a combination of all individual channel outputs. Overlapping `monologues` will have ordering broken\nby the order in which the first spoken `element` of each `monologue` occurs. If `speaker_channels_count` is greater than the actual channels in the audio,\nthe job will fail with `invalid_media`.  This option is not available for human transcription jobs.\n\n**Best practice:**\n  - If you have speakers recorded on individual audio channels in the same file (example: Interviewer on channel 1 (left channel) and Applicant on channel 2 (right channel) then use `speaker_channels_count`.\n    There are extra costs to this approach because the channels are transcribed separately. Benefits: perfect diarization, higher accuracy transcription during periods of long cross-talk (speakers talking over one another).\n  - If you have generic audio with an unknown number of speakers, do not specify `speakers_count` or `speaker_channels_count`\n\n**Note:**\n  - The amount charged will be the duration of the file multiplied by the number of channels specified.\n  - When using `speaker_channels_count` each channel will be diarized as one speaker, and the value of `skip_diarization` will be ignored if provided\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SpeakerChannelsCountField"
                  }
                ]
              },
              "speakers_count": {
                "description": "**Only available for English, Spanish and French languages.** Use to specify the total number of unique speakers in the audio.\n\nGiven the count of speakers provided, it will be used to improve the diarization accuracy. This option is not available for human transcription jobs.\n\n**Best practice:**\n  - If you have an audio with multiple speakers and the number of speakers is definitively known, use `speakers_count`.\n    This will provide a hint to the speech engine to make sure the correct number of speakers are idenitified.\n  - If you have generic audio with an unknown number of speakers, do not specify `speakers_count` or `speaker_channels_count`\n\n**Note:**\n  - When using `speaker_channels_count` each channel will be diarized based on the speakers count provided.\n  - When using `skip_diarization` the speakers count will be ignored if provided.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SpeakersCountField"
                  }
                ]
              },
              "diarization_type": {
                "description": "Use to specify diarization type. This option is not available for human transcription jobs.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DiarizationTypeField"
                  }
                ]
              },
              "delete_after_seconds": {
                "description": "Specify the number of seconds after job completion when job is auto-deleted. It may take up to 2 minutes after the scheduled time for the job to be deleted.\nThe number of seconds provided must range from `0` seconds to `2592000` seconds (30 days).\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeleteAfterSecondsField"
                  }
                ]
              },
              "custom_vocabulary_id": {
                "description": "**This feature is in beta.** You can supply the id of a pre-completed custom vocabulary that you submitted through the [Custom Vocabularies API](https://rev.ai/docs/streaming#operation/SubmitCustomVocabulary) instead of uploading the list of phrases using the `custom_vocabularies` parameter. Using `custom_vocabulary_id` or `custom_vocabularies` with the same list of phrases yields the same transcription result, but `custom_vocabulary_id` enables your submission to finish processing faster by 6 seconds on average.\n\nYou cannot use both `custom_vocabulary_id` and `custom_vocabularies` at the same time, and doing so will result in a 400 response. If the supplied id represents an incomplete, deleted, or non-existent custom vocabulary then you will receive a 404 response.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CustomVocabularyIdField"
                  }
                ]
              },
              "custom_vocabularies": {
                "description": "Specify a collection of custom vocabulary to be used for this job. Custom vocabulary informs and biases the speech recognition to find those phrases (at the cost of slightly slower transcription).\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CustomVocabulariesField"
                  }
                ]
              },
              "strict_custom_vocabulary": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Strict"
                  }
                ]
              },
              "summarization_config": {
                "description": "Use to specify summarization options. This option is not available for human transcription jobs.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SummarizationConfig"
                  }
                ]
              },
              "translation_config": {
                "description": "Use to specify translation options.  This option is not available for human transcription jobs.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TranslationConfig"
                  }
                ]
              },
              "enable_multilingual": {
                "description": "Enable mixed-language (codeswitch) language identification when `language` is `auto`. When\nenabled, audio with sustained code-switching may be detected as a language pair (e.g.\n`en/es`, \"Spanglish\") and transcribed as such rather than as a single dominant language.\nHas no effect when a specific `language` is provided.\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              },
              "language": {
                "allOf": [
                  {
                    "type": "string",
                    "default": "en",
                    "nullable": true,
                    "example": "en",
                    "description": "`language` is provided as a [ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), with the following exceptions:\n- Multilingual English/Spanish (en/es), which does not follow any existing ISO language code convention\n- English US (en-us), which is an ISO 639-1 language code with region United States\n- English UK (en-gb), which is an ISO 639-1 language code with region United Kingdom\n- Mandarin (cmn), which is supplied as an [ISO 639-3 language code](https://en.wikipedia.org/wiki/ISO_639-3)\n\nOnly 1 language can be selected per audio, i.e. no multiple languages in one transcription job.\nAdditionally, the following parameters may **not** be used with non-English languages: `skip_punctuation`, `remove_disfluencies`, `filter_profanity`, `speaker_channels_count`, `custom_vocabulary_id`.\n\nYou can provide a `language` parameter for transcribing audio in one of the following languages:\n\n| Language                     | Language Code | HIPAA Support (US) | EU Deployment Support |\n|------------------------------|---------------|--------------------| --------------------- |\n| Multilingual English/Spanish | en/es | x |   |\n| Afrikaans                    | af    | x |   |\n| Arabic                       | ar    | x | x |\n| Armenian                     | hy    | x |   |\n| Azerbaijani                  | az    | x |   |\n| Belarusian                   | be    | x |   |\n| Bosnian                      | bs    | x |   |\n| Bulgarian                    | bg    | x | x |\n| Catalan                      | ca    | x | x |\n| Croatian                     | hr    | x | x |\n| Czech                        | cs    | x | x |\n| Danish                       | da    | x | x |\n| Dutch                        | nl    | x | x |\n| English                      | en    | x | x |\n| English (UK)                 | en-gb | x | x |\n| English (US)                 | en-us | x | x |\n| Estonian                     | et    | x |   |\n| Farsi                        | fa    | x | x |\n| Finnish                      | fi    | x | x |\n| French                       | fr    | x | x |\n| Galician                     | gl    | x |   |\n| German                       | de    | x | x |\n| Greek                        | el    | x | x |\n| Hebrew                       | he    | x | x |\n| Hindi                        | hi    | x | x |\n| Hungarian                    | hu    | x | x |\n| Icelandic                    | is    | x |   |\n| Indonesian                   | id    | x | x |\n| Italian                      | it    | x | x |\n| Japanese                     | ja    | x | x |\n| Kannada                      | kn    | x |   |\n| Kazakh                       | kk    | x |   |\n| Korean                       | ko    | x | x |\n| Latvian                      | lv    | x | x |\n| Lithuanian                   | lt    | x | x |\n| Macedonian                   | mk    | x |   |\n| Malay                        | ms    | x | x |\n| Mandarin                     | cmn   | x | x |\n| Marathi                      | mr    | x |   |\n| Nepali                       | ne    | x |   |\n| Norwegian                    | no    | x | x |\n| Polish                       | pl    | x | x |\n| Portuguese                   | pt    | x | x |\n| Romanian                     | ro    | x | x |\n| Russian                      | ru    | x | x |\n| Serbian                      | sr    | x |   |\n| Slovak                       | sk    | x | x |\n| Slovenian                    | sl    | x | x |\n| Spanish                      | es    | x | x |\n| Swahili                      | sw    | x |   |\n| Swedish                      | sv    | x | x |\n| Tagalog                      | tl    | x |   |\n| Tamil                        | ta    | x | x |\n| Telugu                       | te    | x | x |\n| Thai                         | th    | x |   |\n| Turkish                      | tr    | x | x |\n| Ukrainian                    | uk    | x |   |\n| Urdu                         | ur    | x |   |\n| Vietnamese                   | vi    | x |   |\n| Welsh                        | cy    | x |   |\n"
                  }
                ]
              },
              "forced_alignment": {
                "description": "Provides improved accuracy for per-word timestamps for a transcript.\n\nThe following languages are currently supported:\n- English (en, en-us, en-gb)\n- French (fr)\n- Italian (it)\n- German (de)\n- Spanish (es)\n",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OptionalFlagField"
                  }
                ]
              }
            }
          }
        ]
      },
      "SubmitJobMediaUrlOptions": {
        "allOf": [
          {
            "type": "object",
            "properties": {
              "media_url": {
                "deprecated": true,
                "type": "string",
                "description": "<span class=\"hipaa-badge\">**[HIPAA Unsupported]**</span> *Deprecated. Use source_config instead.*\nDirect download media url. Ignored if submitting job from file.\n**Note:**Most languages support media files with duration up to 17 hours, with the exception for Telugu (`te`) which has a limit of 6 hours.\nFor non-English jobs, expected turnaround time can be up to 6 hours.\nIf this parameter is used to pass in the media url, the media url will be visible in the response.\nIt is recommended to use the `source_config` parameter instead, as authorization headers can be included and both\nthe media url and auth headers will be encrypted when stored.\n",
                "maxLength": 2048,
                "example": "https://www.rev.ai/FTC_Sample_1.mp3"
              },
              "source_config": {
                "$ref": "#/components/schemas/SourceConfig"
              }
            }
          },
          {
            "$ref": "#/components/schemas/SubmitJobOptions"
          }
        ]
      },
      "ErrorProblemDetails": {
        "properties": {
          "error": {
            "type": "string"
          }
        }
      },
      "SpeakerField": {
        "type": "integer",
        "description": "Id of the speaker of the monologue.",
        "example": 1
      },
      "SpeakerInfoField": {
        "type": "object",
        "nullable": true,
        "description": "Information about the speaker for this monologue. Null if speaker_names option not provided or no speaker name detected.",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id of the speaker of the monologue",
            "example": 1
          },
          "display_name": {
            "type": "string",
            "description": "Human readable name of the speaker that was provided",
            "example": "Jane Doe"
          }
        }
      },
      "TsField": {
        "type": "number",
        "description": "The timestamp of the beginning of the element relative to the beginning of the audio in seconds (centisecond precision).\n"
      },
      "NullableTsField": {
        "type": "number",
        "nullable": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/TsField"
          }
        ]
      },
      "EndTsField": {
        "type": "number",
        "description": "The timestamp of the end of the element relative to the beginning of the audio in seconds (centisecond precision).\n"
      },
      "NullableEndTsField": {
        "type": "number",
        "nullable": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/EndTsField"
          }
        ]
      },
      "Transcript": {
        "type": "object",
        "description": "Rev AI Transcript Model\n",
        "properties": {
          "monologues": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "speaker": {
                  "$ref": "#/components/schemas/SpeakerField"
                },
                "speaker_info": {
                  "$ref": "#/components/schemas/SpeakerInfoField"
                },
                "elements": {
                  "type": "array",
                  "description": "Array of transcript elements",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "text",
                          "punct",
                          "unknown"
                        ],
                        "description": "Type of transcript element.",
                        "example": "text"
                      },
                      "value": {
                        "type": "string",
                        "description": "Value of the transcript element.",
                        "example": "Hello"
                      },
                      "ts": {
                        "$ref": "#/components/schemas/NullableTsField"
                      },
                      "end_ts": {
                        "$ref": "#/components/schemas/NullableEndTsField"
                      },
                      "confidence": {
                        "type": "number",
                        "format": "double",
                        "nullable": true,
                        "minimum": 0,
                        "maximum": 1,
                        "description": "Confidence score of the provided value. If the element `type` is `punct` or `unknown`, confidence will be `null`",
                        "example": 0.85
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Account": {
        "type": "object",
        "description": "Rev AI Account Model",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of developer account",
            "example": "example@rev.ai"
          },
          "free_balance": {
            "type": "number",
            "format": "double",
            "description": "Amount available in free balance (free credits supplied by Rev AI), expressed in USD.",
            "example": 5.5
          },
          "purchased_balance": {
            "type": "number",
            "format": "double",
            "description": "Amount available in pay-as-you-go balance, expressed in USD.",
            "example": 8.5
          },
          "total_balance": {
            "type": "number",
            "format": "double",
            "description": "Sum of free and purchased balances, expressed in USD.",
            "example": 14
          },
          "invoiced_balance": {
            "type": "number",
            "format": "double",
            "description": "Invoice balance, expressed in USD. Negative value indicates amount owed, positive value indicates amount in credit. Only available for accounts with pre-defined invoicing arrangements.",
            "example": -9.5
          },
          "balance_seconds": {
            "type": "integer",
            "description": "Deprecated, always returns `0`. Use `free_balance`, `purchased_balance`, `total_balance` and `invoiced_balance` instead.",
            "example": 0
          },
          "hipaa_enabled": {
            "type": "boolean",
            "description": "Whether HIPAA is enabled for the account."
          }
        }
      }
    },
    "examples": {
      "NewJob": {
        "value": {
          "id": "Umx5c6F7pH7r",
          "status": "in_progress",
          "language": "en",
          "created_on": "2018-05-05T23:23:22.29Z",
          "transcriber": "machine"
        }
      },
      "TranscribedJob": {
        "value": {
          "id": "Umx5c6F7pH7r",
          "status": "transcribed",
          "language": "en",
          "created_on": "2018-05-05T23:23:22.29Z",
          "completed_on": "2018-05-05T23:45:13.41Z",
          "duration_seconds": 356.24,
          "transcriber": "machine"
        }
      },
      "FailedJob": {
        "value": {
          "id": "Umx5c6F7pH7r",
          "status": "failed",
          "language": "en",
          "created_on": "2018-05-05T23:23:22.29Z",
          "completed_on": "2018-05-05T23:23:24.11Z",
          "transcriber": "machine",
          "failure": "download_failure",
          "failure_detail": "Failed to download media file. Please check your url and file type"
        }
      },
      "BadLimitResponse": {
        "value": {
          "parameters": {
            "limit": [
              "The max value for limit is 1000"
            ]
          },
          "type": "https://www.rev.ai/api/v1/errors/invalid-parameters",
          "title": "Your request parameters didn't validate",
          "status": 400
        }
      },
      "InvalidStartingAfterResponse": {
        "value": {
          "parameters": {
            "starting_after": [
              "Invalid job ID"
            ]
          },
          "type": "https://www.rev.ai/api/v1/errors/invalid-parameters",
          "title": "Your request parameters didn't validate",
          "status": 400
        }
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "Request Unauthorized\n",
        "content": {
          "application/problem+json": {
            "schema": {
              "properties": {
                "title": {
                  "type": "string",
                  "description": "Short, human-readable summary of the problem type"
                },
                "status": {
                  "type": "integer",
                  "description": "HTTP status code of the error"
                }
              }
            },
            "example": {
              "title": "Authorization has been denied for this request",
              "status": 401
            }
          }
        }
      },
      "ForbiddenDeployment": {
        "description": "User does not have permission to access this deployment",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/BaseProblemDetails"
            },
            "example": {
              "type": "https://www.rev.ai/api/v1/errors/access-denied",
              "title": "Permisson has been denied for this request - access to this deployment is not allowed",
              "status": 403
            }
          }
        }
      },
      "JobNotFound": {
        "description": "Job Not Found",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/BaseProblemDetails"
            },
            "example": {
              "type": "https://www.rev.ai/api/v1/errors/job-not-found",
              "title": "could not find job",
              "status": 404
            }
          }
        }
      },
      "DeleteJobSuccessful": {
        "description": "Job was successfully deleted\n",
        "content": {}
      },
      "SubmissionForbidden": {
        "description": "Request Forbidden\n",
        "content": {
          "application/problem+json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ErrorProblemDetails"
                },
                {
                  "$ref": "#/components/schemas/BaseProblemDetails"
                }
              ]
            },
            "examples": {
              "HIPAA Error": {
                "value": {
                  "error": "HIPAA user is not allowed to use MediaUrl"
                }
              },
              "Global Deployment Forbidden Error": {
                "value": {
                  "status": 403,
                  "title": "Permisson has been denied for this request - access to this deployment is not allowed\n",
                  "type": "https://www.rev.ai/api/v1/errors/access-denied"
                }
              }
            }
          }
        }
      },
      "PayloadTooLarge": {
        "description": "Payload Too Large\n***\nOnly returned when job is submitted using a local file as part of `multipart/form-data`. Submit a job with the `source_config` parameter\nfor files larger than 2GBs\n",
        "content": {
          "application/problem+json": {
            "schema": {
              "properties": {
                "title": {
                  "type": "string",
                  "description": "Short, human-readable summary of the problem type"
                },
                "detail": {
                  "type": "string",
                  "description": "Human-readable explanation specific to this occurrence of the problem"
                },
                "status": {
                  "type": "integer",
                  "description": "HTTP status code of the error"
                }
              }
            },
            "example": {
              "title": "Payload Too Large",
              "detail": "Submitted payload exceeds maximum allowed file size",
              "status": 413
            }
          }
        }
      },
      "InvalidTranscriptFormat": {
        "description": "Invalid Transcript Format",
        "content": {
          "application/problem+json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/BaseProblemDetails"
                },
                {
                  "type": "object",
                  "properties": {
                    "current_value": {
                      "type": "string",
                      "description": "Value passed in given request"
                    },
                    "allowed_values": {
                      "type": "array",
                      "description": "Allowed values for this request",
                      "items": {
                        "type": "string"
                      }
                    },
                    "detail": {
                      "type": "string",
                      "description": "Human-readable explanation specific to this occurrence of the problem"
                    }
                  }
                }
              ]
            },
            "example": {
              "allowed_values": [
                "text/plain",
                "application/vnd.rev.transcript.v1.0+json"
              ],
              "current_value": "*/*",
              "type": "https://www.rev.ai/api/v1/errors/unsupported-output-format",
              "title": "Output format is not supported",
              "detail": "Unsupported value */*",
              "status": 406
            }
          }
        }
      },
      "InvalidJobPropertyCaptions": {
        "description": "Invalid Job Property",
        "content": {
          "application/problem+json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/BaseProblemDetails"
                },
                {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "Human-readable explanation specific to this occurrence of the problem"
                    }
                  }
                }
              ]
            },
            "example": {
              "type": "https://rev.ai/api/v1/errors/invalid-job-properties",
              "title": "Job contains unsupported properties",
              "detail": "Job with speaker channels provided are not supported for retrieving captions",
              "status": 405
            }
          }
        }
      },
      "InvalidCaptionFormat": {
        "description": "Invalid Caption Format",
        "content": {
          "application/problem+json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/BaseProblemDetails"
                },
                {
                  "type": "object",
                  "properties": {
                    "current_value": {
                      "type": "string",
                      "description": "Value passed in given request"
                    },
                    "allowed_values": {
                      "type": "array",
                      "description": "Allowed values for this request",
                      "items": {
                        "type": "string"
                      }
                    },
                    "detail": {
                      "type": "string",
                      "description": "Human-readable explanation specific to this occurrence of the problem"
                    }
                  }
                }
              ]
            },
            "example": {
              "allowed_values": [
                "application/x-subrip",
                "text/vtt"
              ],
              "current_value": "*/*",
              "type": "https://www.rev.ai/api/v1/errors/unsupported-output-format",
              "title": "Output format is not supported",
              "detail": "Unsupported value */*",
              "status": 406
            }
          }
        }
      }
    }
  }
}