{
  "aboutHtml": "<h4>A recorded conversation as text</h4><p>MiniMax ASR 1.0 recognizes speech in an audio file. The manufacturer describes uses for meetings, interviews, podcasts, video audio tracks, content monitoring and conversation analysis. The model is tuned for conversational speech, noise and professional vocabulary, with an emphasis on reducing fabricated passages. In this Ailoot card, input is audio and the result is text.</p><h4>Language and multiple participants</h4><p>Russian and Ukrainian, English, French, German, Spanish, Italian, Portuguese and Polish are supported, as well as Chinese, Cantonese, Japanese, Korean, Thai, Vietnamese, Indonesian, Malay, Filipino, Arabic and Turkish. If no language is specified, the model automatically identifies the main one; the manufacturer separately describes mixed Chinese and English speech.</p><p>In the detailed result representation, the model can identify speakers and link turns to their times. It returns the total participant count and segments with a speaker label, start, end and text. This helps identify who said a particular line and when, without mixing different participants&#39; turns.</p><h4>Result representation</h4><p>The manufacturer provides ordinary JSON with text and duration, detailed <code>verbose_json</code>, and SRT and WebVTT subtitles. Timestamps use sentence or segment level by default. Word-level timestamps are described for English and character-level timestamps for Chinese; these belong to formats with alignment.</p><p>Incremental text output is possible, but cannot be combined with speaker diarization or subtitle formats. This mode returns newly recognized text passages as the already-supplied file is processed. It is a stream of results, not continuous transmission of microphone audio.</p><h4>Recording requirements</h4><p>Declared input formats are WAV, AIFF, FLAC, ALAC in an M4A container, MP3, AAC, Opus and Ogg. A file must contain no more than <strong>500 seconds</strong> of audio and occupy no more than <strong>50 MB</strong>. Exceeding the duration is rejected rather than silently truncated. Raw PCM without a container is not supported.</p><p>For recording preparation, the manufacturer recommends mono 16 kHz or a compressed audio format: a high sample rate and stereo are unnecessary for recognition and increase file size. Detailed output and streaming capabilities belong to ASR 1.0; the response format available to a particular request is set through Ailoot&#39;s controls.</p>",
  "aboutText": "### A recorded conversation as text\n\nMiniMax ASR 1.0 recognizes speech in an audio file. The manufacturer describes uses for meetings, interviews, podcasts, video audio tracks, content monitoring and conversation analysis. The model is tuned for conversational speech, noise and professional vocabulary, with an emphasis on reducing fabricated passages. In this Ailoot card, input is audio and the result is text.\n\n### Language and multiple participants\n\nRussian and Ukrainian, English, French, German, Spanish, Italian, Portuguese and Polish are supported, as well as Chinese, Cantonese, Japanese, Korean, Thai, Vietnamese, Indonesian, Malay, Filipino, Arabic and Turkish. If no language is specified, the model automatically identifies the main one; the manufacturer separately describes mixed Chinese and English speech.\n\nIn the detailed result representation, the model can identify speakers and link turns to their times. It returns the total participant count and segments with a speaker label, start, end and text. This helps identify who said a particular line and when, without mixing different participants' turns.\n\n### Result representation\n\nThe manufacturer provides ordinary JSON with text and duration, detailed `verbose_json`, and SRT and WebVTT subtitles. Timestamps use sentence or segment level by default. Word-level timestamps are described for English and character-level timestamps for Chinese; these belong to formats with alignment.\n\nIncremental text output is possible, but cannot be combined with speaker diarization or subtitle formats. This mode returns newly recognized text passages as the already-supplied file is processed. It is a stream of results, not continuous transmission of microphone audio.\n\n### Recording requirements\n\nDeclared input formats are WAV, AIFF, FLAC, ALAC in an M4A container, MP3, AAC, Opus and Ogg. A file must contain no more than **500 seconds** of audio and occupy no more than **50 MB**. Exceeding the duration is rejected rather than silently truncated. Raw PCM without a container is not supported.\n\nFor recording preparation, the manufacturer recommends mono 16 kHz or a compressed audio format: a high sample rate and stereo are unnecessary for recognition and increase file size. Detailed output and streaming capabilities belong to ASR 1.0; the response format available to a particular request is set through Ailoot's controls.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "40c660bde2e48cfbc48405c96b46088ce1acd232000eda7dc0823adf3898935d",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "en",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">MM</span><h2 id=\"sheet-title\">asr-1.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Close\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>asr-1.0</code><button type=\"button\" id=\"copy-id\">Copy ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Model card sections\"><button type=\"button\" data-card-jump=\"overview\">Overview</button><button type=\"button\" data-card-jump=\"methods\">Inputs &amp; methods</button><button type=\"button\" data-card-jump=\"pricing\">Pricing</button><button type=\"button\" data-card-jump=\"examples\">Examples</button><button type=\"button\" data-card-jump=\"results\">Results</button><button type=\"button\" data-card-jump=\"aliases\">Aliases</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API methods\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|transcriptions|/v1/audio/transcriptions|asr-1.0\">Recognition</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Overview</h3><p class=\"mdesc-full\">MiniMax ASR 1.0 converts audio to text and supports Russian, speaker-separated turns and timestamps.</p><dl class=\"card-io\" data-card-io><div><dt>Accepted inputs</dt><dd>Audio</dd></div><div><dt>Results</dt><dd>Text</dd></div></dl><details class=\"card-about\"><summary>About the model</summary><p class=\"note-s\" data-model-method-boundary>This description covers the model’s capabilities. Available in Ailoot inputs, outputs and options are listed for the selected method below.</p><div class=\"mabout\" id=\"m-about\"><h4>A recorded conversation as text</h4><p>MiniMax ASR 1.0 recognizes speech in an audio file. The manufacturer describes uses for meetings, interviews, podcasts, video audio tracks, content monitoring and conversation analysis. The model is tuned for conversational speech, noise and professional vocabulary, with an emphasis on reducing fabricated passages. In this Ailoot card, input is audio and the result is text.</p><h4>Language and multiple participants</h4><p>Russian and Ukrainian, English, French, German, Spanish, Italian, Portuguese and Polish are supported, as well as Chinese, Cantonese, Japanese, Korean, Thai, Vietnamese, Indonesian, Malay, Filipino, Arabic and Turkish. If no language is specified, the model automatically identifies the main one; the manufacturer separately describes mixed Chinese and English speech.</p><p>In the detailed result representation, the model can identify speakers and link turns to their times. It returns the total participant count and segments with a speaker label, start, end and text. This helps identify who said a particular line and when, without mixing different participants&#39; turns.</p><h4>Result representation</h4><p>The manufacturer provides ordinary JSON with text and duration, detailed <code>verbose_json</code>, and SRT and WebVTT subtitles. Timestamps use sentence or segment level by default. Word-level timestamps are described for English and character-level timestamps for Chinese; these belong to formats with alignment.</p><p>Incremental text output is possible, but cannot be combined with speaker diarization or subtitle formats. This mode returns newly recognized text passages as the already-supplied file is processed. It is a stream of results, not continuous transmission of microphone audio.</p><h4>Recording requirements</h4><p>Declared input formats are WAV, AIFF, FLAC, ALAC in an M4A container, MP3, AAC, Opus and Ogg. A file must contain no more than <strong>500 seconds</strong> of audio and occupy no more than <strong>50 MB</strong>. Exceeding the duration is rejected rather than silently truncated. Raw PCM without a container is not supported.</p><p>For recording preparation, the manufacturer recommends mono 16 kHz or a compressed audio format: a high sample rate and stereo are unnecessary for recognition and increase file size. Detailed output and streaming capabilities belong to ASR 1.0; the response format available to a particular request is set through Ailoot&#39;s controls.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Available in Ailoot · inputs &amp; methods</h3><details class=\"card-method\" open><summary><b>Ailoot · Speech-to-text</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Input types</dt><dd><code>audio</code></dd></div><div><dt>Output types</dt><dd><code>text</code></dd></div><div><dt>Output format</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Field</th><th>Type</th><th>Requirement</th><th>Values &amp; limits</th><th>Default</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Field\" scope=\"row\"><span class=\"card-cell-label\">Field</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Requirement\"><span class=\"card-cell-label\">Requirement</span>Required</td><td data-cell-label=\"Values &amp; limits\"><span class=\"card-cell-label\">Values &amp; limits</span><div>asr-1.0</div></td><td data-cell-label=\"Default\" data-default=\"unspecified\"><span class=\"card-cell-label\">Default</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Field\" scope=\"row\"><span class=\"card-cell-label\">Field</span><code class=\"card-field-name\">file</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>file</code></td><td data-cell-label=\"Requirement\"><span class=\"card-cell-label\">Requirement</span>Required</td><td data-cell-label=\"Values &amp; limits\"><span class=\"card-cell-label\">Values &amp; limits</span><div>Maximum bytes: 52,428,800</div><div>File formats: wav, mp3, m4a, ogg, webm, flac</div><div>Content type: multipart/form-data</div><div>Maximum duration (exclusive), seconds: 500</div></td><td data-cell-label=\"Default\" data-default=\"unspecified\"><span class=\"card-cell-label\">Default</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Field\" scope=\"row\"><span class=\"card-cell-label\">Field</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Requirement\"><span class=\"card-cell-label\">Requirement</span>Optional</td><td data-cell-label=\"Values &amp; limits\"><span class=\"card-cell-label\">Values &amp; limits</span><div>json</div></td><td data-cell-label=\"Default\" data-default=\"unspecified\"><span class=\"card-cell-label\">Default</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Input material combinations</summary><p class=\"note-s\"><b>speech_to_text</b> · Required: actual audio file</p></details><details class=\"note-s\" data-method-contract><summary>Method parameters and lifecycle</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Contract</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>null</td></tr></tbody></table></div><p>Lifecycle: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · actual returned task_id or media library record</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Method shapes and IDs are exact; supplier capability is separate from admission.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Pricing</h3><h4>Ailoot method rates</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Speech-to-text</b><code>POST /v1/audio/transcriptions</code></header><dl><div><dt>Input</dt><dd>$0.38 <em>per hour of audio</em></dd></div></dl></section><p class=\"note-s\">Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. <a href=\"/docs/en/billing/reserve/\">How reservation and settlement work →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Example requests</h3><h4>Ailoot · Speech-to-text</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Code options\"><button class=\"cg-tab\" id=\"model-code-369-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-369-panel-0\" aria-selected=\"true\" tabindex=\"0\">Transcription example</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copy code\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-369-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-369-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set your actual MP3 recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport os\nfrom pathlib import Path\nf=Path(os.environ[&quot;AILOOT_AUDIO_FILE&quot;])\nif not f.is_file() or f.suffix.lower()!=&quot;.mp3&quot;:raise SystemExit(&quot;Choose your actual MP3 recording&quot;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; \\\n  --form-string model=asr-1.0 -F &quot;file=@$AILOOT_AUDIO_FILE&quot; \\\n  -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;result.json&quot;).read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Receive and save results</h3><h4>Ailoot · Speech-to-text</h4><p class=\"note-s\">json</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Keep all completed results</h5><p class=\"note-s\">Keep every complete returned response, file and content part.</p><p class=\"note-s\">Retain complete JSON, not only text; preserve every available segment/speaker/timestamp and actual task/asset identity.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>If the original response needs checking</h5><p class=\"note-s\">Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route.</p></div><details class=\"card-about\" data-output-fields><summary>Response fields</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Field</th><th>Type</th></tr></thead><tbody><tr><th data-cell-label=\"Field\" scope=\"row\"><span class=\"card-cell-label\">Field</span><code class=\"card-field-name\">text</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string</td></tr><tr><th data-cell-label=\"Field\" scope=\"row\"><span class=\"card-cell-label\">Field</span><code class=\"card-field-name\">segments[]</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>object</td></tr><tr><th data-cell-label=\"Field\" scope=\"row\"><span class=\"card-cell-label\">Field</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string</td></tr><tr><th data-cell-label=\"Field\" scope=\"row\"><span class=\"card-cell-label\">Field</span><code class=\"card-field-name\">asset_url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string</td></tr><tr><th data-cell-label=\"Field\" scope=\"row\"><span class=\"card-cell-label\">Field</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Errors and next steps</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Response</th><th>Condition</th><th>Next step</th></tr></thead><tbody><tr><th data-cell-label=\"Response\" scope=\"row\"><span class=\"card-cell-label\">Response</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Invalid required fields, material representation or parameter value</td><td data-cell-label=\"Next step\"><span class=\"card-cell-label\">Next step</span>Correct the indicated fields before a new creation request.</td></tr><tr><th data-cell-label=\"Response\" scope=\"row\"><span class=\"card-cell-label\">Response</span><code>server_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>The returned response says the operation or result requires a check</td><td data-cell-label=\"Next step\"><span class=\"card-cell-label\">Next step</span>Keep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliases</h3><h4>Model aliases</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=asr-1.0&amp;route=Core&amp;caller=asr-1.0&amp;fmt=transcriptions\"><code>asr-1.0</code></a></span></p><h4>Method path aliases</h4><p class=\"note-s\">Use the method paths shown above.</p><h4>Related caller IDs</h4><p class=\"note-s\"><a href=\"#m=asr-1.0&amp;route=Core&amp;caller=asr-1.0&amp;fmt=transcriptions\"><code>asr-1.0</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "asr-1.0",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "asr-1.0",
        "route_label": "Core"
      },
      "method_key": "Core|transcriptions|/v1/audio/transcriptions|asr-1.0",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Retain complete JSON, not only text; preserve every available segment/speaker/timestamp and actual task/asset identity.",
            "errors": [
              {
                "code": null,
                "condition": "Invalid required fields, material representation or parameter value",
                "http_status": 400,
                "recovery": "Correct the indicated fields before a new creation request.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "The returned response says the operation or result requires a check",
                "http_status": null,
                "recovery": "Keep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request.",
                "type": "server_error"
              }
            ],
            "hints": [
              "The adapter uses its own JSON/word-timestamp/non-stream wire settings; no additional caller parameter is introduced."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
            },
            "material_combinations": [
              {
                "content_type": "multipart/form-data",
                "mode": "speech_to_text",
                "required": [
                  "actual audio file"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "Retain complete JSON, not only text; preserve every available segment/speaker/timestamp and actual task/asset identity.",
              "family": "transcription",
              "fields": [
                {
                  "description": null,
                  "name": "text",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "segments[]",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "asset_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "asr-1.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "content_type": "multipart/form-data",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "file_formats": [
                  "wav",
                  "mp3",
                  "m4a",
                  "ogg",
                  "webm",
                  "flac"
                ],
                "maximum_bytes": 52428800,
                "maximum_seconds_exclusive": 500,
                "name": "file",
                "required": true,
                "type": "file"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Method shapes and IDs are exact; supplier capability is separate from admission."
          ],
          "input": {
            "material_types": [
              "audio"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "actual returned task_id or media library record",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "operation_modes": [
            "audio_transcriptions"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual MP3 recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport os\nfrom pathlib import Path\nf=Path(os.environ[\"AILOOT_AUDIO_FILE\"])\nif not f.is_file() or f.suffix.lower()!=\".mp3\":raise SystemExit(\"Choose your actual MP3 recording\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --form-string model=asr-1.0 -F \"file=@$AILOOT_AUDIO_FILE\" \\\n  -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Transcribe your actual recording",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Speech-to-text",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.38,
                "amount_unit": "usd_per_display_unit",
                "key": "stt_hour",
                "label": "per hour of audio",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "asr-1.0",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "stt_hour",
        "units": [
          {
            "key": "stt_hour",
            "label": "per hour of audio",
            "side": "in",
            "usd": 0.38
          }
        ]
      }
    }
  ],
  "model_id": "asr-1.0",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "79c1f9c30c785f77c45b22c276ca462dea07ce488c5bb0e5d26275edce5a34e0",
    "input_html_sha256": "4482f6cb1455262f34a54be57d4e79872257f3d9b35c701884b5ca7291894653",
    "private_audit_sha256": "d6f65e2dd65a20aac0b0febd12df0aace0948b01508445f5554d0584e2abb22b",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/en/asr-1-0/",
    "description": "MiniMax ASR 1.0 converts audio to text and supports Russian, speaker-separated turns and timestamps.",
    "locale": "en",
    "md_url": "https://ailoot.ai/models/en/asr-1-0/index.md",
    "title": "asr-1.0 — Ailoot",
    "url": "https://ailoot.ai/models/en/asr-1-0/"
  },
  "rawModel": {
    "about": "### A recorded conversation as text\n\nMiniMax ASR 1.0 recognizes speech in an audio file. The manufacturer describes uses for meetings, interviews, podcasts, video audio tracks, content monitoring and conversation analysis. The model is tuned for conversational speech, noise and professional vocabulary, with an emphasis on reducing fabricated passages. In this Ailoot card, input is audio and the result is text.\n\n### Language and multiple participants\n\nRussian and Ukrainian, English, French, German, Spanish, Italian, Portuguese and Polish are supported, as well as Chinese, Cantonese, Japanese, Korean, Thai, Vietnamese, Indonesian, Malay, Filipino, Arabic and Turkish. If no language is specified, the model automatically identifies the main one; the manufacturer separately describes mixed Chinese and English speech.\n\nIn the detailed result representation, the model can identify speakers and link turns to their times. It returns the total participant count and segments with a speaker label, start, end and text. This helps identify who said a particular line and when, without mixing different participants' turns.\n\n### Result representation\n\nThe manufacturer provides ordinary JSON with text and duration, detailed `verbose_json`, and SRT and WebVTT subtitles. Timestamps use sentence or segment level by default. Word-level timestamps are described for English and character-level timestamps for Chinese; these belong to formats with alignment.\n\nIncremental text output is possible, but cannot be combined with speaker diarization or subtitle formats. This mode returns newly recognized text passages as the already-supplied file is processed. It is a stream of results, not continuous transmission of microphone audio.\n\n### Recording requirements\n\nDeclared input formats are WAV, AIFF, FLAC, ALAC in an M4A container, MP3, AAC, Opus and Ogg. A file must contain no more than **500 seconds** of audio and occupy no more than **50 MB**. Exceeding the duration is rejected rather than silently truncated. Raw PCM without a container is not supported.\n\nFor recording preparation, the manufacturer recommends mono 16 kHz or a compressed audio format: a high sample rate and stereo are unnecessary for recognition and increase file size. Detailed output and streaming capabilities belong to ASR 1.0; the response format available to a particular request is set through Ailoot's controls.",
    "alias_of": null,
    "aliases": [],
    "author": "MiniMax",
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "asr-1.0",
    "input": [
      "audio"
    ],
    "kind": "transcription",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Retain complete JSON, not only text; preserve every available segment/speaker/timestamp and actual task/asset identity.",
            "errors": [
              {
                "code": null,
                "condition": "Invalid required fields, material representation or parameter value",
                "http_status": 400,
                "recovery": "Correct the indicated fields before a new creation request.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "The returned response says the operation or result requires a check",
                "http_status": null,
                "recovery": "Keep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request.",
                "type": "server_error"
              }
            ],
            "hints": [
              "The adapter uses its own JSON/word-timestamp/non-stream wire settings; no additional caller parameter is introduced."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
            },
            "material_combinations": [
              {
                "content_type": "multipart/form-data",
                "mode": "speech_to_text",
                "required": [
                  "actual audio file"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "Retain complete JSON, not only text; preserve every available segment/speaker/timestamp and actual task/asset identity.",
              "family": "transcription",
              "fields": [
                {
                  "description": null,
                  "name": "text",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "segments[]",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "asset_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "asr-1.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "content_type": "multipart/form-data",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "file_formats": [
                  "wav",
                  "mp3",
                  "m4a",
                  "ogg",
                  "webm",
                  "flac"
                ],
                "maximum_bytes": 52428800,
                "maximum_seconds_exclusive": 500,
                "name": "file",
                "required": true,
                "type": "file"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Method shapes and IDs are exact; supplier capability is separate from admission."
          ],
          "input": {
            "material_types": [
              "audio"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "actual returned task_id or media library record",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "operation_modes": [
            "audio_transcriptions"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual MP3 recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport os\nfrom pathlib import Path\nf=Path(os.environ[\"AILOOT_AUDIO_FILE\"])\nif not f.is_file() or f.suffix.lower()!=\".mp3\":raise SystemExit(\"Choose your actual MP3 recording\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --form-string model=asr-1.0 -F \"file=@$AILOOT_AUDIO_FILE\" \\\n  -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Transcribe your actual recording",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Speech-to-text",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.38,
                "amount_unit": "usd_per_display_unit",
                "key": "stt_hour",
                "label": "per hour of audio",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "asr-1.0",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "stt_hour",
        "units": [
          {
            "key": "stt_hour",
            "label": "per hour of audio",
            "side": "in",
            "usd": 0.38
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "asr-1.0",
        "request_model_id": "asr-1.0",
        "route_label": "Core"
      }
    ],
    "name": "asr-1.0",
    "price": {
      "in": 0.38,
      "in_label": "per hour of audio",
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "MiniMax ASR 1.0 converts audio to text and supports Russian, speaker-separated turns and timestamps."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "MiniMax ASR 1.0 converts audio to text and supports Russian, speaker-separated turns and timestamps.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "3b74c056c75980d831afa850bc12375c930f7ec7181a8238a2fbc6b086e903e0",
    "renderer_sha256": "fed50305bd3bcc4980ac14df23640efb8c1bc1e819f9d53643d6f43e8974d3fe"
  },
  "sourceRevision": "7b9ec01e04f531c12a6007ff4845dbc8ccb37d842f764af450e496044e32e1d5"
}
