> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# ट्रांसक्रिप्ट बनाएं

POST https://api.elevenlabs.io/v1/speech-to-text
Content-Type: multipart/form-data

किसी ऑडियो या वीडियो फ़ाइल को ट्रांसक्राइब करें। अगर webhook को true सेट किया गया है, तो अनुरोध असिंक्रोनस रूप से प्रोसेस होगा और नतीजे कॉन्फ़िगर किए गए webhooks को भेजे जाएंगे। जब use_multi_channel true हो और दिए गए ऑडियो में कई चैनल हों, तो हर चैनल के लिए अलग ट्रांसक्रिप्ट वाला 'transcripts' ऑब्जेक्ट लौटाया जाता है; इसके बजाय सभी चैनलों को मिलाकर और समय के अनुसार क्रमबद्ध एक ट्रांसक्रिप्ट पाने के लिए multichannel_output_style='combined' सेट करें। अन्यथा, एक ट्रांसक्रिप्ट लौटता है। वैकल्पिक webhook_metadata पैरामीटर से आप कस्टम डेटा जोड़ सकते हैं, जो अनुरोध सहसंबंध और ट्रैकिंग के लिए webhook जवाबों में शामिल होगा।

Reference: https://elevenlabs.io/docs/api-reference/speech-to-text/convert

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Query parameters

- `token` (string, optional, nullable) — POST /v1/single-use-token/batch_scribe के ज़रिए बनाया गया एकल-उपयोग ऑथेंटिकेशन टोकन। यह टोकन केवल एक बार इस्तेमाल किया जा सकता है और 15 मिनट बाद समाप्त हो जाता है। फ्रंटएंड क्लाइंट्स के लिए API key या bearer token ऑथेंटिकेशन का विकल्प।
- `enable_logging` (boolean, optional, default: true) — जब enable_logging को false सेट किया जाता है, तो अनुरोध के लिए zero retention mode इस्तेमाल होगा। इसका मतलब है कि इस अनुरोध के लिए log और transcript storage सुविधाएं उपलब्ध नहीं होंगी। zero retention mode केवल enterprise ग्राहक इस्तेमाल कर सकते हैं।

### Body (multipart/form-data)

This endpoint expects a multipart form containing an optional file.

