{
  "aboutHtml": "<p>GPT-4o Transcribe Diarize는 화자 분리가 내장된 OpenAI의 자동 음성 인식 모델입니다. 전사한 오디오 구간을 대화의 서로 다른 화자와 연결합니다. 유용한 결과는 단어가 연속된 덩어리가 아니라 화자와 시간별로 정리된 전사입니다. 회의, 인터뷰, 여러 사람의 토론처럼 화자 레이블이 필요한 녹음된 발화를 위한 모델입니다.</p><h4>완료된 녹음 준비하기</h4><p>전사할 녹음을 제공하세요. 문서화된 파일 작업 흐름은 MP3, MP4, MPEG, MPGA, M4A, WAV, WebM을 입력받으며 파일 크기는 25 MB로 제한됩니다. 화자의 발언 차례, 이름, 불분명한 구절을 실제 오디오와 대조할 수 있도록 원본 녹음을 보관하세요.</p><p>회의에는 발언 차례를 구분하는 데 도움이 되는 짧은 쉼을 잘라내지 말고 대화의 순서를 유지하세요. 인터뷰에는 작업에서 질문과 응답의 관계가 필요하다면 둘을 함께 유지합니다. 오디오 준비는 화자 레이블이 있는 결과에 중요한 정보를 없애지 않으면서 발화를 들을 수 있게 해야 합니다.</p><p>이는 파일 전사 작업 흐름입니다. 완료된 녹음을 처리하는 일과 아직 들어오는 오디오 스트림을 인식하는 일은 서로 다른 작업이며, 이 모델의 화자 레이블 지정은 Realtime 전사 세션에서 지원되지 않습니다.</p><h4>화자 레이블이 있는 전사 요청하기</h4><p><code>diarized_json</code> 결과 형식은 화자 식별 레이블과 시작·종료 시간이 포함된 구간을 반환합니다. 각 구간에는 전사된 텍스트도 포함됩니다. 단어를 녹음의 해당 부분과 연결할 수 있도록 이 필드들을 함께 유지하세요.</p><p>유용한 회의 전사에는 구간 순서를 유지하고 각 화자의 말을 시간과 함께 표시합니다. 이후 작업에서 이 전사로 회의록이나 실행 항목을 작성할 수 있지만, 화자 분리 자체가 회의의 합의 내용을 결정하거나 검증된 요약을 생성하는 것은 아닙니다.</p><p>화자 레이블은 모델이 발화를 묶은 방식을 나타냅니다. 사람들이 서로 말을 끊거나 짧게 말하거나 발화가 겹치는 전환 지점을 확인하세요. 구조가 잘 잡힌 결과는 탐색과 검토에 도움이 되지만, 특정 화자에게 귀속한 내용은 여전히 원본 오디오를 들어 확인해야 할 수 있습니다.</p><h4>알려진 화자의 참조 음성</h4><p>문서화된 작업 흐름은 이름을 지정한 화자 참조 음성을 최대 네 개 입력받을 수 있습니다. 각 참조는 기본 업로드에서 지원하는 형식의 2–10초짜리 짧은 오디오 클립입니다. 구간을 알려진 화자와 연결할 수 있도록 이름과 참조 음성을 함께 제공합니다.</p><p>의도한 화자의 음성이 명확하게 담긴 참조를 준비하고, 전사에서 사용할 레이블과 이름을 일치시키세요. 인터뷰에서는 진행자의 참조 음성이 있으면 모든 참여자를 익명 레이블로 바꾸지 않고 화자 레이블이 있는 결과를 정리하는 데 도움이 됩니다. 참조 음성은 화자 귀속을 위한 입력이며, 일반적인 음성 복제 작업이나 개인의 신원 증명이 아닙니다.</p><p>화자에게 이름을 붙이는 일과 실제 발언을 편집하는 일을 혼동하지 마세요. 유용한 출력은 여전히 녹음의 내용과 실제 발언 순서를 보존해야 합니다.</p><h4>구간 분할과 모델 한도</h4><p>30초보다 긴 오디오에는 개발사가 구간 분할 전략을 요구합니다. 자동 분할이나 음성 활동 감지 설정을 사용할 수 있습니다. 이 요구 사항은 최대 녹음 시간이 아니며, 긴 입력을 처리용으로 나누는 방식을 설명합니다.</p><p>모델 카드에는 16,000토큰의 컨텍스트 창과 2,000토큰의 최대 출력이 명시되어 있습니다. 이는 모델 토큰 한도이며, 파일 작업 흐름의 25 MB 업로드 한도 및 분할 기준 시간과는 별개입니다. 모든 녹음에 적용되는 임의의 분 단위 시간으로 변환해서는 안 됩니다.</p><p>긴 전사를 조합하거나 살펴볼 때는 시간과 구간 식별 정보를 유지하세요. 제출 전에 녹음을 나눴다면 각 부분과 원본 오디오의 관계를 보관해, 부분 내 타임스탬프를 전체 대화의 위치와 혼동하지 않게 합니다.</p><h4>확정된 구간 스트리밍하기</h4><p>파일 전사 작업 흐름은 녹음을 처리하는 동안 텍스트를 스트리밍할 수 있습니다. 화자 레이블이 있는 스트리밍에서는 완료된 구간이 구간 이벤트를 생성합니다. 텍스트 델타에는 구간 식별자가 포함되지만 부분적인 화자 배정은 포함되지 않습니다. 화자는 구간이 확정될 때 배정됩니다.</p><p>이 차이는 화면 표시에 중요합니다. 모델이 구간을 완료하기 전에 불확실한 화자 레이블을 붙이지 말고, 임시 텍스트와 확정된 화자 발언을 서로 다른 상태로 표시하세요. 이후 편집이나 분석에 전사가 필요하다면 완료된 결과를 보관합니다.</p><h4>모델과 출력의 범위</h4><p>이 프로필은 화자 분리 모델이며, 일반 GPT-4o 전사, Mini 전사, 음성 합성, 실시간 대화 모델과 구분됩니다. 전사 프롬프트는 지원하지 않습니다. 용어 검토나 수정은 원본 오디오와 대조하는 별도의 단계로 유지하세요. 개발사 인터페이스는 녹음된 오디오를 텍스트로 전사합니다. 음성 응답을 생성하거나 별도의 오디오 번역 작업 흐름을 통해 녹음을 번역하지 않습니다.</p><p>내용과 화자 구조가 모두 필요한 전사에 사용하세요. 이름, 전문 용어, 숫자, 발언 차례의 경계, 화자 귀속을 녹음과 대조합니다. 오디오, 선택한 결과 형식, 참조 음성, 완료된 전사를 보관해 구체적인 구절 하나나 화자 배정을 대상으로 수정할 수 있게 하세요.</p>",
  "aboutText": "GPT-4o Transcribe Diarize는 화자 분리가 내장된 OpenAI의 자동 음성 인식 모델입니다. 전사한 오디오 구간을 대화의 서로 다른 화자와 연결합니다. 유용한 결과는 단어가 연속된 덩어리가 아니라 화자와 시간별로 정리된 전사입니다. 회의, 인터뷰, 여러 사람의 토론처럼 화자 레이블이 필요한 녹음된 발화를 위한 모델입니다.\n\n### 완료된 녹음 준비하기\n\n전사할 녹음을 제공하세요. 문서화된 파일 작업 흐름은 MP3, MP4, MPEG, MPGA, M4A, WAV, WebM을 입력받으며 파일 크기는 25 MB로 제한됩니다. 화자의 발언 차례, 이름, 불분명한 구절을 실제 오디오와 대조할 수 있도록 원본 녹음을 보관하세요.\n\n회의에는 발언 차례를 구분하는 데 도움이 되는 짧은 쉼을 잘라내지 말고 대화의 순서를 유지하세요. 인터뷰에는 작업에서 질문과 응답의 관계가 필요하다면 둘을 함께 유지합니다. 오디오 준비는 화자 레이블이 있는 결과에 중요한 정보를 없애지 않으면서 발화를 들을 수 있게 해야 합니다.\n\n이는 파일 전사 작업 흐름입니다. 완료된 녹음을 처리하는 일과 아직 들어오는 오디오 스트림을 인식하는 일은 서로 다른 작업이며, 이 모델의 화자 레이블 지정은 Realtime 전사 세션에서 지원되지 않습니다.\n\n### 화자 레이블이 있는 전사 요청하기\n\n`diarized_json` 결과 형식은 화자 식별 레이블과 시작·종료 시간이 포함된 구간을 반환합니다. 각 구간에는 전사된 텍스트도 포함됩니다. 단어를 녹음의 해당 부분과 연결할 수 있도록 이 필드들을 함께 유지하세요.\n\n유용한 회의 전사에는 구간 순서를 유지하고 각 화자의 말을 시간과 함께 표시합니다. 이후 작업에서 이 전사로 회의록이나 실행 항목을 작성할 수 있지만, 화자 분리 자체가 회의의 합의 내용을 결정하거나 검증된 요약을 생성하는 것은 아닙니다.\n\n화자 레이블은 모델이 발화를 묶은 방식을 나타냅니다. 사람들이 서로 말을 끊거나 짧게 말하거나 발화가 겹치는 전환 지점을 확인하세요. 구조가 잘 잡힌 결과는 탐색과 검토에 도움이 되지만, 특정 화자에게 귀속한 내용은 여전히 원본 오디오를 들어 확인해야 할 수 있습니다.\n\n### 알려진 화자의 참조 음성\n\n문서화된 작업 흐름은 이름을 지정한 화자 참조 음성을 최대 네 개 입력받을 수 있습니다. 각 참조는 기본 업로드에서 지원하는 형식의 2–10초짜리 짧은 오디오 클립입니다. 구간을 알려진 화자와 연결할 수 있도록 이름과 참조 음성을 함께 제공합니다.\n\n의도한 화자의 음성이 명확하게 담긴 참조를 준비하고, 전사에서 사용할 레이블과 이름을 일치시키세요. 인터뷰에서는 진행자의 참조 음성이 있으면 모든 참여자를 익명 레이블로 바꾸지 않고 화자 레이블이 있는 결과를 정리하는 데 도움이 됩니다. 참조 음성은 화자 귀속을 위한 입력이며, 일반적인 음성 복제 작업이나 개인의 신원 증명이 아닙니다.\n\n화자에게 이름을 붙이는 일과 실제 발언을 편집하는 일을 혼동하지 마세요. 유용한 출력은 여전히 녹음의 내용과 실제 발언 순서를 보존해야 합니다.\n\n### 구간 분할과 모델 한도\n\n30초보다 긴 오디오에는 개발사가 구간 분할 전략을 요구합니다. 자동 분할이나 음성 활동 감지 설정을 사용할 수 있습니다. 이 요구 사항은 최대 녹음 시간이 아니며, 긴 입력을 처리용으로 나누는 방식을 설명합니다.\n\n모델 카드에는 16,000토큰의 컨텍스트 창과 2,000토큰의 최대 출력이 명시되어 있습니다. 이는 모델 토큰 한도이며, 파일 작업 흐름의 25 MB 업로드 한도 및 분할 기준 시간과는 별개입니다. 모든 녹음에 적용되는 임의의 분 단위 시간으로 변환해서는 안 됩니다.\n\n긴 전사를 조합하거나 살펴볼 때는 시간과 구간 식별 정보를 유지하세요. 제출 전에 녹음을 나눴다면 각 부분과 원본 오디오의 관계를 보관해, 부분 내 타임스탬프를 전체 대화의 위치와 혼동하지 않게 합니다.\n\n### 확정된 구간 스트리밍하기\n\n파일 전사 작업 흐름은 녹음을 처리하는 동안 텍스트를 스트리밍할 수 있습니다. 화자 레이블이 있는 스트리밍에서는 완료된 구간이 구간 이벤트를 생성합니다. 텍스트 델타에는 구간 식별자가 포함되지만 부분적인 화자 배정은 포함되지 않습니다. 화자는 구간이 확정될 때 배정됩니다.\n\n이 차이는 화면 표시에 중요합니다. 모델이 구간을 완료하기 전에 불확실한 화자 레이블을 붙이지 말고, 임시 텍스트와 확정된 화자 발언을 서로 다른 상태로 표시하세요. 이후 편집이나 분석에 전사가 필요하다면 완료된 결과를 보관합니다.\n\n### 모델과 출력의 범위\n\n이 프로필은 화자 분리 모델이며, 일반 GPT-4o 전사, Mini 전사, 음성 합성, 실시간 대화 모델과 구분됩니다. 전사 프롬프트는 지원하지 않습니다. 용어 검토나 수정은 원본 오디오와 대조하는 별도의 단계로 유지하세요. 개발사 인터페이스는 녹음된 오디오를 텍스트로 전사합니다. 음성 응답을 생성하거나 별도의 오디오 번역 작업 흐름을 통해 녹음을 번역하지 않습니다.\n\n내용과 화자 구조가 모두 필요한 전사에 사용하세요. 이름, 전문 용어, 숫자, 발언 차례의 경계, 화자 귀속을 녹음과 대조합니다. 오디오, 선택한 결과 형식, 참조 음성, 완료된 전사를 보관해 구체적인 구절 하나나 화자 배정을 대상으로 수정할 수 있게 하세요.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "87f8e3ca22f0f1b72a19809ecc2712ef145ef882df188e1148097c2d90b1b263",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ko",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">O</span><h2 id=\"sheet-title\">gpt-4o-transcribe-diarize</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-4o-transcribe-diarize</code><button type=\"button\" id=\"copy-id\">ID 복사</button></div><nav class=\"card-jump-nav\" aria-label=\"모델 카드 섹션\"><button type=\"button\" data-card-jump=\"overview\">시작하기</button><button type=\"button\" data-card-jump=\"methods\">입력 및 메서드</button><button type=\"button\" data-card-jump=\"pricing\">요금</button><button type=\"button\" data-card-jump=\"examples\">예제</button><button type=\"button\" data-card-jump=\"results\">결과</button><button type=\"button\" data-card-jump=\"aliases\">별칭</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API 메서드\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-4o-transcribe-diarize\">음성 인식</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\">시작하기</h3><p class=\"mdesc-full\">GPT-4o Transcribe Diarize는 녹음된 발화를 화자 레이블과 시간이 표시된 구간을 갖춘 텍스트로 변환합니다. 누가 언제 말했는지 보여 주는 전사가 필요한 회의, 인터뷰, 여러 사람이 참여한 녹음에 적합하며, 알려진 화자를 위한 짧은 음성 참조를 선택적으로 제공할 수 있습니다.</p><dl class=\"card-io\" data-card-io><div><dt>허용 입력</dt><dd>오디오</dd></div><div><dt>결과</dt><dd>transcription</dd></div></dl><details class=\"card-about\"><summary>모델 소개</summary><p class=\"note-s\" data-model-method-boundary>이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.</p><div class=\"mabout\" id=\"m-about\"><p>GPT-4o Transcribe Diarize는 화자 분리가 내장된 OpenAI의 자동 음성 인식 모델입니다. 전사한 오디오 구간을 대화의 서로 다른 화자와 연결합니다. 유용한 결과는 단어가 연속된 덩어리가 아니라 화자와 시간별로 정리된 전사입니다. 회의, 인터뷰, 여러 사람의 토론처럼 화자 레이블이 필요한 녹음된 발화를 위한 모델입니다.</p><h4>완료된 녹음 준비하기</h4><p>전사할 녹음을 제공하세요. 문서화된 파일 작업 흐름은 MP3, MP4, MPEG, MPGA, M4A, WAV, WebM을 입력받으며 파일 크기는 25 MB로 제한됩니다. 화자의 발언 차례, 이름, 불분명한 구절을 실제 오디오와 대조할 수 있도록 원본 녹음을 보관하세요.</p><p>회의에는 발언 차례를 구분하는 데 도움이 되는 짧은 쉼을 잘라내지 말고 대화의 순서를 유지하세요. 인터뷰에는 작업에서 질문과 응답의 관계가 필요하다면 둘을 함께 유지합니다. 오디오 준비는 화자 레이블이 있는 결과에 중요한 정보를 없애지 않으면서 발화를 들을 수 있게 해야 합니다.</p><p>이는 파일 전사 작업 흐름입니다. 완료된 녹음을 처리하는 일과 아직 들어오는 오디오 스트림을 인식하는 일은 서로 다른 작업이며, 이 모델의 화자 레이블 지정은 Realtime 전사 세션에서 지원되지 않습니다.</p><h4>화자 레이블이 있는 전사 요청하기</h4><p><code>diarized_json</code> 결과 형식은 화자 식별 레이블과 시작·종료 시간이 포함된 구간을 반환합니다. 각 구간에는 전사된 텍스트도 포함됩니다. 단어를 녹음의 해당 부분과 연결할 수 있도록 이 필드들을 함께 유지하세요.</p><p>유용한 회의 전사에는 구간 순서를 유지하고 각 화자의 말을 시간과 함께 표시합니다. 이후 작업에서 이 전사로 회의록이나 실행 항목을 작성할 수 있지만, 화자 분리 자체가 회의의 합의 내용을 결정하거나 검증된 요약을 생성하는 것은 아닙니다.</p><p>화자 레이블은 모델이 발화를 묶은 방식을 나타냅니다. 사람들이 서로 말을 끊거나 짧게 말하거나 발화가 겹치는 전환 지점을 확인하세요. 구조가 잘 잡힌 결과는 탐색과 검토에 도움이 되지만, 특정 화자에게 귀속한 내용은 여전히 원본 오디오를 들어 확인해야 할 수 있습니다.</p><h4>알려진 화자의 참조 음성</h4><p>문서화된 작업 흐름은 이름을 지정한 화자 참조 음성을 최대 네 개 입력받을 수 있습니다. 각 참조는 기본 업로드에서 지원하는 형식의 2–10초짜리 짧은 오디오 클립입니다. 구간을 알려진 화자와 연결할 수 있도록 이름과 참조 음성을 함께 제공합니다.</p><p>의도한 화자의 음성이 명확하게 담긴 참조를 준비하고, 전사에서 사용할 레이블과 이름을 일치시키세요. 인터뷰에서는 진행자의 참조 음성이 있으면 모든 참여자를 익명 레이블로 바꾸지 않고 화자 레이블이 있는 결과를 정리하는 데 도움이 됩니다. 참조 음성은 화자 귀속을 위한 입력이며, 일반적인 음성 복제 작업이나 개인의 신원 증명이 아닙니다.</p><p>화자에게 이름을 붙이는 일과 실제 발언을 편집하는 일을 혼동하지 마세요. 유용한 출력은 여전히 녹음의 내용과 실제 발언 순서를 보존해야 합니다.</p><h4>구간 분할과 모델 한도</h4><p>30초보다 긴 오디오에는 개발사가 구간 분할 전략을 요구합니다. 자동 분할이나 음성 활동 감지 설정을 사용할 수 있습니다. 이 요구 사항은 최대 녹음 시간이 아니며, 긴 입력을 처리용으로 나누는 방식을 설명합니다.</p><p>모델 카드에는 16,000토큰의 컨텍스트 창과 2,000토큰의 최대 출력이 명시되어 있습니다. 이는 모델 토큰 한도이며, 파일 작업 흐름의 25 MB 업로드 한도 및 분할 기준 시간과는 별개입니다. 모든 녹음에 적용되는 임의의 분 단위 시간으로 변환해서는 안 됩니다.</p><p>긴 전사를 조합하거나 살펴볼 때는 시간과 구간 식별 정보를 유지하세요. 제출 전에 녹음을 나눴다면 각 부분과 원본 오디오의 관계를 보관해, 부분 내 타임스탬프를 전체 대화의 위치와 혼동하지 않게 합니다.</p><h4>확정된 구간 스트리밍하기</h4><p>파일 전사 작업 흐름은 녹음을 처리하는 동안 텍스트를 스트리밍할 수 있습니다. 화자 레이블이 있는 스트리밍에서는 완료된 구간이 구간 이벤트를 생성합니다. 텍스트 델타에는 구간 식별자가 포함되지만 부분적인 화자 배정은 포함되지 않습니다. 화자는 구간이 확정될 때 배정됩니다.</p><p>이 차이는 화면 표시에 중요합니다. 모델이 구간을 완료하기 전에 불확실한 화자 레이블을 붙이지 말고, 임시 텍스트와 확정된 화자 발언을 서로 다른 상태로 표시하세요. 이후 편집이나 분석에 전사가 필요하다면 완료된 결과를 보관합니다.</p><h4>모델과 출력의 범위</h4><p>이 프로필은 화자 분리 모델이며, 일반 GPT-4o 전사, Mini 전사, 음성 합성, 실시간 대화 모델과 구분됩니다. 전사 프롬프트는 지원하지 않습니다. 용어 검토나 수정은 원본 오디오와 대조하는 별도의 단계로 유지하세요. 개발사 인터페이스는 녹음된 오디오를 텍스트로 전사합니다. 음성 응답을 생성하거나 별도의 오디오 번역 작업 흐름을 통해 녹음을 번역하지 않습니다.</p><p>내용과 화자 구조가 모두 필요한 전사에 사용하세요. 이름, 전문 용어, 숫자, 발언 차례의 경계, 화자 귀속을 녹음과 대조합니다. 오디오, 선택한 결과 형식, 참조 음성, 완료된 전사를 보관해 구체적인 구절 하나나 화자 배정을 대상으로 수정할 수 있게 하세요.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Ailoot에서 사용 가능 · 입력 및 메서드</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · 음성 인식</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>입력</dt><dd><code>audio</code></dd></div><div><dt>출력</dt><dd><code>transcription</code></dd></div><div><dt>출력 형식</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>필드</th><th>유형</th><th>요건</th><th>값과 한도</th><th>기본값</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>openai/gpt-4o-transcribe-diarize</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">file</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>file</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>최대 바이트 수: 26,214,400</div><div>MIME 유형: audio/mpeg</div><div>파일 확장자: .mp3</div><div>최대 길이(초): 30</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>diarized_json</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>입력 자료 조합</summary><p class=\"note-s\"><b>diarized_transcription</b></p></details><details class=\"note-s\" data-method-contract><summary>메서드 매개변수와 수명 주기</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>매개변수</th><th>명세</th></tr></thead><tbody><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>content_type</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>multipart/form-data</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>required</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>model, file, response_format</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>file_formats</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>mp3</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>max_audio_seconds</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>30</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>max_bytes</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>26214400</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>response_format</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>diarized_json</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>other_options</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>false</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>material_types</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>audio</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>additional_properties</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>false</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>form_string_maximum_bytes</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>256</td></tr></tbody></table></div><p>메서드 별칭: <code>/audio/transcriptions</code></p><p>수명 주기: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · 실제로 반환된 task_id 또는 미디어 라이브러리 기록</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\">실제 녹음과 일치하는 형식을 사용하세요.</p><p class=\"note-s\">전사문 전체, 구간, 화자 ID 및 시간 정보를 보존하세요.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">요금</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.</p><dl data-price-conditions><dt>빠른 모드</dt><dd>미지정 <span class=\"note-s\">빠른 모드를 선택한 경우</span></dd><dt>Flex 모드</dt><dd>미지정 <span class=\"note-s\">flex 모드를 선택한 경우</span></dd><dt>최대 추론 수준</dt><dd>미지정 <span class=\"note-s\">최대 추론 수준에 default 조정값을 적용하는 경우</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot 요금</h4><h4>설정별 가격</h4><p class=\"note-s\">각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>설정</th><th>요금표</th><th>과금 단위</th><th>요금</th></tr></thead><tbody><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>기본 토큰 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>기본 요금</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>—</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 입력 토큰</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>출력 · 출력 토큰</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 읽기</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기, 1시간</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>Ultra</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>/ 1K 오디오 토큰</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 오디오 입력 토큰</span> <b>$0.012</b> <span class=\"price-unit\">/ 1K 오디오 토큰</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>Ultra</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>/ 1K 오디오 토큰</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>출력 · 오디오 출력 토큰</span> <b>$0.02</b> <span class=\"price-unit\">/ 1K 오디오 토큰</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. <a href=\"/docs/ko/billing/reserve/\">금액 확보와 정산 방식 →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">요청 예제</h3><h4>Ailoot Ultra · 음성 인식</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"코드 예제 형식\"><button class=\"cg-tab\" id=\"model-code-2050-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2050-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · 보관된 생성 요청 그대로</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"코드 복사\"><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-2050-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2050-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 the path to your actual MP3 recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport os\nfrom pathlib import Path\np=Path(os.environ[&quot;AILOOT_AUDIO_FILE&quot;])\nif not p.is_file() or p.suffix.lower()!=&quot;.mp3&quot;:raise SystemExit(&quot;Choose an existing 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=openai/gpt-4o-transcribe-diarize -F &quot;file=@$AILOOT_AUDIO_FILE&quot; --form-string response_format=diarized_json \\\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())))\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">결과 수신 및 저장</h3><h4>Ailoot Ultra · 음성 인식</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><details class=\"card-about\"><summary>기타 콘텐츠 조회</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"코드 예제 형식\"><button class=\"cg-tab\" id=\"model-code-2051-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2051-panel-0\" aria-selected=\"true\" tabindex=\"0\">반환된 내 소유 전사문 모두 저장</button><button class=\"cg-tab\" id=\"model-code-2051-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2051-panel-1\" aria-selected=\"false\" tabindex=\"-1\">미디어 라이브러리</button><button class=\"cg-tab\" id=\"model-code-2051-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2051-panel-2\" aria-selected=\"false\" tabindex=\"-1\">작업 상태</button><button class=\"cg-tab\" id=\"model-code-2051-tab-3\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2051-panel-3\" aria-selected=\"false\" tabindex=\"-1\">자산 세부 정보</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"코드 복사\"><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-2051-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2051-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nurls=[]\nif isinstance(r.get(&#39;asset_url&#39;),str) and r[&#39;asset_url&#39;]:urls.append((&#39;transcript&#39;,r[&#39;asset_url&#39;]))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2051-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2051-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-assets.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2051-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2051-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_MEDIA_TASK_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/tasks/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-task.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-task.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2051-panel-3\" role=\"tabpanel\" aria-labelledby=\"model-code-2051-tab-3\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_ASSET_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/assets/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-asset.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-asset.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>완료된 결과 모두 보관</h5><p class=\"note-s\">반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.</p><p class=\"note-s\">텍스트만이 아니라 JSON 전체를 보존하세요. 사용 가능한 모든 구간/화자/타임스탬프와 실제 작업/자산 식별자를 유지하세요.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>원래 응답을 확인해야 할 경우</h5><p class=\"note-s\">다시 제출하지 말고 정산 대조를 위해 최초 operation_id/X-Client-Request-ID를 보관하세요. 전용 오디오 폴링 라우트는 없습니다.</p></div><details class=\"card-about\" data-output-fields><summary>응답 필드</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>필드</th><th>유형</th></tr></thead><tbody><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">text</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">segments[]</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>object</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">asset_url</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>object</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">segments[].speaker</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">segments[].start</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>number</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">segments[].end</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>number</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>오류와 다음 단계</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>응답</th><th>조건</th><th>다음 단계</th></tr></thead><tbody><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>새 생성 요청 전에 표시된 필드를 수정하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span><code>server_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>반환된 응답에 작업 또는 결과 확인이 필요하다고 표시되어 있습니다</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>최초로 반환된 작업/태스크 ID, 요청 헤더와 응답을 보관하고, 지원되는 조회 방식으로 해당 최초 작업을 계속 조회하세요. 생성 요청을 다시 제출하지 마세요.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">별칭</h3><h4>모델 별칭</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=openai%2Fgpt-4o-transcribe-diarize&amp;route=Ultra&amp;caller=openai%2Fgpt-4o-transcribe-diarize&amp;fmt=transcriptions\"><code>openai/gpt-4o-transcribe-diarize</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\"><code>/audio/transcriptions</code></p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-4o-transcribe-diarize&amp;route=Ultra&amp;caller=openai%2Fgpt-4o-transcribe-diarize&amp;fmt=transcriptions\"><code>openai/gpt-4o-transcribe-diarize</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-4o-transcribe-diarize",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "openai/gpt-4o-transcribe-diarize",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-4o-transcribe-diarize",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": 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": "필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음",
                "http_status": 400,
                "recovery": "새 생성 요청 전에 표시된 필드를 수정하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "반환된 응답에 작업 또는 결과 확인이 필요하다고 표시되어 있습니다",
                "http_status": null,
                "recovery": "최초로 반환된 작업/태스크 ID, 요청 헤더와 응답을 보관하고, 지원되는 조회 방식으로 해당 최초 작업을 계속 조회하세요. 생성 요청을 다시 제출하지 마세요.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "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": "다시 제출하지 말고 정산 대조를 위해 최초 operation_id/X-Client-Request-ID를 보관하세요. 전용 오디오 폴링 라우트는 없습니다."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "multipart/form-data",
                "file_formats": [
                  "mp3"
                ],
                "maximum_seconds": 30,
                "mode": "diarized_transcription"
              }
            ],
            "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": [
              "diarized_transcription"
            ],
            "outputs": {
              "all_results": "텍스트만이 아니라 JSON 전체를 보존하세요. 사용 가능한 모든 구간/화자/타임스탬프와 실제 작업/자산 식별자를 유지하세요.",
              "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"
                },
                {
                  "description": null,
                  "name": "segments[].speaker",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "segments[].start",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "segments[].end",
                  "type": "number"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4o-transcribe-diarize"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "file_extension": ".mp3",
                "maximum_bytes": 26214400,
                "maximum_seconds": 30,
                "mime_types": [
                  "audio/mpeg"
                ],
                "name": "file",
                "required": true,
                "type": "file"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "diarized_json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "JSONinput_audio",
              "nonMP3",
              "audioover30seconds",
              "otheroptions"
            ]
          },
          "hints": [
            "실제 녹음과 일치하는 형식을 사용하세요.",
            "전사문 전체, 구간, 화자 ID 및 시간 정보를 보존하세요."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "multipart/form-data",
            "file_formats": [
              "mp3"
            ],
            "form_string_maximum_bytes": 256,
            "material_types": [
              "audio"
            ],
            "max_audio_seconds": 30,
            "max_bytes": 26214400,
            "other_options": false,
            "required": [
              "model",
              "file",
              "response_format"
            ],
            "response_format": [
              "diarized_json"
            ]
          },
          "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": "실제로 반환된 task_id 또는 미디어 라이브러리 기록",
                "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"
          },
          "method_aliases": [
            "/audio/transcriptions"
          ],
          "operation_modes": [
            "diarized_transcription"
          ],
          "output": {
            "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"
              },
              {
                "description": null,
                "name": "segments[].speaker",
                "type": "string"
              },
              {
                "description": null,
                "name": "segments[].start",
                "type": "number"
              },
              {
                "description": null,
                "name": "segments[].end",
                "type": "number"
              }
            ],
            "format": "json",
            "owned_result_extra_fields": [
              "task_id",
              "asset_url"
            ],
            "preserve_original_json_fields": [
              "text",
              "task",
              "duration",
              "segments",
              "usage"
            ],
            "segment_fields": [
              "type",
              "text",
              "speaker",
              "start",
              "end",
              "id"
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_token",
                "label": "audio input token",
                "native_amount_usd_per_unit": "0.000012",
                "native_quantity": 1,
                "native_unit": "audio_input_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.02000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_token",
                "label": "audio output token",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "native_unit": "audio_output_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual MP3 recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport os\nfrom pathlib import Path\np=Path(os.environ[\"AILOOT_AUDIO_FILE\"])\nif not p.is_file() or p.suffix.lower()!=\".mp3\":raise SystemExit(\"Choose an existing 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=openai/gpt-4o-transcribe-diarize -F \"file=@$AILOOT_AUDIO_FILE\" --form-string response_format=diarized_json \\\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())))\nPY_RESULT\n",
            "label": "curl · exact retained creation",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('result.json').read_text())\nurls=[]\nif isinstance(r.get('asset_url'),str) and r['asset_url']:urls.append(('transcript',r['asset_url']))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every returned owned transcript",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Use actual recording and matching format.",
          "Preserve full transcript, segments, speaker IDs and timing."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/audio/transcriptions"
        ],
        "out": null,
        "output": [
          "transcription"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_token": 1.2e-05,
            "audio_output_token": 2e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_token",
                "label": "audio input token",
                "native_amount_usd_per_unit": "0.000012",
                "native_quantity": 1,
                "native_unit": "audio_input_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.02000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_token",
                "label": "audio output token",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "native_unit": "audio_output_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_token"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-4o-transcribe-diarize",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_token",
            "label": "audio input token",
            "native_amount_usd_per_unit": "0.000012",
            "native_quantity": 1,
            "native_unit": "audio_input_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_token"
          },
          {
            "amount": "0.02000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_output_token",
            "label": "audio output token",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "native_unit": "audio_output_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "audio_output_token"
          }
        ]
      }
    }
  ],
  "model_id": "openai/gpt-4o-transcribe-diarize",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "5a00c20188b94a69a3cc5028343f18bf69d569dcfda76119627d8a341bd82fef",
    "input_html_sha256": "7294303e534e2eaa19bc7f11afb3092770d21103064a06e1a44094579cdab919",
    "private_audit_sha256": "2d59e807a326f569d72ee7d6f7ce070dea3781cf0baf2fc6290905fa2f7124b0",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/openai-gpt-4o-transcribe-diarize/",
    "description": "GPT-4o Transcribe Diarize는 녹음된 발화를 화자 레이블과 시간이 표시된 구간을 갖춘 텍스트로 변환합니다. 누가 언제 말했는지 보여 주는 전사가 필요한 회의, 인터뷰, 여러 사람이 참여한 녹음에 적합하며, 알려진 화자를 위한 짧은 음성 참조를 선택적으로 제공할 수 있습니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/openai-gpt-4o-transcribe-diarize/index.md",
    "title": "gpt-4o-transcribe-diarize — Ailoot",
    "url": "https://ailoot.ai/models/ko/openai-gpt-4o-transcribe-diarize/"
  },
  "rawModel": {
    "about": "GPT-4o Transcribe Diarize는 화자 분리가 내장된 OpenAI의 자동 음성 인식 모델입니다. 전사한 오디오 구간을 대화의 서로 다른 화자와 연결합니다. 유용한 결과는 단어가 연속된 덩어리가 아니라 화자와 시간별로 정리된 전사입니다. 회의, 인터뷰, 여러 사람의 토론처럼 화자 레이블이 필요한 녹음된 발화를 위한 모델입니다.\n\n### 완료된 녹음 준비하기\n\n전사할 녹음을 제공하세요. 문서화된 파일 작업 흐름은 MP3, MP4, MPEG, MPGA, M4A, WAV, WebM을 입력받으며 파일 크기는 25 MB로 제한됩니다. 화자의 발언 차례, 이름, 불분명한 구절을 실제 오디오와 대조할 수 있도록 원본 녹음을 보관하세요.\n\n회의에는 발언 차례를 구분하는 데 도움이 되는 짧은 쉼을 잘라내지 말고 대화의 순서를 유지하세요. 인터뷰에는 작업에서 질문과 응답의 관계가 필요하다면 둘을 함께 유지합니다. 오디오 준비는 화자 레이블이 있는 결과에 중요한 정보를 없애지 않으면서 발화를 들을 수 있게 해야 합니다.\n\n이는 파일 전사 작업 흐름입니다. 완료된 녹음을 처리하는 일과 아직 들어오는 오디오 스트림을 인식하는 일은 서로 다른 작업이며, 이 모델의 화자 레이블 지정은 Realtime 전사 세션에서 지원되지 않습니다.\n\n### 화자 레이블이 있는 전사 요청하기\n\n`diarized_json` 결과 형식은 화자 식별 레이블과 시작·종료 시간이 포함된 구간을 반환합니다. 각 구간에는 전사된 텍스트도 포함됩니다. 단어를 녹음의 해당 부분과 연결할 수 있도록 이 필드들을 함께 유지하세요.\n\n유용한 회의 전사에는 구간 순서를 유지하고 각 화자의 말을 시간과 함께 표시합니다. 이후 작업에서 이 전사로 회의록이나 실행 항목을 작성할 수 있지만, 화자 분리 자체가 회의의 합의 내용을 결정하거나 검증된 요약을 생성하는 것은 아닙니다.\n\n화자 레이블은 모델이 발화를 묶은 방식을 나타냅니다. 사람들이 서로 말을 끊거나 짧게 말하거나 발화가 겹치는 전환 지점을 확인하세요. 구조가 잘 잡힌 결과는 탐색과 검토에 도움이 되지만, 특정 화자에게 귀속한 내용은 여전히 원본 오디오를 들어 확인해야 할 수 있습니다.\n\n### 알려진 화자의 참조 음성\n\n문서화된 작업 흐름은 이름을 지정한 화자 참조 음성을 최대 네 개 입력받을 수 있습니다. 각 참조는 기본 업로드에서 지원하는 형식의 2–10초짜리 짧은 오디오 클립입니다. 구간을 알려진 화자와 연결할 수 있도록 이름과 참조 음성을 함께 제공합니다.\n\n의도한 화자의 음성이 명확하게 담긴 참조를 준비하고, 전사에서 사용할 레이블과 이름을 일치시키세요. 인터뷰에서는 진행자의 참조 음성이 있으면 모든 참여자를 익명 레이블로 바꾸지 않고 화자 레이블이 있는 결과를 정리하는 데 도움이 됩니다. 참조 음성은 화자 귀속을 위한 입력이며, 일반적인 음성 복제 작업이나 개인의 신원 증명이 아닙니다.\n\n화자에게 이름을 붙이는 일과 실제 발언을 편집하는 일을 혼동하지 마세요. 유용한 출력은 여전히 녹음의 내용과 실제 발언 순서를 보존해야 합니다.\n\n### 구간 분할과 모델 한도\n\n30초보다 긴 오디오에는 개발사가 구간 분할 전략을 요구합니다. 자동 분할이나 음성 활동 감지 설정을 사용할 수 있습니다. 이 요구 사항은 최대 녹음 시간이 아니며, 긴 입력을 처리용으로 나누는 방식을 설명합니다.\n\n모델 카드에는 16,000토큰의 컨텍스트 창과 2,000토큰의 최대 출력이 명시되어 있습니다. 이는 모델 토큰 한도이며, 파일 작업 흐름의 25 MB 업로드 한도 및 분할 기준 시간과는 별개입니다. 모든 녹음에 적용되는 임의의 분 단위 시간으로 변환해서는 안 됩니다.\n\n긴 전사를 조합하거나 살펴볼 때는 시간과 구간 식별 정보를 유지하세요. 제출 전에 녹음을 나눴다면 각 부분과 원본 오디오의 관계를 보관해, 부분 내 타임스탬프를 전체 대화의 위치와 혼동하지 않게 합니다.\n\n### 확정된 구간 스트리밍하기\n\n파일 전사 작업 흐름은 녹음을 처리하는 동안 텍스트를 스트리밍할 수 있습니다. 화자 레이블이 있는 스트리밍에서는 완료된 구간이 구간 이벤트를 생성합니다. 텍스트 델타에는 구간 식별자가 포함되지만 부분적인 화자 배정은 포함되지 않습니다. 화자는 구간이 확정될 때 배정됩니다.\n\n이 차이는 화면 표시에 중요합니다. 모델이 구간을 완료하기 전에 불확실한 화자 레이블을 붙이지 말고, 임시 텍스트와 확정된 화자 발언을 서로 다른 상태로 표시하세요. 이후 편집이나 분석에 전사가 필요하다면 완료된 결과를 보관합니다.\n\n### 모델과 출력의 범위\n\n이 프로필은 화자 분리 모델이며, 일반 GPT-4o 전사, Mini 전사, 음성 합성, 실시간 대화 모델과 구분됩니다. 전사 프롬프트는 지원하지 않습니다. 용어 검토나 수정은 원본 오디오와 대조하는 별도의 단계로 유지하세요. 개발사 인터페이스는 녹음된 오디오를 텍스트로 전사합니다. 음성 응답을 생성하거나 별도의 오디오 번역 작업 흐름을 통해 녹음을 번역하지 않습니다.\n\n내용과 화자 구조가 모두 필요한 전사에 사용하세요. 이름, 전문 용어, 숫자, 발언 차례의 경계, 화자 귀속을 녹음과 대조합니다. 오디오, 선택한 결과 형식, 참조 음성, 완료된 전사를 보관해 구체적인 구절 하나나 화자 배정을 대상으로 수정할 수 있게 하세요.",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "available": null,
    "canonical_model": "openai/gpt-4o-transcribe-diarize",
    "capabilities": {
      "context_length": 16000,
      "manufacturer_input": [],
      "manufacturer_output": []
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_token",
            "label": "audio input token",
            "native_amount_usd_per_unit": "0.000012",
            "native_quantity": 1,
            "native_unit": "audio_input_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_token"
          },
          {
            "amount": "0.02000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_output_token",
            "label": "audio output token",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "native_unit": "audio_output_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "audio_output_token"
          }
        ],
        "summary": "구성의 전체 요금 정보는 상세 정보에서 확인할 수 있습니다."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "transcriptions"
    ],
    "id": "openai/gpt-4o-transcribe-diarize",
    "input": [
      "audio"
    ],
    "kind": "unresolved_method_or_category",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": 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": "필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음",
                "http_status": 400,
                "recovery": "새 생성 요청 전에 표시된 필드를 수정하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "반환된 응답에 작업 또는 결과 확인이 필요하다고 표시되어 있습니다",
                "http_status": null,
                "recovery": "최초로 반환된 작업/태스크 ID, 요청 헤더와 응답을 보관하고, 지원되는 조회 방식으로 해당 최초 작업을 계속 조회하세요. 생성 요청을 다시 제출하지 마세요.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "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": "다시 제출하지 말고 정산 대조를 위해 최초 operation_id/X-Client-Request-ID를 보관하세요. 전용 오디오 폴링 라우트는 없습니다."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "multipart/form-data",
                "file_formats": [
                  "mp3"
                ],
                "maximum_seconds": 30,
                "mode": "diarized_transcription"
              }
            ],
            "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": [
              "diarized_transcription"
            ],
            "outputs": {
              "all_results": "텍스트만이 아니라 JSON 전체를 보존하세요. 사용 가능한 모든 구간/화자/타임스탬프와 실제 작업/자산 식별자를 유지하세요.",
              "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"
                },
                {
                  "description": null,
                  "name": "segments[].speaker",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "segments[].start",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "segments[].end",
                  "type": "number"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4o-transcribe-diarize"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "file_extension": ".mp3",
                "maximum_bytes": 26214400,
                "maximum_seconds": 30,
                "mime_types": [
                  "audio/mpeg"
                ],
                "name": "file",
                "required": true,
                "type": "file"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "diarized_json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "JSONinput_audio",
              "nonMP3",
              "audioover30seconds",
              "otheroptions"
            ]
          },
          "hints": [
            "실제 녹음과 일치하는 형식을 사용하세요.",
            "전사문 전체, 구간, 화자 ID 및 시간 정보를 보존하세요."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "multipart/form-data",
            "file_formats": [
              "mp3"
            ],
            "form_string_maximum_bytes": 256,
            "material_types": [
              "audio"
            ],
            "max_audio_seconds": 30,
            "max_bytes": 26214400,
            "other_options": false,
            "required": [
              "model",
              "file",
              "response_format"
            ],
            "response_format": [
              "diarized_json"
            ]
          },
          "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": "실제로 반환된 task_id 또는 미디어 라이브러리 기록",
                "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"
          },
          "method_aliases": [
            "/audio/transcriptions"
          ],
          "operation_modes": [
            "diarized_transcription"
          ],
          "output": {
            "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"
              },
              {
                "description": null,
                "name": "segments[].speaker",
                "type": "string"
              },
              {
                "description": null,
                "name": "segments[].start",
                "type": "number"
              },
              {
                "description": null,
                "name": "segments[].end",
                "type": "number"
              }
            ],
            "format": "json",
            "owned_result_extra_fields": [
              "task_id",
              "asset_url"
            ],
            "preserve_original_json_fields": [
              "text",
              "task",
              "duration",
              "segments",
              "usage"
            ],
            "segment_fields": [
              "type",
              "text",
              "speaker",
              "start",
              "end",
              "id"
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_token",
                "label": "audio input token",
                "native_amount_usd_per_unit": "0.000012",
                "native_quantity": 1,
                "native_unit": "audio_input_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.02000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_token",
                "label": "audio output token",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "native_unit": "audio_output_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual MP3 recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport os\nfrom pathlib import Path\np=Path(os.environ[\"AILOOT_AUDIO_FILE\"])\nif not p.is_file() or p.suffix.lower()!=\".mp3\":raise SystemExit(\"Choose an existing 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=openai/gpt-4o-transcribe-diarize -F \"file=@$AILOOT_AUDIO_FILE\" --form-string response_format=diarized_json \\\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())))\nPY_RESULT\n",
            "label": "curl · exact retained creation",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('result.json').read_text())\nurls=[]\nif isinstance(r.get('asset_url'),str) and r['asset_url']:urls.append(('transcript',r['asset_url']))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every returned owned transcript",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Use actual recording and matching format.",
          "Preserve full transcript, segments, speaker IDs and timing."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/audio/transcriptions"
        ],
        "out": null,
        "output": [
          "transcription"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_token": 1.2e-05,
            "audio_output_token": 2e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_token",
                "label": "audio input token",
                "native_amount_usd_per_unit": "0.000012",
                "native_quantity": 1,
                "native_unit": "audio_input_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.02000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_token",
                "label": "audio output token",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "native_unit": "audio_output_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_token"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-4o-transcribe-diarize",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_token",
            "label": "audio input token",
            "native_amount_usd_per_unit": "0.000012",
            "native_quantity": 1,
            "native_unit": "audio_input_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_token"
          },
          {
            "amount": "0.02000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_output_token",
            "label": "audio output token",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "native_unit": "audio_output_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "audio_output_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "openai/gpt-4o-transcribe-diarize",
        "request_model_id": "openai/gpt-4o-transcribe-diarize",
        "route_label": "Ultra"
      }
    ],
    "name": "gpt-4o-transcribe-diarize",
    "price": {
      "in": null,
      "in_label": null,
      "out": 0.02,
      "out_label": "/ 1K audio tokens",
      "sort_in": null,
      "sort_out": 0.02,
      "varies": true
    },
    "pricing_profiles": [],
    "public_id": "openai/gpt-4o-transcribe-diarize",
    "short": "GPT-4o Transcribe Diarize는 녹음된 발화를 화자 레이블과 시간이 표시된 구간을 갖춘 텍스트로 변환합니다. 누가 언제 말했는지 보여 주는 전사가 필요한 회의, 인터뷰, 여러 사람이 참여한 녹음에 적합하며, 알려진 화자를 위한 짧은 음성 참조를 선택적으로 제공할 수 있습니다."
  },
  "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": "GPT-4o Transcribe Diarize는 녹음된 발화를 화자 레이블과 시간이 표시된 구간을 갖춘 텍스트로 변환합니다. 누가 언제 말했는지 보여 주는 전사가 필요한 회의, 인터뷰, 여러 사람이 참여한 녹음에 적합하며, 알려진 화자를 위한 짧은 음성 참조를 선택적으로 제공할 수 있습니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "58cf1d23f7be9787b582cf42a0d949d671a7b44342c8df5a1e20c744d3eaed09",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "7be02183a74e53b746911ce4d9c3d65d5443c5bfc3f44cbd8b6dd2f4d4d6cf2a"
}
