{
  "aboutHtml": "<p>GPT Transcribe는 완성된 오디오 파일, 스트리밍되는 파일 전사 결과, Realtime 세션에서 커밋한 오디오 턴을 위한 OpenAI의 음성 인식 모델입니다. 선택적인 텍스트 맥락과 함께 오디오를 입력받아 인식한 텍스트를 반환합니다. 제조사는 전문 용어, 다국어 녹음, 발화 중 언어 전환을 포함하여 녹음된 음성을 원래 언어로 정확하게 전사하는 용도로 소개합니다. 유용한 출력은 녹음과의 연결을 유지하는 전사문이며, 모델이 신뢰할 만한 예측을 할 수 있는 경우 감지한 언어의 메타데이터가 포함됩니다.</p><h4>완성된 녹음 준비하기</h4><p>OpenAI의 파일 전사 흐름은 최대 25 MB의 업로드를 받습니다. 현재 엔드포인트 참조 문서는 FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV, WebM 입력 형식을 명시하며, 적절한 파일명 확장자와 콘텐츠 유형을 포함해 형식을 식별할 수 있는 충분한 파일 메타데이터를 권장합니다. 더 큰 녹음은 압축하거나 25 MB 이하의 파일로 나누는 것이 가이드의 권장 사항입니다. 주변 발화를 제거하면 인식 정확도가 낮아질 수 있으므로 문장 중간을 자르지 마세요. 조각의 순서를 유지하고 원래 녹음에서의 위치를 보존하세요.</p><p>회의, 인터뷰, 녹음된 발표에서는 실제 오디오를 제공하고 주제와 발화될 가능성이 있는 용어를 지정하세요. 유용한 결과는 논의에서 추론한 요약이 아니라 실제로 인식한 표현입니다. 반환된 텍스트와 함께 녹음 식별자를 보존하여 이름, 숫자, 불확실한 구절을 검토하는 사람이 올바른 원자료로 돌아갈 수 있게 하세요. 전사문은 이후 별도의 요약, 번역, 편집 작업을 위한 자료가 될 수 있습니다.</p><h4>맥락, 키워드 힌트, 예상 언어</h4><p>제조사는 세 가지 안내를 구분합니다. 프롬프트는 녹음의 주제나 상황에 대한 자유 형식의 맥락을 제공합니다. 키워드는 발화에서 예상하는 실제 단어나 구를 지정합니다. languages 목록은 예상하는 발화 언어를 나타냅니다. 두 언어를 사용하는 제품 논의에서는 프롬프트에 상황을 설명하고, 관련 제품명을 키워드로 나열하며, 예상 언어를 제공하세요. 이는 인식 힌트이며, 아무도 말하지 않은 어휘를 삽입하라는 지시가 아닙니다.</p><p>GPT Transcribe는 이전의 단수형 language 필드 대신 복수형 languages 필드를 사용합니다. OpenAI는 두 필드를 함께 보내지 말라고 명시합니다. 가이드는 지원되는 ISO 639-1 코드, 일부 ISO 639-3 코드, 중국어 지역 로케일 코드를 허용하며, 지원하지 않거나 형식이 잘못된 값은 거부합니다. 각 키워드는 한 줄이어야 하며 꺾쇠괄호, 캐리지 리턴, 줄바꿈을 포함해서는 안 됩니다. 잘못된 키워드나 너무 긴 프롬프트로 요청 전체가 거부될 수 있습니다. 관련 맥락만 제공하고, 힌트 목록을 전사문으로 취급하지 말고 힌트로 지정한 이름이 실제 오디오에 나오는지 확인하세요.</p><h4>JSON 출력과 감지 언어 예측</h4><p>문서화된 파일 결과는 전사문과 감지한 언어를 포함하는 JSON입니다. 이러한 언어 예측은 모델의 출력이며, 제공된 언어 힌트를 복사한 것이 아닙니다. 모델이 신뢰할 만한 예측을 할 수 없으면 빈 언어 목록도 유효한 결과입니다. 이는 녹음이 무음이었다거나 전사가 실패했다는 근거가 아닙니다. 이후 처리에서 각각의 의미에 맞게 사용할 수 있도록 인식된 텍스트와 언어 메타데이터를 분리해 보존하세요.</p><h4>파일 전사 결과 스트리밍하기</h4><p>완성된 파일을 처리하는 동안 전사 텍스트를 점진적으로 출력할 수 있습니다. OpenAI는 부분 텍스트를 위한 transcript.text.delta 이벤트와 파일 전체 전사문을 위한 transcript.text.done 이벤트를 문서화합니다. 최종 이벤트에는 감지한 언어도 포함됩니다. 이는 이미 제공된 녹음의 출력을 스트리밍하는 방식입니다. 긴 업로드의 진행 상황을 표시하는 데 유용하며, 최종 이벤트는 완료된 결과로 보존할 텍스트를 확정합니다.</p><h4>Realtime 세션에서 커밋한 턴</h4><p>GPT Transcribe에는 WebSocket을 사용하는 전용 Realtime 흐름도 있습니다. 입력 버퍼에 오디오를 추가한 뒤 애플리케이션이 오디오 턴을 명시적으로 커밋합니다. 커밋한 청크의 전사가 시작되며, 완료 이벤트 전에 델타가 나올 수 있고 감지한 언어 정보도 포함됩니다. 이 제조사 세션 흐름에서 모델은 앞서 전사한 턴을 자동으로 맥락으로 사용합니다. 이는 마이크 오디오가 도착할 때마다 실시간 자막 텍스트를 계속 내보내는 흐름과는 다릅니다. OpenAI는 그러한 연속 흐름에 GPT Live Transcribe라는 이름을 사용합니다.</p><p>여러 턴에서는 해당 전사문과 함께 입력 항목 식별자를 보존하세요. OpenAI는 서로 다른 턴의 완료 이벤트가 발화 순서대로 도착하지 않을 수 있다고 경고합니다. 따라서 완료 시각만으로 대화를 정렬하지 말고 각 최종 결과를 커밋한 입력과 연결하세요. 유용한 산출물은 올바른 최종 항목을 모아 순서대로 구성한 전사문이며, 중간 텍스트는 별도로 완료된 발화가 아닌 진행 상황으로 취급해야 합니다.</p><h4>특수 출력과 실질적인 한계</h4><p>이 사양은 자막, 타임스탬프, 번역, 화자 라벨에 대한 보편적인 계약을 제공하지 않습니다. OpenAI의 마이그레이션 가이드는 이러한 특수 기능을 구분합니다. 모델 고유의 자막 형식과 단어별 시간 정보에는 호환되는 모델과 형식이 필요하며, 화자 라벨에는 GPT-4o Transcribe Diarize를 사용합니다. GPT Transcribe의 파일 결과는 JSON이며 SRT, VTT, 상세 타임스탬프 응답을 그대로 대체하는 형식이 아닙니다. 정확한 모델 카드는 수치로 된 컨텍스트나 최대 출력 한도를 공개하지 않으므로, 오디오 전사에 채팅 모델의 토큰 창을 가정해서는 안 됩니다.</p><p>어려운 어휘, 숫자, 억양, 배경 소음, 언어 전환을 녹음에 대조해 검토하세요. 관련 힌트가 말하지 않은 용어를 삽입하지 않으면서 인식을 개선했는지, 최종 전사문이 오디오 끝까지 포함하는지 확인하세요. 다국어 결과에서는 번역본을 준비하기 전에 실제 발화 표현을 보존하세요. 이러한 검증은 맥락 힌트, 감지한 언어, 인식한 발화를 명확히 구분하면서 전사문을 원자료로 활용할 수 있게 합니다.</p>",
  "aboutText": "GPT Transcribe는 완성된 오디오 파일, 스트리밍되는 파일 전사 결과, Realtime 세션에서 커밋한 오디오 턴을 위한 OpenAI의 음성 인식 모델입니다. 선택적인 텍스트 맥락과 함께 오디오를 입력받아 인식한 텍스트를 반환합니다. 제조사는 전문 용어, 다국어 녹음, 발화 중 언어 전환을 포함하여 녹음된 음성을 원래 언어로 정확하게 전사하는 용도로 소개합니다. 유용한 출력은 녹음과의 연결을 유지하는 전사문이며, 모델이 신뢰할 만한 예측을 할 수 있는 경우 감지한 언어의 메타데이터가 포함됩니다.\n\n### 완성된 녹음 준비하기\n\nOpenAI의 파일 전사 흐름은 최대 25 MB의 업로드를 받습니다. 현재 엔드포인트 참조 문서는 FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV, WebM 입력 형식을 명시하며, 적절한 파일명 확장자와 콘텐츠 유형을 포함해 형식을 식별할 수 있는 충분한 파일 메타데이터를 권장합니다. 더 큰 녹음은 압축하거나 25 MB 이하의 파일로 나누는 것이 가이드의 권장 사항입니다. 주변 발화를 제거하면 인식 정확도가 낮아질 수 있으므로 문장 중간을 자르지 마세요. 조각의 순서를 유지하고 원래 녹음에서의 위치를 보존하세요.\n\n회의, 인터뷰, 녹음된 발표에서는 실제 오디오를 제공하고 주제와 발화될 가능성이 있는 용어를 지정하세요. 유용한 결과는 논의에서 추론한 요약이 아니라 실제로 인식한 표현입니다. 반환된 텍스트와 함께 녹음 식별자를 보존하여 이름, 숫자, 불확실한 구절을 검토하는 사람이 올바른 원자료로 돌아갈 수 있게 하세요. 전사문은 이후 별도의 요약, 번역, 편집 작업을 위한 자료가 될 수 있습니다.\n\n### 맥락, 키워드 힌트, 예상 언어\n\n제조사는 세 가지 안내를 구분합니다. 프롬프트는 녹음의 주제나 상황에 대한 자유 형식의 맥락을 제공합니다. 키워드는 발화에서 예상하는 실제 단어나 구를 지정합니다. languages 목록은 예상하는 발화 언어를 나타냅니다. 두 언어를 사용하는 제품 논의에서는 프롬프트에 상황을 설명하고, 관련 제품명을 키워드로 나열하며, 예상 언어를 제공하세요. 이는 인식 힌트이며, 아무도 말하지 않은 어휘를 삽입하라는 지시가 아닙니다.\n\nGPT Transcribe는 이전의 단수형 language 필드 대신 복수형 languages 필드를 사용합니다. OpenAI는 두 필드를 함께 보내지 말라고 명시합니다. 가이드는 지원되는 ISO 639-1 코드, 일부 ISO 639-3 코드, 중국어 지역 로케일 코드를 허용하며, 지원하지 않거나 형식이 잘못된 값은 거부합니다. 각 키워드는 한 줄이어야 하며 꺾쇠괄호, 캐리지 리턴, 줄바꿈을 포함해서는 안 됩니다. 잘못된 키워드나 너무 긴 프롬프트로 요청 전체가 거부될 수 있습니다. 관련 맥락만 제공하고, 힌트 목록을 전사문으로 취급하지 말고 힌트로 지정한 이름이 실제 오디오에 나오는지 확인하세요.\n\n### JSON 출력과 감지 언어 예측\n\n문서화된 파일 결과는 전사문과 감지한 언어를 포함하는 JSON입니다. 이러한 언어 예측은 모델의 출력이며, 제공된 언어 힌트를 복사한 것이 아닙니다. 모델이 신뢰할 만한 예측을 할 수 없으면 빈 언어 목록도 유효한 결과입니다. 이는 녹음이 무음이었다거나 전사가 실패했다는 근거가 아닙니다. 이후 처리에서 각각의 의미에 맞게 사용할 수 있도록 인식된 텍스트와 언어 메타데이터를 분리해 보존하세요.\n\n### 파일 전사 결과 스트리밍하기\n\n완성된 파일을 처리하는 동안 전사 텍스트를 점진적으로 출력할 수 있습니다. OpenAI는 부분 텍스트를 위한 transcript.text.delta 이벤트와 파일 전체 전사문을 위한 transcript.text.done 이벤트를 문서화합니다. 최종 이벤트에는 감지한 언어도 포함됩니다. 이는 이미 제공된 녹음의 출력을 스트리밍하는 방식입니다. 긴 업로드의 진행 상황을 표시하는 데 유용하며, 최종 이벤트는 완료된 결과로 보존할 텍스트를 확정합니다.\n\n### Realtime 세션에서 커밋한 턴\n\nGPT Transcribe에는 WebSocket을 사용하는 전용 Realtime 흐름도 있습니다. 입력 버퍼에 오디오를 추가한 뒤 애플리케이션이 오디오 턴을 명시적으로 커밋합니다. 커밋한 청크의 전사가 시작되며, 완료 이벤트 전에 델타가 나올 수 있고 감지한 언어 정보도 포함됩니다. 이 제조사 세션 흐름에서 모델은 앞서 전사한 턴을 자동으로 맥락으로 사용합니다. 이는 마이크 오디오가 도착할 때마다 실시간 자막 텍스트를 계속 내보내는 흐름과는 다릅니다. OpenAI는 그러한 연속 흐름에 GPT Live Transcribe라는 이름을 사용합니다.\n\n여러 턴에서는 해당 전사문과 함께 입력 항목 식별자를 보존하세요. OpenAI는 서로 다른 턴의 완료 이벤트가 발화 순서대로 도착하지 않을 수 있다고 경고합니다. 따라서 완료 시각만으로 대화를 정렬하지 말고 각 최종 결과를 커밋한 입력과 연결하세요. 유용한 산출물은 올바른 최종 항목을 모아 순서대로 구성한 전사문이며, 중간 텍스트는 별도로 완료된 발화가 아닌 진행 상황으로 취급해야 합니다.\n\n### 특수 출력과 실질적인 한계\n\n이 사양은 자막, 타임스탬프, 번역, 화자 라벨에 대한 보편적인 계약을 제공하지 않습니다. OpenAI의 마이그레이션 가이드는 이러한 특수 기능을 구분합니다. 모델 고유의 자막 형식과 단어별 시간 정보에는 호환되는 모델과 형식이 필요하며, 화자 라벨에는 GPT-4o Transcribe Diarize를 사용합니다. GPT Transcribe의 파일 결과는 JSON이며 SRT, VTT, 상세 타임스탬프 응답을 그대로 대체하는 형식이 아닙니다. 정확한 모델 카드는 수치로 된 컨텍스트나 최대 출력 한도를 공개하지 않으므로, 오디오 전사에 채팅 모델의 토큰 창을 가정해서는 안 됩니다.\n\n어려운 어휘, 숫자, 억양, 배경 소음, 언어 전환을 녹음에 대조해 검토하세요. 관련 힌트가 말하지 않은 용어를 삽입하지 않으면서 인식을 개선했는지, 최종 전사문이 오디오 끝까지 포함하는지 확인하세요. 다국어 결과에서는 번역본을 준비하기 전에 실제 발화 표현을 보존하세요. 이러한 검증은 맥락 힌트, 감지한 언어, 인식한 발화를 명확히 구분하면서 전사문을 원자료로 활용할 수 있게 합니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "2a89bd6bb55ec7b3afcb34e17b084e47ec927d677326ca8d38c2cced63939763",
    "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\">OpenAI: GPT Transcribe</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-transcribe</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-transcribe\">음성 인식</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 Transcribe는 녹음된 음성을 원래 언어의 텍스트로 변환하며, 맥락을 제공하는 프롬프트, 실제 단어나 구를 지정하는 키워드 힌트, 여러 언어 힌트를 사용할 수 있습니다. OpenAI는 완성된 파일의 전사, 파일 결과 스트리밍, Realtime에서 커밋한 오디오 턴의 전사를 문서화합니다.</p><dl class=\"card-io\" data-card-io><div><dt>허용 입력</dt><dd>오디오</dd></div><div><dt>결과</dt><dd>텍스트</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 Transcribe는 완성된 오디오 파일, 스트리밍되는 파일 전사 결과, Realtime 세션에서 커밋한 오디오 턴을 위한 OpenAI의 음성 인식 모델입니다. 선택적인 텍스트 맥락과 함께 오디오를 입력받아 인식한 텍스트를 반환합니다. 제조사는 전문 용어, 다국어 녹음, 발화 중 언어 전환을 포함하여 녹음된 음성을 원래 언어로 정확하게 전사하는 용도로 소개합니다. 유용한 출력은 녹음과의 연결을 유지하는 전사문이며, 모델이 신뢰할 만한 예측을 할 수 있는 경우 감지한 언어의 메타데이터가 포함됩니다.</p><h4>완성된 녹음 준비하기</h4><p>OpenAI의 파일 전사 흐름은 최대 25 MB의 업로드를 받습니다. 현재 엔드포인트 참조 문서는 FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV, WebM 입력 형식을 명시하며, 적절한 파일명 확장자와 콘텐츠 유형을 포함해 형식을 식별할 수 있는 충분한 파일 메타데이터를 권장합니다. 더 큰 녹음은 압축하거나 25 MB 이하의 파일로 나누는 것이 가이드의 권장 사항입니다. 주변 발화를 제거하면 인식 정확도가 낮아질 수 있으므로 문장 중간을 자르지 마세요. 조각의 순서를 유지하고 원래 녹음에서의 위치를 보존하세요.</p><p>회의, 인터뷰, 녹음된 발표에서는 실제 오디오를 제공하고 주제와 발화될 가능성이 있는 용어를 지정하세요. 유용한 결과는 논의에서 추론한 요약이 아니라 실제로 인식한 표현입니다. 반환된 텍스트와 함께 녹음 식별자를 보존하여 이름, 숫자, 불확실한 구절을 검토하는 사람이 올바른 원자료로 돌아갈 수 있게 하세요. 전사문은 이후 별도의 요약, 번역, 편집 작업을 위한 자료가 될 수 있습니다.</p><h4>맥락, 키워드 힌트, 예상 언어</h4><p>제조사는 세 가지 안내를 구분합니다. 프롬프트는 녹음의 주제나 상황에 대한 자유 형식의 맥락을 제공합니다. 키워드는 발화에서 예상하는 실제 단어나 구를 지정합니다. languages 목록은 예상하는 발화 언어를 나타냅니다. 두 언어를 사용하는 제품 논의에서는 프롬프트에 상황을 설명하고, 관련 제품명을 키워드로 나열하며, 예상 언어를 제공하세요. 이는 인식 힌트이며, 아무도 말하지 않은 어휘를 삽입하라는 지시가 아닙니다.</p><p>GPT Transcribe는 이전의 단수형 language 필드 대신 복수형 languages 필드를 사용합니다. OpenAI는 두 필드를 함께 보내지 말라고 명시합니다. 가이드는 지원되는 ISO 639-1 코드, 일부 ISO 639-3 코드, 중국어 지역 로케일 코드를 허용하며, 지원하지 않거나 형식이 잘못된 값은 거부합니다. 각 키워드는 한 줄이어야 하며 꺾쇠괄호, 캐리지 리턴, 줄바꿈을 포함해서는 안 됩니다. 잘못된 키워드나 너무 긴 프롬프트로 요청 전체가 거부될 수 있습니다. 관련 맥락만 제공하고, 힌트 목록을 전사문으로 취급하지 말고 힌트로 지정한 이름이 실제 오디오에 나오는지 확인하세요.</p><h4>JSON 출력과 감지 언어 예측</h4><p>문서화된 파일 결과는 전사문과 감지한 언어를 포함하는 JSON입니다. 이러한 언어 예측은 모델의 출력이며, 제공된 언어 힌트를 복사한 것이 아닙니다. 모델이 신뢰할 만한 예측을 할 수 없으면 빈 언어 목록도 유효한 결과입니다. 이는 녹음이 무음이었다거나 전사가 실패했다는 근거가 아닙니다. 이후 처리에서 각각의 의미에 맞게 사용할 수 있도록 인식된 텍스트와 언어 메타데이터를 분리해 보존하세요.</p><h4>파일 전사 결과 스트리밍하기</h4><p>완성된 파일을 처리하는 동안 전사 텍스트를 점진적으로 출력할 수 있습니다. OpenAI는 부분 텍스트를 위한 transcript.text.delta 이벤트와 파일 전체 전사문을 위한 transcript.text.done 이벤트를 문서화합니다. 최종 이벤트에는 감지한 언어도 포함됩니다. 이는 이미 제공된 녹음의 출력을 스트리밍하는 방식입니다. 긴 업로드의 진행 상황을 표시하는 데 유용하며, 최종 이벤트는 완료된 결과로 보존할 텍스트를 확정합니다.</p><h4>Realtime 세션에서 커밋한 턴</h4><p>GPT Transcribe에는 WebSocket을 사용하는 전용 Realtime 흐름도 있습니다. 입력 버퍼에 오디오를 추가한 뒤 애플리케이션이 오디오 턴을 명시적으로 커밋합니다. 커밋한 청크의 전사가 시작되며, 완료 이벤트 전에 델타가 나올 수 있고 감지한 언어 정보도 포함됩니다. 이 제조사 세션 흐름에서 모델은 앞서 전사한 턴을 자동으로 맥락으로 사용합니다. 이는 마이크 오디오가 도착할 때마다 실시간 자막 텍스트를 계속 내보내는 흐름과는 다릅니다. OpenAI는 그러한 연속 흐름에 GPT Live Transcribe라는 이름을 사용합니다.</p><p>여러 턴에서는 해당 전사문과 함께 입력 항목 식별자를 보존하세요. OpenAI는 서로 다른 턴의 완료 이벤트가 발화 순서대로 도착하지 않을 수 있다고 경고합니다. 따라서 완료 시각만으로 대화를 정렬하지 말고 각 최종 결과를 커밋한 입력과 연결하세요. 유용한 산출물은 올바른 최종 항목을 모아 순서대로 구성한 전사문이며, 중간 텍스트는 별도로 완료된 발화가 아닌 진행 상황으로 취급해야 합니다.</p><h4>특수 출력과 실질적인 한계</h4><p>이 사양은 자막, 타임스탬프, 번역, 화자 라벨에 대한 보편적인 계약을 제공하지 않습니다. OpenAI의 마이그레이션 가이드는 이러한 특수 기능을 구분합니다. 모델 고유의 자막 형식과 단어별 시간 정보에는 호환되는 모델과 형식이 필요하며, 화자 라벨에는 GPT-4o Transcribe Diarize를 사용합니다. GPT Transcribe의 파일 결과는 JSON이며 SRT, VTT, 상세 타임스탬프 응답을 그대로 대체하는 형식이 아닙니다. 정확한 모델 카드는 수치로 된 컨텍스트나 최대 출력 한도를 공개하지 않으므로, 오디오 전사에 채팅 모델의 토큰 창을 가정해서는 안 됩니다.</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>text</code></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><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-transcribe</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>object</code></td><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=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr></tbody></table></div><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>application/json</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, input_audio</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>material_conditions</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>이 예제는 비어 있지 않은 실제 PCM WAV 파일을 읽고, 파일의 전체 바이트를 base64로 인코딩한 다음 input_audio.format을 wav로 전송합니다.</td></tr></tbody></table></div><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></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>입력 오디오(초)</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>$0.00015</b> <span class=\"price-unit\">입력 오디오 초당</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-2158-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2158-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · 실제 WAV 파일과 원본 결과 전체</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-2158-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2158-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 PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;openai/gpt-transcribe&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#39;}}\nPath(&#39;request.json&#39;).write_text(json.dumps(request, ensure_ascii=False), encoding=&#39;utf-8&#39;)\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; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\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><div class=\"card-result-process\" data-all-results><h5>완료된 결과 모두 보관</h5><p class=\"note-s\">반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.</p><p class=\"note-s\">전체 응답과 헤더, 실제로 생성된 모든 출력, 최초로 반환된 식별자와 모든 사용량 필드를 보관하세요. 생성 요청을 다시 제출하지 말고 최초 작업을 복구하세요.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>원래 응답을 확인해야 할 경우</h5><p class=\"note-s\">실제 X-Client-Request-ID와 응답 전체를 보존하세요. 원래 소유 자산과 해당 자산의 정확한 서명된 콘텐츠 URL을 조회하세요. 생성 여부가 불확실한 요청을 절대로 다시 제출하지 마세요.</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 (when present)</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span></td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span></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>JSON 본문 또는 명시적인 표준 모델 ID가 유효하지 않습니다.</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>401 · <code>authentication_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>Ailoot API 키가 유효하지 않습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>사용 권한이 있는 Ailoot API 키를 사용하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>403 · <code>permission_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>404 · <code>not_found_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>422 · <code>price_unavailable</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>503 · <code></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>502 · <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-transcribe&amp;route=Ultra&amp;caller=openai%2Fgpt-transcribe&amp;fmt=transcriptions\"><code>openai/gpt-transcribe</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-transcribe&amp;route=Ultra&amp;caller=openai%2Fgpt-transcribe&amp;fmt=transcriptions\"><code>openai/gpt-transcribe</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-transcribe",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-transcribe",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "JSON 본문 또는 명시적인 표준 모델 ID가 유효하지 않습니다.",
                "http_status": 400,
                "recovery": "응답을 보존하고 표시된 요청 필드를 수정하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ailoot API 키가 유효하지 않습니다.",
                "http_status": 401,
                "recovery": "사용 권한이 있는 Ailoot API 키를 사용하세요.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "이 키 그룹은 해당 메서드를 허용하지 않습니다.",
                "http_status": 403,
                "recovery": "반환된 오류 세부 정보를 보존하세요.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "선택한 메서드에는 허용된 경로가 없습니다.",
                "http_status": 404,
                "recovery": "반환된 오류 세부 정보를 보존하세요.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "승인된 요금제에서 필요한 입력 수량 또는 상한을 확보할 수 없습니다.",
                "http_status": 422,
                "recovery": "응답을 보존하세요. 승인된 요금제에서 요구하는 입력 표현 형식을 사용하세요.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "필요한 저장소, 경로, 메서드 요금 또는 예약을 사용할 수 없습니다.",
                "http_status": 503,
                "recovery": "원본 응답 전체를 보존하세요. 예약 여부가 불확실하다고 해서 다시 제출할 수 있는 것은 아닙니다.",
                "type": null
              },
              {
                "code": null,
                "condition": "원래 결과, 사용량 또는 정산을 확인해야 합니다.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "실제 요청 ID와 원본 응답을 보존하세요. 기존 소유 기록을 조회하고 생성을 다시 제출하지 마세요.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "실제 X-Client-Request-ID와 응답 전체를 보존하세요. 원래 소유 자산과 해당 자산의 정확한 서명된 콘텐츠 URL을 조회하세요. 생성 여부가 불확실한 요청을 절대로 다시 제출하지 마세요."
            },
            "outputs": {
              "all_results": "전체 응답과 헤더, 실제로 생성된 모든 출력, 최초로 반환된 식별자와 모든 사용량 필드를 보관하세요. 생성 요청을 다시 제출하지 말고 최초 작업을 복구하세요.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "원본 응답 본문 전체, 상태 및 전달된 헤더입니다. 이 핸들러는 공통 JSON 구조, 텍스트 필드 또는 작업 바깥 구조를 추가하지 않습니다."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "openai/gpt-transcribe"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "openai/gpt-transcribe"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "openai/gpt-transcribe"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "이 예제는 비어 있지 않은 실제 PCM WAV 파일을 읽고, 파일의 전체 바이트를 base64로 인코딩한 다음 input_audio.format을 wav로 전송합니다."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "기존 소유 미디어 기록의 정확한 task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "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": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'openai/gpt-transcribe', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "음성 전사",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "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_second": 0.00015
          }
        },
        "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": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "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.00015",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00015",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "openai/gpt-transcribe",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "db47e699f2e6c60ebf94fd4d25744b19fdc4af011f3c3b5169427550fc1b4e3f",
    "input_html_sha256": "bcfe0235c74b6d5d2d194a20e6e0dcd79ba799b90945cea81ec6142ea84210bf",
    "private_audit_sha256": "80b8be8a75d235fbb6da85ff42a24f0c14c362efa07a1bdc6056d04e0b4f333a",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/openai-gpt-transcribe/",
    "description": "GPT Transcribe는 녹음된 음성을 원래 언어의 텍스트로 변환하며, 맥락을 제공하는 프롬프트, 실제 단어나 구를 지정하는 키워드 힌트, 여러 언어 힌트를 사용할 수 있습니다. OpenAI는 완성된 파일의 전사, 파일 결과 스트리밍, Realtime에서 커밋한 오디오 턴의 전사를 문서화합니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/openai-gpt-transcribe/index.md",
    "title": "OpenAI: GPT Transcribe — Ailoot",
    "url": "https://ailoot.ai/models/ko/openai-gpt-transcribe/"
  },
  "rawModel": {
    "about": "GPT Transcribe는 완성된 오디오 파일, 스트리밍되는 파일 전사 결과, Realtime 세션에서 커밋한 오디오 턴을 위한 OpenAI의 음성 인식 모델입니다. 선택적인 텍스트 맥락과 함께 오디오를 입력받아 인식한 텍스트를 반환합니다. 제조사는 전문 용어, 다국어 녹음, 발화 중 언어 전환을 포함하여 녹음된 음성을 원래 언어로 정확하게 전사하는 용도로 소개합니다. 유용한 출력은 녹음과의 연결을 유지하는 전사문이며, 모델이 신뢰할 만한 예측을 할 수 있는 경우 감지한 언어의 메타데이터가 포함됩니다.\n\n### 완성된 녹음 준비하기\n\nOpenAI의 파일 전사 흐름은 최대 25 MB의 업로드를 받습니다. 현재 엔드포인트 참조 문서는 FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV, WebM 입력 형식을 명시하며, 적절한 파일명 확장자와 콘텐츠 유형을 포함해 형식을 식별할 수 있는 충분한 파일 메타데이터를 권장합니다. 더 큰 녹음은 압축하거나 25 MB 이하의 파일로 나누는 것이 가이드의 권장 사항입니다. 주변 발화를 제거하면 인식 정확도가 낮아질 수 있으므로 문장 중간을 자르지 마세요. 조각의 순서를 유지하고 원래 녹음에서의 위치를 보존하세요.\n\n회의, 인터뷰, 녹음된 발표에서는 실제 오디오를 제공하고 주제와 발화될 가능성이 있는 용어를 지정하세요. 유용한 결과는 논의에서 추론한 요약이 아니라 실제로 인식한 표현입니다. 반환된 텍스트와 함께 녹음 식별자를 보존하여 이름, 숫자, 불확실한 구절을 검토하는 사람이 올바른 원자료로 돌아갈 수 있게 하세요. 전사문은 이후 별도의 요약, 번역, 편집 작업을 위한 자료가 될 수 있습니다.\n\n### 맥락, 키워드 힌트, 예상 언어\n\n제조사는 세 가지 안내를 구분합니다. 프롬프트는 녹음의 주제나 상황에 대한 자유 형식의 맥락을 제공합니다. 키워드는 발화에서 예상하는 실제 단어나 구를 지정합니다. languages 목록은 예상하는 발화 언어를 나타냅니다. 두 언어를 사용하는 제품 논의에서는 프롬프트에 상황을 설명하고, 관련 제품명을 키워드로 나열하며, 예상 언어를 제공하세요. 이는 인식 힌트이며, 아무도 말하지 않은 어휘를 삽입하라는 지시가 아닙니다.\n\nGPT Transcribe는 이전의 단수형 language 필드 대신 복수형 languages 필드를 사용합니다. OpenAI는 두 필드를 함께 보내지 말라고 명시합니다. 가이드는 지원되는 ISO 639-1 코드, 일부 ISO 639-3 코드, 중국어 지역 로케일 코드를 허용하며, 지원하지 않거나 형식이 잘못된 값은 거부합니다. 각 키워드는 한 줄이어야 하며 꺾쇠괄호, 캐리지 리턴, 줄바꿈을 포함해서는 안 됩니다. 잘못된 키워드나 너무 긴 프롬프트로 요청 전체가 거부될 수 있습니다. 관련 맥락만 제공하고, 힌트 목록을 전사문으로 취급하지 말고 힌트로 지정한 이름이 실제 오디오에 나오는지 확인하세요.\n\n### JSON 출력과 감지 언어 예측\n\n문서화된 파일 결과는 전사문과 감지한 언어를 포함하는 JSON입니다. 이러한 언어 예측은 모델의 출력이며, 제공된 언어 힌트를 복사한 것이 아닙니다. 모델이 신뢰할 만한 예측을 할 수 없으면 빈 언어 목록도 유효한 결과입니다. 이는 녹음이 무음이었다거나 전사가 실패했다는 근거가 아닙니다. 이후 처리에서 각각의 의미에 맞게 사용할 수 있도록 인식된 텍스트와 언어 메타데이터를 분리해 보존하세요.\n\n### 파일 전사 결과 스트리밍하기\n\n완성된 파일을 처리하는 동안 전사 텍스트를 점진적으로 출력할 수 있습니다. OpenAI는 부분 텍스트를 위한 transcript.text.delta 이벤트와 파일 전체 전사문을 위한 transcript.text.done 이벤트를 문서화합니다. 최종 이벤트에는 감지한 언어도 포함됩니다. 이는 이미 제공된 녹음의 출력을 스트리밍하는 방식입니다. 긴 업로드의 진행 상황을 표시하는 데 유용하며, 최종 이벤트는 완료된 결과로 보존할 텍스트를 확정합니다.\n\n### Realtime 세션에서 커밋한 턴\n\nGPT Transcribe에는 WebSocket을 사용하는 전용 Realtime 흐름도 있습니다. 입력 버퍼에 오디오를 추가한 뒤 애플리케이션이 오디오 턴을 명시적으로 커밋합니다. 커밋한 청크의 전사가 시작되며, 완료 이벤트 전에 델타가 나올 수 있고 감지한 언어 정보도 포함됩니다. 이 제조사 세션 흐름에서 모델은 앞서 전사한 턴을 자동으로 맥락으로 사용합니다. 이는 마이크 오디오가 도착할 때마다 실시간 자막 텍스트를 계속 내보내는 흐름과는 다릅니다. OpenAI는 그러한 연속 흐름에 GPT Live Transcribe라는 이름을 사용합니다.\n\n여러 턴에서는 해당 전사문과 함께 입력 항목 식별자를 보존하세요. OpenAI는 서로 다른 턴의 완료 이벤트가 발화 순서대로 도착하지 않을 수 있다고 경고합니다. 따라서 완료 시각만으로 대화를 정렬하지 말고 각 최종 결과를 커밋한 입력과 연결하세요. 유용한 산출물은 올바른 최종 항목을 모아 순서대로 구성한 전사문이며, 중간 텍스트는 별도로 완료된 발화가 아닌 진행 상황으로 취급해야 합니다.\n\n### 특수 출력과 실질적인 한계\n\n이 사양은 자막, 타임스탬프, 번역, 화자 라벨에 대한 보편적인 계약을 제공하지 않습니다. OpenAI의 마이그레이션 가이드는 이러한 특수 기능을 구분합니다. 모델 고유의 자막 형식과 단어별 시간 정보에는 호환되는 모델과 형식이 필요하며, 화자 라벨에는 GPT-4o Transcribe Diarize를 사용합니다. GPT Transcribe의 파일 결과는 JSON이며 SRT, VTT, 상세 타임스탬프 응답을 그대로 대체하는 형식이 아닙니다. 정확한 모델 카드는 수치로 된 컨텍스트나 최대 출력 한도를 공개하지 않으므로, 오디오 전사에 채팅 모델의 토큰 창을 가정해서는 안 됩니다.\n\n어려운 어휘, 숫자, 억양, 배경 소음, 언어 전환을 녹음에 대조해 검토하세요. 관련 힌트가 말하지 않은 용어를 삽입하지 않으면서 인식을 개선했는지, 최종 전사문이 오디오 끝까지 포함하는지 확인하세요. 다국어 결과에서는 번역본을 준비하기 전에 실제 발화 표현을 보존하세요. 이러한 검증은 맥락 힌트, 감지한 언어, 인식한 발화를 명확히 구분하면서 전사문을 원자료로 활용할 수 있게 합니다.",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00015",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00015",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "구성의 전체 요금 정보는 상세 정보에서 확인할 수 있습니다."
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "openai/gpt-transcribe",
    "input": [
      "audio"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "JSON 본문 또는 명시적인 표준 모델 ID가 유효하지 않습니다.",
                "http_status": 400,
                "recovery": "응답을 보존하고 표시된 요청 필드를 수정하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ailoot API 키가 유효하지 않습니다.",
                "http_status": 401,
                "recovery": "사용 권한이 있는 Ailoot API 키를 사용하세요.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "이 키 그룹은 해당 메서드를 허용하지 않습니다.",
                "http_status": 403,
                "recovery": "반환된 오류 세부 정보를 보존하세요.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "선택한 메서드에는 허용된 경로가 없습니다.",
                "http_status": 404,
                "recovery": "반환된 오류 세부 정보를 보존하세요.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "승인된 요금제에서 필요한 입력 수량 또는 상한을 확보할 수 없습니다.",
                "http_status": 422,
                "recovery": "응답을 보존하세요. 승인된 요금제에서 요구하는 입력 표현 형식을 사용하세요.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "필요한 저장소, 경로, 메서드 요금 또는 예약을 사용할 수 없습니다.",
                "http_status": 503,
                "recovery": "원본 응답 전체를 보존하세요. 예약 여부가 불확실하다고 해서 다시 제출할 수 있는 것은 아닙니다.",
                "type": null
              },
              {
                "code": null,
                "condition": "원래 결과, 사용량 또는 정산을 확인해야 합니다.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "실제 요청 ID와 원본 응답을 보존하세요. 기존 소유 기록을 조회하고 생성을 다시 제출하지 마세요.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "실제 X-Client-Request-ID와 응답 전체를 보존하세요. 원래 소유 자산과 해당 자산의 정확한 서명된 콘텐츠 URL을 조회하세요. 생성 여부가 불확실한 요청을 절대로 다시 제출하지 마세요."
            },
            "outputs": {
              "all_results": "전체 응답과 헤더, 실제로 생성된 모든 출력, 최초로 반환된 식별자와 모든 사용량 필드를 보관하세요. 생성 요청을 다시 제출하지 말고 최초 작업을 복구하세요.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "원본 응답 본문 전체, 상태 및 전달된 헤더입니다. 이 핸들러는 공통 JSON 구조, 텍스트 필드 또는 작업 바깥 구조를 추가하지 않습니다."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "openai/gpt-transcribe"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "openai/gpt-transcribe"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "openai/gpt-transcribe"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "이 예제는 비어 있지 않은 실제 PCM WAV 파일을 읽고, 파일의 전체 바이트를 base64로 인코딩한 다음 input_audio.format을 wav로 전송합니다."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "기존 소유 미디어 기록의 정확한 task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "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": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'openai/gpt-transcribe', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "음성 전사",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "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_second": 0.00015
          }
        },
        "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": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "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.00015",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00015",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "openai/gpt-transcribe",
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra"
      }
    ],
    "name": "OpenAI: GPT Transcribe",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "GPT Transcribe는 녹음된 음성을 원래 언어의 텍스트로 변환하며, 맥락을 제공하는 프롬프트, 실제 단어나 구를 지정하는 키워드 힌트, 여러 언어 힌트를 사용할 수 있습니다. OpenAI는 완성된 파일의 전사, 파일 결과 스트리밍, Realtime에서 커밋한 오디오 턴의 전사를 문서화합니다."
  },
  "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 Transcribe는 녹음된 음성을 원래 언어의 텍스트로 변환하며, 맥락을 제공하는 프롬프트, 실제 단어나 구를 지정하는 키워드 힌트, 여러 언어 힌트를 사용할 수 있습니다. OpenAI는 완성된 파일의 전사, 파일 결과 스트리밍, Realtime에서 커밋한 오디오 턴의 전사를 문서화합니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "5a79879cbc0ac713eb73671be04e379c61bfbc8f4ccb2771d279a0bb8e0c6bc8",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "3f3d3a82e45ff85497770301ef43df83e67259883e556b8319960f8c15a74a21"
}