- `model_id` (string, required) — ट्रांसक्रिप्शन के लिए उपयोग किए जाने वाले मॉडल की ID।
- `file` (file, optional) — ट्रांसक्राइब करने की फ़ाइल (न्यूनतम ऑडियो लंबाई 100ms)। सभी प्रमुख ऑडियो और वीडियो फ़ॉर्मैट समर्थित हैं। file या cloud_storage_url पैरामीटर में से ठीक एक देना ज़रूरी है। फ़ाइल का आकार 5.0GB से कम होना चाहिए।
- `language_code` (string, optional) — ऑडियो फ़ाइल की भाषा से मेल खाता ISO-639-1 या ISO-639-3 language_code। पहले से पता होने पर यह कभी-कभी ट्रांसक्रिप्शन की परफ़ॉर्मेंस बेहतर कर सकता है। डिफ़ॉल्ट रूप से null होता है, जिसमें भाषा का अनुमान अपने-आप लगाया जाता है।
- `transcript_edit` (string, optional) — अंतिम ट्रांसक्रिप्ट पर लागू किया जाने वाला प्राकृतिक भाषा का निर्देश (अधिकतम 2000 वर्ण)। एडिट किया गया टेक्स्ट मूल ट्रांसक्रिप्ट के साथ 'edited_transcript' में लौटाया जाता है। इसे entity_detection, entity_redaction या use_multi_channel के साथ नहीं जोड़ा जा सकता। इस पैरामीटर के इस्तेमाल पर बेस ट्रांसक्रिप्शन लागत पर अतिरिक्त 30% शुल्क लगेगा और कम से कम 10 सेकंड के ऑडियो का बिल किया जाएगा।
- `tag_audio_events` (boolean, optional) — ट्रांसक्रिप्शन में (हँसी), (कदमों की आहट) आदि ऑडियो इवेंट टैग करने हैं या नहीं।
- `num_speakers` (integer, optional) — अपलोड की गई फ़ाइल में बोलने वाले स्पीकर की अधिकतम संख्या। इससे यह अनुमान लगाने में मदद मिल सकती है कि कौन कब बोलता है। अनुमान लगाए जा सकने वाले स्पीकर की अधिकतम संख्या 32 है। डिफ़ॉल्ट रूप से यह null है; इस स्थिति में स्पीकर की संख्या मॉडल द्वारा समर्थित अधिकतम मान पर सेट होती है।
- `timestamps_granularity` (enum, optional) — ट्रांसक्रिप्शन में टाइमस्टैम्प की ग्रैन्युलैरिटी। 'word' शब्द-स्तर के टाइमस्टैम्प देता है और 'character' हर शब्द के लिए वर्ण-स्तर के टाइमस्टैम्प देता है।
- `diarize` (boolean, optional) — क्या अपलोड की गई फ़ाइल में इस समय बोल रहे स्पीकर को एनोटेट करना है।
- `diarization_threshold` (double, optional) — स्पीकर डायराइज़ेशन के दौरान लागू की जाने वाली डायराइज़ेशन थ्रेशहोल्ड। ज़्यादा मान का मतलब है कि एक स्पीकर के दो अलग-अलग स्पीकर के रूप में डायराइज़ होने की संभावना कम होगी, लेकिन दो अलग-अलग स्पीकर के एक स्पीकर के रूप में डायराइज़ होने की संभावना ज़्यादा होगी (कुल अनुमानित स्पीकर कम)। कम मान का मतलब है कि एक स्पीकर के दो अलग-अलग स्पीकर के रूप में डायराइज़ होने की संभावना ज़्यादा होगी, लेकिन दो अलग-अलग स्पीकर के एक स्पीकर के रूप में डायराइज़ होने की संभावना कम होगी (कुल अनुमानित स्पीकर ज़्यादा)। इसे केवल तब सेट किया जा सकता है जब diarize=True और num_speakers=None हो। डिफ़ॉल्ट None है; इस स्थिति में हम model_id के आधार पर थ्रेशहोल्ड चुनेंगे (आमतौर पर 0.22)।
- `additional_formats` (list of ExportOptions, optional) — ट्रांसक्रिप्ट एक्सपोर्ट करने के लिए अतिरिक्त फ़ॉर्मैट की सूची।
- `file_format` (enum, optional) — इनपुट ऑडियो का फ़ॉर्मैट। विकल्प हैं 'pcm_s16le_16' या 'other'। `pcm_s16le_16` के लिए, इनपुट ऑडियो 16kHz सैंपल रेट, सिंगल चैनल (मोनो) और लिटल-एंडियन बाइट ऑर्डर वाला 16-बिट PCM होना चाहिए। एन्कोडेड वेवफ़ॉर्म देने की तुलना में लेटेंसी कम होगी।
- `cloud_storage_url` (string, optional) — [बहिष्कृत] यह पैरामीटर बहिष्कृत है और भविष्य में हटा दिया जाएगा। इसके बजाय 'source_url' इस्तेमाल करें। ट्रांसक्राइब की जाने वाली फ़ाइल का HTTPS URL। file या cloud_storage_url पैरामीटर में से ठीक एक देना ज़रूरी है। फ़ाइल HTTPS के ज़रिए उपलब्ध होनी चाहिए और उसका आकार 2GB से कम होना चाहिए। कोई भी मान्य HTTPS URL स्वीकार किया जाता है, जिसमें क्लाउड स्टोरेज प्रदाताओं (AWS S3, Google Cloud Storage, Cloudflare R2 आदि), CDN या किसी अन्य HTTPS स्रोत के URL शामिल हैं। URL पहले से हस्ताक्षरित हो सकते हैं या query parameters में authentication tokens शामिल कर सकते हैं।
- `source_url` (string, optional) — ट्रांसक्राइब करने के लिए ऑडियो या वीडियो फ़ाइल का URL। होस्ट की गई वीडियो या ऑडियो फ़ाइलों, YouTube वीडियो URL, TikTok वीडियो URL और अन्य वीडियो होस्टिंग सेवाओं का समर्थन करता है।
- `webhook` (boolean, optional) — ट्रांसक्रिप्शन परिणाम को कॉन्फ़िगर किए गए स्पीच टू टेक्स्ट वेबहुक पर भेजना है या नहीं। सेट होने पर, रिक्वेस्ट ट्रांसक्रिप्शन के बिना जल्दी लौटेगी और ट्रांसक्रिप्शन बाद में वेबहुक के ज़रिए भेजा जाएगा।
- `webhook_id` (string, optional) — ट्रांसक्रिप्शन परिणाम भेजने के लिए वैकल्पिक विशिष्ट webhook ID। यह केवल तब मान्य है जब webhook को true पर सेट किया गया हो। न दिए जाने पर, ट्रांसक्रिप्शन सभी कॉन्फ़िगर किए गए स्पीच टू टेक्स्ट webhooks पर भेजा जाएगा।
- `temperature` (double, optional) — ट्रांसक्रिप्शन आउटपुट की रैंडमनेस नियंत्रित करता है। 0.0 से 2.0 के बीच के मान स्वीकार करता है, जहाँ ज़्यादा मान से अधिक विविध और कम निश्चित नतीजे मिलते हैं। छोड़े जाने पर, हम आपके चुने हुए मॉडल के आधार पर तापमान इस्तेमाल करेंगे, जो आमतौर पर 0 होता है।
- `seed` (integer, optional) — निर्दिष्ट होने पर, हमारा सिस्टम नियतात्मक रूप से सैंपल करने का सर्वोत्तम प्रयास करेगा, ताकि एक ही seed और पैरामीटर्स वाली बार-बार की गई रिक्वेस्ट से एक ही परिणाम मिले। नियतात्मकता की गारंटी नहीं है। यह 0 से 2147483647 के बीच एक पूर्णांक होना चाहिए।
- `use_multi_channel` (boolean, optional) — क्या ऑडियो फ़ाइल में कई channels हैं, जिनमें हर channel में एक ही speaker है। सक्षम होने पर, हर channel को स्वतंत्र रूप से ट्रांसक्राइब किया जाता है। डिफ़ॉल्ट रूप से हर channel के लिए अलग transcript लौटता है; सभी channels को मिलाकर और समय के हिसाब से क्रमबद्ध एक transcript पाने के लिए multichannel_output_style='combined' सेट करें। response के हर शब्द में 'channel_index' field होता है, जो बताता है कि वह किस channel में बोला गया था। अधिकतम 5 channels समर्थित हैं। हर channel का बिल पूरे ऑडियो duration के हिसाब से अलग से बनता है, इसलिए लागत channels की संख्या के साथ रैखिक रूप से बढ़ती है।
- `multichannel_output_style` (enum, optional) — use_multi_channel सक्षम होने पर रिस्पॉन्स का स्वरूप नियंत्रित करता है। 'separate' (डिफ़ॉल्ट) 'transcripts' के अंतर्गत हर चैनल के लिए एक ट्रांसक्रिप्ट लौटाता है। 'combined' सभी चैनलों को एक ट्रांसक्रिप्ट में मर्ज करता है, जिसके शब्द शुरू होने के समय के अनुसार क्रमबद्ध होते हैं और हर शब्द में 'channel_index' होता है — जो सिंगल-चैनल रिस्पॉन्स स्वरूप से मेल खाता है। 'combined' के लिए टाइमस्टैंप आवश्यक हैं (timestamps_granularity 'none' नहीं होना चाहिए) और यह एंटिटी डिटेक्शन या रिडैक्शन का समर्थन नहीं करता।
- `webhook_metadata` (V1SpeechToTextPostRequestBodyContentMultipartFormDataSchemaWebhookMetadata, optional) — webhook response में शामिल करने के लिए वैकल्पिक metadata। यह अधिकतम 2 levels की depth और 16KB के अधिकतम आकार वाले object का प्रतिनिधित्व करने वाली JSON string होनी चाहिए। internal IDs, job references या अन्य contextual information को track करने के लिए उपयोगी है।
- `entity_detection` (V1SpeechToTextPostRequestBodyContentMultipartFormDataSchemaEntityDetection, optional) — ट्रांसक्रिप्ट में एंटिटीज़ का पता लगाएं। सभी एंटिटीज़ का पता लगाने के लिए 'all', किसी एक एंटिटी टाइप या कैटेगरी स्ट्रिंग, या एंटिटी टाइप/कैटेगरी की सूची का उपयोग किया जा सकता है। कैटेगरी में 'pii', 'phi', 'pci', 'other', 'offensive_language' शामिल हैं। सक्षम होने पर, पता की गई एंटिटीज़ उनके टेक्स्ट, टाइप और कैरेक्टर पोज़िशन के साथ 'entities' फ़ील्ड में लौटाई जाएंगी।
- `no_verbatim` (boolean, optional) — अगर true है, तो ट्रांसक्रिप्शन में filler words, गलत शुरुआतें और गैर-भाषण ध्वनियां नहीं होंगी। केवल scribe_v2 मॉडल के साथ समर्थित है।
- `use_speaker_library` (boolean, optional) — डायराइज़ेशन के दौरान जाने-पहचाने स्पीकर्स की पहचान करने के लिए स्पीकर लाइब्रेरी इस्तेमाल करनी है या नहीं। सक्षम होने और diarize के true होने पर, पहचाने गए स्पीकर्स का मिलान वर्कस्पेस की स्पीकर लाइब्रेरी में रजिस्टर्ड स्पीकर्स से किया जाएगा।
- `detect_speaker_roles` (boolean, optional) — क्या स्पीकर की भूमिकाएँ (एजेंट बनाम ग्राहक) पहचाननी हैं। इसके लिए diarize=true आवश्यक है। इसे use_multi_channel=true के साथ इस्तेमाल नहीं किया जा सकता। सक्षम होने पर speaker_id वैल्यू 'speaker_0', 'speaker_1' आदि के बजाय 'agent' और 'customer' होंगी। इसके उपयोग पर बेस ट्रांसक्रिप्शन लागत का अतिरिक्त 10% शुल्क लगेगा।
- `entity_redaction` (V1SpeechToTextPostRequestBodyContentMultipartFormDataSchemaEntityRedaction, optional) — ट्रांसक्रिप्ट टेक्स्ट से एंटिटीज़ हटाएं। entity_detection जैसा ही फ़ॉर्मैट स्वीकार करता है: 'all', कोई कैटेगरी ('pii', 'phi'), या खास एंटिटी टाइप। यह entity_detection का सबसेट होना चाहिए। रिडैक्शन सक्षम होने पर, entities फ़ील्ड नहीं लौटाया जाएगा।
- `entity_redaction_mode` (string, optional) — रिडैक्ट की गई एंटिटी को कैसे फ़ॉर्मैट करना है। 'redacted', \{REDACTED} से बदलता है; 'entity\_type', \{ENTITY\_TYPE} से बदलता है; और 'enumerated\_entity\_type', \{ENTITY\_TYPE\_N} से बदलता है, जहां N हर घटना की क्रम संख्या है। सिर्फ़ entity\_redaction सेट होने पर इस्तेमाल होता है।
- `keyterms` (list of string, optional) — ट्रांसक्रिप्शन को इन मुख्य शब्दों की ओर झुकाने के लिए उनकी सूची। मुख्य शब्द वे शब्द या वाक्यांश हैं जिन्हें आप चाहते हैं कि मॉडल अधिक सटीकता से पहचाने। मुख्य शब्दों की संख्या 1000 से अधिक नहीं हो सकती। हर मुख्य शब्द की लंबाई 50 वर्णों से कम होनी चाहिए। मुख्य शब्दों में अधिकतम 5 शब्द हो सकते हैं (नॉर्मलाइज़ेशन के बाद)। उदाहरण के लिए \["hello", "world", "technical term"]। ये वर्ण समर्थित नहीं हैं: `<`, `>`, `{`, `}`, `[`, `]`, `\`। इस पैरामीटर के उपयोग पर मूल ट्रांसक्रिप्शन लागत पर अतिरिक्त 20% शुल्क लगेगा। 100 से अधिक मुख्य शब्द देने पर, हर अनुरोध के लिए न्यूनतम बिल योग्य अवधि 20 सेकंड होगी।

## Response

### 200

सिंक्रोनस ट्रांसक्रिप्शन नतीजा

- `speech_to_text_convert_Response_200`

### 202

एसिंक्रोनस अनुरोध स्वीकार किया गया

## Errors

### 422 Unprocessable Entity Error

वैलिडेशन एरर

- `detail` (list of ValidationError, optional)

## Types

### SpeechToTextChunkResponseModel

टाइमिंग जानकारी के साथ ट्रांसक्रिप्शन का चंक-स्तरीय विवरण।

- `language_code` (string, required) — पहचाना गया भाषा कोड (जैसे अंग्रेज़ी के लिए 'eng')।
- `language_probability` (double, required) — भाषा पहचान का कॉन्फिडेंस स्कोर (0 से 1)।
- `text` (string, required) — ट्रांसक्रिप्शन का मूल टेक्स्ट।
- `words` (list of SpeechToTextWordResponseModel, required) — टाइमिंग जानकारी के साथ शब्दों की सूची।
- `channel_index` (integer, optional, nullable) — वह चैनल इंडेक्स जिससे यह ट्रांसक्रिप्ट संबंधित है (मल्टीचैनल ऑडियो के लिए)।
- `additional_formats` (list of AdditionalFormatResponseModel, optional, nullable) — ट्रांसक्रिप्ट के अनुरोधित अतिरिक्त फ़ॉर्मैट।
- `transcription_id` (string, optional, nullable) — रिस्पॉन्स की ट्रांसक्रिप्शन ID।
- `entities` (list of DetectedEntity, optional, nullable) — ट्रांसक्रिप्ट में टेक्स्ट, प्रकार और अक्षर स्थितियों के साथ पहचानी गई एंटिटी की सूची।
- `audio_duration_secs` (double, optional, nullable) — ट्रांसक्राइब किए गए ऑडियो की अवधि सेकंड में।
- `edited_transcript` (SpeechToTextChunkResponseModelEditedTranscript, optional, nullable) — वैकल्पिक ट्रांसक्रिप्ट एडिट का नतीजा: संपादित टेक्स्ट या, अगर इसे बनाया नहीं जा सका, तो एक त्रुटि। कोई एडिट अनुरोध न होने पर यह मौजूद नहीं होता। सफल होने पर, `text` और `edited_text` दोनों में संपादित ट्रांसक्रिप्ट होता है; क्या बदला है यह देखने के लिए उनकी तुलना टॉप-लेवल `text` से करें।

### MultichannelSpeechToTextResponseModel

मल्टीचैनल स्पीच-टू-टेक्स्ट ट्रांसक्रिप्शन के लिए रिस्पॉन्स मॉडल।

- `transcripts` (list of SpeechToTextChunkResponseModel, required) — हर ऑडियो चैनल के लिए एक ट्रांसक्रिप्ट की सूची। हर ट्रांसक्रिप्ट में उसके संबंधित चैनल का टेक्स्ट और शब्द-स्तरीय विवरण होता है।
- `transcription_id` (string, optional, nullable) — रिस्पॉन्स की ट्रांसक्रिप्शन ID।
- `audio_duration_secs` (double, optional, nullable) — सभी चैनलों में ट्रांसक्राइब किए गए ऑडियो की अवधि सेकंड में।

### SpeechToTextWebhookResponseModel

- `message` (string, required) — webhook रिस्पॉन्स का संदेश।
- `request_id` (string, required) — वेबहुक रिस्पॉन्स की रिक्वेस्ट ID।
- `transcription_id` (string, optional, nullable) — वेबहुक रिस्पॉन्स की ट्रांसक्रिप्शन ID।

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### SpeechToTextWordResponseModel

टाइमिंग जानकारी के साथ ट्रांसक्रिप्शन का शब्द-स्तरीय विवरण।

- `text` (string, required) — वह शब्द या साउंड जिसे ट्रांसक्राइब किया गया।
- `type` (enum, required) — शब्द या साउंड का टाइप। 'audio_event' का इस्तेमाल हंसी या कदमों की आवाज़ जैसे गैर-शब्द साउंड के लिए होता है।
  - Allowed values: `word`, `spacing`, `audio_event`
- `logprob` (double, required) — वह लॉग प्रायिकता जिसके साथ इस शब्द का अनुमान लगाया गया था। Logprobs की रेंज [-infinity, 0] है; ज़्यादा logprobs मॉडल के अपने अनुमानों पर ज़्यादा भरोसे को दर्शाते हैं।
- `start` (double, optional, nullable) — शब्द या साउंड का शुरुआती समय, सेकंड में।
- `end` (double, optional, nullable) — शब्द या साउंड का समाप्ति समय सेकंड में।
- `speaker_id` (string, optional, nullable) — इस शब्द के स्पीकर का विशिष्ट पहचानकर्ता।
- `characters` (list of SpeechToTextCharacterResponseModel, optional, nullable) — शब्द बनाने वाले कैरेक्टर्स और उनकी टाइमिंग जानकारी।
- `channel_index` (integer, optional, nullable) — वह चैनल जिस पर यह शब्द बोला गया था (मल्टीचैनल ऑडियो के लिए)। सिंगल-चैनल ट्रांसक्रिप्शन के लिए Null।

### AdditionalFormatResponseModel

- `requested_format` (string, required) — अनुरोधित फ़ॉर्मैट।
- `file_extension` (string, required) — अतिरिक्त फ़ॉर्मैट का फ़ाइल एक्सटेंशन।
- `content_type` (string, required) — अतिरिक्त फ़ॉर्मैट का कंटेंट टाइप।
- `is_base64_encoded` (boolean, required) — क्या कंटेंट base64 encoded है।
- `content` (string, required) — अतिरिक्त फ़ॉर्मैट का कंटेंट।

### DetectedEntity

An entity detected within transcribed text.

- `text` (string, required) — The text that was identified as an entity.
- `entity_type` (string, required) — The type of entity detected (e.g., 'credit_card', 'email_address', 'person_name').
- `start_char` (integer, required) — Start character position in the transcript text.
- `end_char` (integer, required) — End character position in the transcript text.

### SpeechToTextChunkResponseModelEditedTranscript

वैकल्पिक ट्रांसक्रिप्ट एडिट का नतीजा: संपादित टेक्स्ट या, अगर इसे बनाया नहीं जा सका, तो एक त्रुटि। कोई एडिट अनुरोध न होने पर यह मौजूद नहीं होता। सफल होने पर, `text` और `edited_text` दोनों में संपादित ट्रांसक्रिप्ट होता है; क्या बदला है यह देखने के लिए उनकी तुलना टॉप-लेवल `text` से करें।

- `kind`: `error` (TranscriptEditError)
  - `error_type` ("edit_failed", required) — edit_failed: एडिट नहीं बनाया जा सका।
  - `message` (string, required) — विफलता का यूज़र के लिए संक्षिप्त विवरण।
- `kind`: `transcript` (EditedTranscript)
  - `edited_text` (string, required) — The edited transcript text. If no edits were made it will be identical to the `text` field.
  - `text` (string, required) — The committed transcript text the edit instruction was applied to.
  - `message_type` (string, optional, default: edited_transcript)

### ValidationErrorLocItems

### SpeechToTextCharacterResponseModel

- `text` (string, required) — ट्रांसक्राइब किया गया कैरेक्टर।
- `start` (double, optional, nullable) — किरदार का शुरुआती समय, सेकंड में।
- `end` (double, optional, nullable) — कैरेक्टर का समाप्ति समय सेकंड में।

## Examples

### Example_0

**Request**

```json
{
  "file": "<file: <file1>>",
  "model_id": "scribe_v2"
}
```

**Response**

```json
{
  "language_code": "en",
  "language_probability": 0.98,
  "text": "Hello world!",
  "words": [
    {
      "end": 0.5,
      "logprob": -0.124,
      "speaker_id": "speaker_1",
      "start": 0,
      "text": "Hello",
      "type": "word"
    }
  ]
}
```

**SDK Code**

```python Example_0
import requests

url = "https://api.elevenlabs.io/v1/speech-to-text"

querystring = {"enable_logging":"true","token":"token"}

files = { "file": "open('<file1>', 'rb')" }
payload = {
    "additional_formats": ,
    "cloud_storage_url": ,
    "detect_speaker_roles": ,
    "diarization_threshold": ,
    "diarize": ,
    "entity_detection": ,
    "entity_redaction": ,
    "entity_redaction_mode": ,
    "file_format": ,
    "keyterms": ,
    "language_code": ,
    "model_id": "scribe_v2",
    "multichannel_output_style": ,
    "no_verbatim": ,
    "num_speakers": ,
    "seed": ,
    "source_url": ,
    "tag_audio_events": ,
    "temperature": ,
    "timestamps_granularity": ,
    "transcript_edit": ,
    "use_multi_channel": ,
    "use_speaker_library": ,
    "webhook": ,
    "webhook_id": ,
    "webhook_metadata": 
}
headers = {"xi-api-key": "xi-api-key"}

response = requests.post(url, data=payload, files=files, headers=headers, params=querystring)

print(response.json())
```

```javascript Example_0
const url = 'https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token';
const form = new FormData();
form.append('additional_formats', '');
form.append('cloud_storage_url', '');
form.append('detect_speaker_roles', '');
form.append('diarization_threshold', '');
form.append('diarize', '');
form.append('entity_detection', '');
form.append('entity_redaction', '');
form.append('entity_redaction_mode', '');
form.append('file', '<file1>');
form.append('file_format', '');
form.append('keyterms', '');
form.append('language_code', '');
form.append('model_id', 'scribe_v2');
form.append('multichannel_output_style', '');
form.append('no_verbatim', '');
form.append('num_speakers', '');
form.append('seed', '');
form.append('source_url', '');
form.append('tag_audio_events', '');
form.append('temperature', '');
form.append('timestamps_granularity', '');
form.append('transcript_edit', '');
form.append('use_multi_channel', '');
form.append('use_speaker_library', '');
form.append('webhook', '');
form.append('webhook_id', '');
form.append('webhook_metadata', '');

const options = {method: 'POST', headers: {'xi-api-key': 'xi-api-key'}};

options.body = form;

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Example_0
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_formats\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cloud_storage_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"detect_speaker_roles\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarization_threshold\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarize\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction_mode\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_format\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"keyterms\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_code\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\nscribe_v2\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"multichannel_output_style\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_verbatim\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_speakers\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tag_audio_events\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"temperature\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timestamps_granularity\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcript_edit\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_multi_channel\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_speaker_library\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_metadata\"\r\n\r\n\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("xi-api-key", "xi-api-key")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Example_0
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["xi-api-key"] = 'xi-api-key'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_formats\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cloud_storage_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"detect_speaker_roles\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarization_threshold\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarize\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction_mode\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_format\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"keyterms\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_code\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\nscribe_v2\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"multichannel_output_style\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_verbatim\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_speakers\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tag_audio_events\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"temperature\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timestamps_granularity\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcript_edit\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_multi_channel\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_speaker_library\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_metadata\"\r\n\r\n\r\n-----011000010111000001101001--\r\n"

response = http.request(request)
puts response.read_body
```

```java Example_0
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token")
  .header("xi-api-key", "xi-api-key")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_formats\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cloud_storage_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"detect_speaker_roles\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarization_threshold\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarize\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction_mode\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_format\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"keyterms\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_code\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\nscribe_v2\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"multichannel_output_style\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_verbatim\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_speakers\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tag_audio_events\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"temperature\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timestamps_granularity\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcript_edit\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_multi_channel\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_speaker_library\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_metadata\"\r\n\r\n\r\n-----011000010111000001101001--\r\n")
  .asString();
```

```php Example_0
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token', [
  'multipart' => [
    [
        'name' => 'file',
        'filename' => '<file1>',
        'contents' => null
    ],
    [
        'name' => 'model_id',
        'contents' => 'scribe_v2'
    ]
  ]
  'headers' => [
    'xi-api-key' => 'xi-api-key',
  ],
]);

echo $response->getBody();
```

```csharp Example_0
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token");
var request = new RestRequest(Method.POST);
request.AddHeader("xi-api-key", "xi-api-key");
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_formats\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cloud_storage_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"detect_speaker_roles\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarization_threshold\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarize\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction_mode\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_format\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"keyterms\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_code\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\nscribe_v2\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"multichannel_output_style\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_verbatim\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_speakers\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tag_audio_events\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"temperature\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timestamps_granularity\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcript_edit\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_multi_channel\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_speaker_library\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_metadata\"\r\n\r\n\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Example_0
import Foundation

let headers = ["xi-api-key": "xi-api-key"]
let parameters = [
  [
    "name": "additional_formats",
    "value": 
  ],
  [
    "name": "cloud_storage_url",
    "value": 
  ],
  [
    "name": "detect_speaker_roles",
    "value": 
  ],
  [
    "name": "diarization_threshold",
    "value": 
  ],
  [
    "name": "diarize",
    "value": 
  ],
  [
    "name": "entity_detection",
    "value": 
  ],
  [
    "name": "entity_redaction",
    "value": 
  ],
  [
    "name": "entity_redaction_mode",
    "value": 
  ],
  [
    "name": "file",
    "fileName": "<file1>"
  ],
  [
    "name": "file_format",
    "value": 
  ],
  [
    "name": "keyterms",
    "value": 
  ],
  [
    "name": "language_code",
    "value": 
  ],
  [
    "name": "model_id",
    "value": "scribe_v2"
  ],
  [
    "name": "multichannel_output_style",
    "value": 
  ],
  [
    "name": "no_verbatim",
    "value": 
  ],
  [
    "name": "num_speakers",
    "value": 
  ],
  [
    "name": "seed",
    "value": 
  ],
  [
    "name": "source_url",
    "value": 
  ],
  [
    "name": "tag_audio_events",
    "value": 
  ],
  [
    "name": "temperature",
    "value": 
  ],
  [
    "name": "timestamps_granularity",
    "value": 
  ],
  [
    "name": "transcript_edit",
    "value": 
  ],
  [
    "name": "use_multi_channel",
    "value": 
  ],
  [
    "name": "use_speaker_library",
    "value": 
  ],
  [
    "name": "webhook",
    "value": 
  ],
  [
    "name": "webhook_id",
    "value": 
  ],
  [
    "name": "webhook_metadata",
    "value": 
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Example_1

**Request**

```json
{
  "file": "<file: <file1>>",
  "model_id": "scribe_v2"
}
```

**Response**

```json
{
  "transcripts": [
    {
      "language_code": "en",
      "language_probability": 0.98,
      "text": "Hello from channel one.",
      "words": [
        {
          "channel_index": 0,
          "end": 0.5,
          "logprob": -0.124,
          "speaker_id": "speaker_0",
          "start": 0,
          "text": "Hello",
          "type": "word"
        }
      ]
    },
    {
      "language_code": "en",
      "language_probability": 0.97,
      "text": "Greetings from channel two.",
      "words": [
        {
          "channel_index": 1,
          "end": 0.7,
          "logprob": -0.156,
          "speaker_id": "speaker_1",
          "start": 0.1,
          "text": "Greetings",
          "type": "word"
        }
      ]
    }
  ]
}
```

**SDK Code**

```python Example_1
import requests

url = "https://api.elevenlabs.io/v1/speech-to-text"

querystring = {"enable_logging":"true","token":"token"}

files = { "file": "open('<file1>', 'rb')" }
payload = {
    "additional_formats": ,
    "cloud_storage_url": ,
    "detect_speaker_roles": ,
    "diarization_threshold": ,
    "diarize": ,
    "entity_detection": ,
    "entity_redaction": ,
    "entity_redaction_mode": ,
    "file_format": ,
    "keyterms": ,
    "language_code": ,
    "model_id": "scribe_v2",
    "multichannel_output_style": ,
    "no_verbatim": ,
    "num_speakers": ,
    "seed": ,
    "source_url": ,
    "tag_audio_events": ,
    "temperature": ,
    "timestamps_granularity": ,
    "transcript_edit": ,
    "use_multi_channel": ,
    "use_speaker_library": ,
    "webhook": ,
    "webhook_id": ,
    "webhook_metadata": 
}
headers = {"xi-api-key": "xi-api-key"}

response = requests.post(url, data=payload, files=files, headers=headers, params=querystring)

print(response.json())
```

```javascript Example_1
const url = 'https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token';
const form = new FormData();
form.append('additional_formats', '');
form.append('cloud_storage_url', '');
form.append('detect_speaker_roles', '');
form.append('diarization_threshold', '');
form.append('diarize', '');
form.append('entity_detection', '');
form.append('entity_redaction', '');
form.append('entity_redaction_mode', '');
form.append('file', '<file1>');
form.append('file_format', '');
form.append('keyterms', '');
form.append('language_code', '');
form.append('model_id', 'scribe_v2');
form.append('multichannel_output_style', '');
form.append('no_verbatim', '');
form.append('num_speakers', '');
form.append('seed', '');
form.append('source_url', '');
form.append('tag_audio_events', '');
form.append('temperature', '');
form.append('timestamps_granularity', '');
form.append('transcript_edit', '');
form.append('use_multi_channel', '');
form.append('use_speaker_library', '');
form.append('webhook', '');
form.append('webhook_id', '');
form.append('webhook_metadata', '');

const options = {method: 'POST', headers: {'xi-api-key': 'xi-api-key'}};

options.body = form;

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Example_1
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_formats\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cloud_storage_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"detect_speaker_roles\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarization_threshold\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarize\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction_mode\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_format\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"keyterms\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_code\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\nscribe_v2\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"multichannel_output_style\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_verbatim\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_speakers\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tag_audio_events\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"temperature\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timestamps_granularity\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcript_edit\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_multi_channel\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_speaker_library\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_metadata\"\r\n\r\n\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("xi-api-key", "xi-api-key")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Example_1
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["xi-api-key"] = 'xi-api-key'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_formats\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cloud_storage_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"detect_speaker_roles\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarization_threshold\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarize\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction_mode\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_format\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"keyterms\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_code\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\nscribe_v2\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"multichannel_output_style\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_verbatim\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_speakers\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tag_audio_events\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"temperature\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timestamps_granularity\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcript_edit\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_multi_channel\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_speaker_library\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_metadata\"\r\n\r\n\r\n-----011000010111000001101001--\r\n"

response = http.request(request)
puts response.read_body
```

```java Example_1
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token")
  .header("xi-api-key", "xi-api-key")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_formats\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cloud_storage_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"detect_speaker_roles\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarization_threshold\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarize\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction_mode\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_format\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"keyterms\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_code\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\nscribe_v2\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"multichannel_output_style\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_verbatim\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_speakers\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tag_audio_events\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"temperature\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timestamps_granularity\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcript_edit\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_multi_channel\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_speaker_library\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_metadata\"\r\n\r\n\r\n-----011000010111000001101001--\r\n")
  .asString();
```

```php Example_1
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token', [
  'multipart' => [
    [
        'name' => 'file',
        'filename' => '<file1>',
        'contents' => null
    ],
    [
        'name' => 'model_id',
        'contents' => 'scribe_v2'
    ]
  ]
  'headers' => [
    'xi-api-key' => 'xi-api-key',
  ],
]);

echo $response->getBody();
```

```csharp Example_1
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token");
var request = new RestRequest(Method.POST);
request.AddHeader("xi-api-key", "xi-api-key");
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_formats\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cloud_storage_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"detect_speaker_roles\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarization_threshold\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"diarize\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_detection\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"entity_redaction_mode\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"<file1>\"\r\nContent-Type: application/octet-stream\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file_format\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"keyterms\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"language_code\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_id\"\r\n\r\nscribe_v2\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"multichannel_output_style\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"no_verbatim\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"num_speakers\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"seed\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"source_url\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"tag_audio_events\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"temperature\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"timestamps_granularity\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"transcript_edit\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_multi_channel\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"use_speaker_library\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_id\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"webhook_metadata\"\r\n\r\n\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Example_1
import Foundation

let headers = ["xi-api-key": "xi-api-key"]
let parameters = [
  [
    "name": "additional_formats",
    "value": 
  ],
  [
    "name": "cloud_storage_url",
    "value": 
  ],
  [
    "name": "detect_speaker_roles",
    "value": 
  ],
  [
    "name": "diarization_threshold",
    "value": 
  ],
  [
    "name": "diarize",
    "value": 
  ],
  [
    "name": "entity_detection",
    "value": 
  ],
  [
    "name": "entity_redaction",
    "value": 
  ],
  [
    "name": "entity_redaction_mode",
    "value": 
  ],
  [
    "name": "file",
    "fileName": "<file1>"
  ],
  [
    "name": "file_format",
    "value": 
  ],
  [
    "name": "keyterms",
    "value": 
  ],
  [
    "name": "language_code",
    "value": 
  ],
  [
    "name": "model_id",
    "value": "scribe_v2"
  ],
  [
    "name": "multichannel_output_style",
    "value": 
  ],
  [
    "name": "no_verbatim",
    "value": 
  ],
  [
    "name": "num_speakers",
    "value": 
  ],
  [
    "name": "seed",
    "value": 
  ],
  [
    "name": "source_url",
    "value": 
  ],
  [
    "name": "tag_audio_events",
    "value": 
  ],
  [
    "name": "temperature",
    "value": 
  ],
  [
    "name": "timestamps_granularity",
    "value": 
  ],
  [
    "name": "transcript_edit",
    "value": 
  ],
  [
    "name": "use_multi_channel",
    "value": 
  ],
  [
    "name": "use_speaker_library",
    "value": 
  ],
  [
    "name": "webhook",
    "value": 
  ],
  [
    "name": "webhook_id",
    "value": 
  ],
  [
    "name": "webhook_metadata",
    "value": 
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&token=token")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```