{
  "aboutHtml": "<p>Universal-3.5 Pro는 녹음된 음성을 텍스트로 변환하는 AssemblyAI의 음성 인식 모델입니다. Sync 프로필에서는 짧은 오디오 클립으로부터 한 번의 응답으로 완성된 전사문을 생성합니다. 이는 음성 메시지, 눌러서 말하기 입력, 애플리케이션이 녹음 종료 시점을 이미 알고 있는 개별 대화 턴에 적합합니다.</p><p>오디오를 범위가 정해진 클립으로 준비하세요. AssemblyAI의 Sync 요구 사항은 80밀리초에서 120초까지의 길이를 허용하며, 최대 파일 크기는 40 MB입니다. 지원 형식은 WAV 또는 부호 있는 16비트 리틀 엔디언 원시 PCM입니다. 오디오는 모노나 스테레오일 수 있으며, 스테레오는 내부적으로 다운믹스됩니다. 지원 샘플 레이트는 8, 16, 22.05, 24, 32, 44.1, 48 kHz입니다. WAV 헤더는 샘플 레이트와 채널 수를 제공하며, 원시 PCM에서는 이 값을 전사 설정에 별도로 제공해야 합니다.</p><p>발화 전체를 녹음하고 말의 시작과 끝을 온전히 유지하세요. 유용한 원본 작업 예시는 제품 이름, 주문 식별자, 요청을 담은 짧은 제품 지원 음성 메시지입니다. 중요한 세부 사항을 전사문과 대조할 수 있도록 원본 클립을 보존하세요. 더 긴 녹음에는 장문 전사에 적합한 워크플로를 준비하세요. 짧은 클립의 길이 제한을 모델 전체의 오디오 처리 용량으로 해석해서는 안 됩니다.</p><p>결과에는 전체 전사문, 단어별 신뢰도가 있는 단어 목록, 0에서 1 사이의 전체 신뢰도가 포함됩니다. 제출한 오디오의 길이와 요청 식별자도 제공되므로 텍스트를 원본 클립과 연결해 유지할 수 있습니다. 단어 신뢰도를 이용해 청취 검토가 필요한 구절을 찾으세요. 특히 애플리케이션에서 중요한 이름, 숫자, 분야별 어휘를 살펴보세요.</p><p>단어 타임스탬프는 선택 사항이며 기본값은 꺼짐입니다. 요청하면 정렬된 각 단어에 클립 시작을 기준으로 한 시작 및 종료 시점이 밀리초 단위로 포함될 수 있습니다. 제작사의 프로필은 단어를 정렬할 수 없을 때 대략적인 시간을 만들어 넣는 대신 해당 값을 비워둡니다. 타임스탬프 정확도는 영어 오디오에서 가장 높습니다. 단어 강조 표시, 검색 가능한 파형, 자막 정렬을 준비할 때 누락된 타이밍을 명시적으로 유지하고, 완성된 자막 트랙으로 사용하기 전에 텍스트를 녹음과 비교하세요.</p><p>컨텍스트 프롬프트는 녹음이 무엇에 관한 것인지 설명합니다. 분야, 상황, 애플리케이션이 이미 알고 있는 구체적인 세부 사항을 지정할 수 있으며 최대 길이는 6000자입니다. 특정 기기에 관한 기술 지원 대화처럼 오디오에 맞는 짧은 설명으로 시작하세요. 프롬프트는 인식 컨텍스트를 제공합니다. 화자의 메시지를 다른 문서로 다시 쓰라는 요청은 아닙니다.</p><p>별도의 주요 용어 목록은 특정 어휘를 우선적으로 인식하도록 유도합니다. Sync 프로필은 최대 100개 용어와 목록 전체에 걸쳐 8000자를 허용합니다. 드문 이름, 약어, 제품 용어는 정확한 철자를 사용하고, 일반적으로 잘 인식되는 단어는 목록에서 제외하세요. 크거나 불필요한 용어 목록은 과도한 교정을 유발할 수 있으므로 녹음에서 중요한 단어에 집중하세요. 컨텍스트 설명과 어휘 목록은 함께 사용할 수 있습니다.</p><p>이전 대화도 짧은 답변을 해석하는 데 도움을 줄 수 있습니다. 이전 발화를 오래된 것부터 최신 순으로 제공하되, 현재 오디오는 전사 대상 턴으로 유지하세요. 문서에 명시된 컨텍스트 허용량은 500턴 또는 총 16,000자입니다. 이 한도나 사용 가능한 모델 컨텍스트를 초과하면 가장 오래된 항목부터 제거됩니다. 짧은 답변에 앞선 질문으로부터 의미가 정해지는 식별자나 지시 표현이 들어 있을 때 유용합니다.</p><p>언어 선택은 하나 이상의 예상 언어를 우선적으로 인식하도록 유도합니다. 현재 Sync 인터페이스는 32개 언어 코드를 허용하며, 언어를 지정하지 않으면 영어가 기본값입니다. 언어가 섞인 오디오에서는 예상 언어를 나열하세요. 사용자 정의 컨텍스트 프롬프트는 관리형 기본 프롬프트를 대체하고 별도의 언어 코드 유도 설정보다 우선하므로, 언어와 상황 컨텍스트가 모두 필요하면 해당 프롬프트 안에 예상 언어를 명시하세요. 전사를 번역 지침으로 취급하지 말고 실제로 말한 언어로 전사문을 유지하세요.</p><p>이 모델은 다른 AssemblyAI 전사 워크플로에도 등장하지만, Sync 프로필의 짧은 클립 요구 사항과 결과 필드는 이 특정 인터페이스에 속합니다. 제작사의 Dictation 워크플로는 별도의 텍스트 정리 단계를 추가합니다. 전사문과 다시 쓴 메시지는 서로 다른 결과물입니다. 이후 편집이나 요약 단계에서 정리된 버전을 만들더라도 인식된 음성을 보존해 원래 표현을 계속 비교할 수 있도록 하세요.</p><p>유용한 결과물로는 음성 메시지 전사문, 어시스턴트용으로 완성된 턴, 짧고 검색 가능한 오디오 텍스트, 검토 인터페이스용 시간 정보가 포함된 단어 목록이 있습니다. 결정적인 단어를 녹음과 대조하고 누락된 정렬을 보존하며, 반환된 텍스트와 클립의 연결을 유지하세요. 인식 결과는 다음 애플리케이션 단계에 원본 근거가 있는 전사문을 제공합니다. 요청에 답하거나 메시지를 편집하는 작업은 주변 워크플로에 속합니다.</p>",
  "aboutText": "Universal-3.5 Pro는 녹음된 음성을 텍스트로 변환하는 AssemblyAI의 음성 인식 모델입니다. Sync 프로필에서는 짧은 오디오 클립으로부터 한 번의 응답으로 완성된 전사문을 생성합니다. 이는 음성 메시지, 눌러서 말하기 입력, 애플리케이션이 녹음 종료 시점을 이미 알고 있는 개별 대화 턴에 적합합니다.\n\n오디오를 범위가 정해진 클립으로 준비하세요. AssemblyAI의 Sync 요구 사항은 80밀리초에서 120초까지의 길이를 허용하며, 최대 파일 크기는 40 MB입니다. 지원 형식은 WAV 또는 부호 있는 16비트 리틀 엔디언 원시 PCM입니다. 오디오는 모노나 스테레오일 수 있으며, 스테레오는 내부적으로 다운믹스됩니다. 지원 샘플 레이트는 8, 16, 22.05, 24, 32, 44.1, 48 kHz입니다. WAV 헤더는 샘플 레이트와 채널 수를 제공하며, 원시 PCM에서는 이 값을 전사 설정에 별도로 제공해야 합니다.\n\n발화 전체를 녹음하고 말의 시작과 끝을 온전히 유지하세요. 유용한 원본 작업 예시는 제품 이름, 주문 식별자, 요청을 담은 짧은 제품 지원 음성 메시지입니다. 중요한 세부 사항을 전사문과 대조할 수 있도록 원본 클립을 보존하세요. 더 긴 녹음에는 장문 전사에 적합한 워크플로를 준비하세요. 짧은 클립의 길이 제한을 모델 전체의 오디오 처리 용량으로 해석해서는 안 됩니다.\n\n결과에는 전체 전사문, 단어별 신뢰도가 있는 단어 목록, 0에서 1 사이의 전체 신뢰도가 포함됩니다. 제출한 오디오의 길이와 요청 식별자도 제공되므로 텍스트를 원본 클립과 연결해 유지할 수 있습니다. 단어 신뢰도를 이용해 청취 검토가 필요한 구절을 찾으세요. 특히 애플리케이션에서 중요한 이름, 숫자, 분야별 어휘를 살펴보세요.\n\n단어 타임스탬프는 선택 사항이며 기본값은 꺼짐입니다. 요청하면 정렬된 각 단어에 클립 시작을 기준으로 한 시작 및 종료 시점이 밀리초 단위로 포함될 수 있습니다. 제작사의 프로필은 단어를 정렬할 수 없을 때 대략적인 시간을 만들어 넣는 대신 해당 값을 비워둡니다. 타임스탬프 정확도는 영어 오디오에서 가장 높습니다. 단어 강조 표시, 검색 가능한 파형, 자막 정렬을 준비할 때 누락된 타이밍을 명시적으로 유지하고, 완성된 자막 트랙으로 사용하기 전에 텍스트를 녹음과 비교하세요.\n\n컨텍스트 프롬프트는 녹음이 무엇에 관한 것인지 설명합니다. 분야, 상황, 애플리케이션이 이미 알고 있는 구체적인 세부 사항을 지정할 수 있으며 최대 길이는 6000자입니다. 특정 기기에 관한 기술 지원 대화처럼 오디오에 맞는 짧은 설명으로 시작하세요. 프롬프트는 인식 컨텍스트를 제공합니다. 화자의 메시지를 다른 문서로 다시 쓰라는 요청은 아닙니다.\n\n별도의 주요 용어 목록은 특정 어휘를 우선적으로 인식하도록 유도합니다. Sync 프로필은 최대 100개 용어와 목록 전체에 걸쳐 8000자를 허용합니다. 드문 이름, 약어, 제품 용어는 정확한 철자를 사용하고, 일반적으로 잘 인식되는 단어는 목록에서 제외하세요. 크거나 불필요한 용어 목록은 과도한 교정을 유발할 수 있으므로 녹음에서 중요한 단어에 집중하세요. 컨텍스트 설명과 어휘 목록은 함께 사용할 수 있습니다.\n\n이전 대화도 짧은 답변을 해석하는 데 도움을 줄 수 있습니다. 이전 발화를 오래된 것부터 최신 순으로 제공하되, 현재 오디오는 전사 대상 턴으로 유지하세요. 문서에 명시된 컨텍스트 허용량은 500턴 또는 총 16,000자입니다. 이 한도나 사용 가능한 모델 컨텍스트를 초과하면 가장 오래된 항목부터 제거됩니다. 짧은 답변에 앞선 질문으로부터 의미가 정해지는 식별자나 지시 표현이 들어 있을 때 유용합니다.\n\n언어 선택은 하나 이상의 예상 언어를 우선적으로 인식하도록 유도합니다. 현재 Sync 인터페이스는 32개 언어 코드를 허용하며, 언어를 지정하지 않으면 영어가 기본값입니다. 언어가 섞인 오디오에서는 예상 언어를 나열하세요. 사용자 정의 컨텍스트 프롬프트는 관리형 기본 프롬프트를 대체하고 별도의 언어 코드 유도 설정보다 우선하므로, 언어와 상황 컨텍스트가 모두 필요하면 해당 프롬프트 안에 예상 언어를 명시하세요. 전사를 번역 지침으로 취급하지 말고 실제로 말한 언어로 전사문을 유지하세요.\n\n이 모델은 다른 AssemblyAI 전사 워크플로에도 등장하지만, Sync 프로필의 짧은 클립 요구 사항과 결과 필드는 이 특정 인터페이스에 속합니다. 제작사의 Dictation 워크플로는 별도의 텍스트 정리 단계를 추가합니다. 전사문과 다시 쓴 메시지는 서로 다른 결과물입니다. 이후 편집이나 요약 단계에서 정리된 버전을 만들더라도 인식된 음성을 보존해 원래 표현을 계속 비교할 수 있도록 하세요.\n\n유용한 결과물로는 음성 메시지 전사문, 어시스턴트용으로 완성된 턴, 짧고 검색 가능한 오디오 텍스트, 검토 인터페이스용 시간 정보가 포함된 단어 목록이 있습니다. 결정적인 단어를 녹음과 대조하고 누락된 정렬을 보존하며, 반환된 텍스트와 클립의 연결을 유지하세요. 인식 결과는 다음 애플리케이션 단계에 원본 근거가 있는 전사문을 제공합니다. 요청에 답하거나 메시지를 편집하는 작업은 주변 워크플로에 속합니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "6f94631b6f0025ff952ed5fa0b21b55932a75397acdf37a36fb7595f1ae1e255",
    "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\">•</span><h2 id=\"sheet-title\">AssemblyAI: Universal-3.5 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>AssemblyAI /</span><code>assemblyai/universal-3-5-pro</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|assemblyai%2Funiversal-3-5-pro\">음성 인식</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\">Universal-3.5 Pro는 짧은 오디오 클립을 한 번의 응답으로 완성된 전사문으로 변환하는 AssemblyAI의 음성 텍스트 변환 모델입니다. Sync 프로필은 음성 입력과 눌러서 말하기 워크플로를 위해 단어 신뢰도, 선택적 단어 타임스탬프, 어휘 힌트, 이전 대화 컨텍스트를 추가합니다.</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>Universal-3.5 Pro는 녹음된 음성을 텍스트로 변환하는 AssemblyAI의 음성 인식 모델입니다. Sync 프로필에서는 짧은 오디오 클립으로부터 한 번의 응답으로 완성된 전사문을 생성합니다. 이는 음성 메시지, 눌러서 말하기 입력, 애플리케이션이 녹음 종료 시점을 이미 알고 있는 개별 대화 턴에 적합합니다.</p><p>오디오를 범위가 정해진 클립으로 준비하세요. AssemblyAI의 Sync 요구 사항은 80밀리초에서 120초까지의 길이를 허용하며, 최대 파일 크기는 40 MB입니다. 지원 형식은 WAV 또는 부호 있는 16비트 리틀 엔디언 원시 PCM입니다. 오디오는 모노나 스테레오일 수 있으며, 스테레오는 내부적으로 다운믹스됩니다. 지원 샘플 레이트는 8, 16, 22.05, 24, 32, 44.1, 48 kHz입니다. WAV 헤더는 샘플 레이트와 채널 수를 제공하며, 원시 PCM에서는 이 값을 전사 설정에 별도로 제공해야 합니다.</p><p>발화 전체를 녹음하고 말의 시작과 끝을 온전히 유지하세요. 유용한 원본 작업 예시는 제품 이름, 주문 식별자, 요청을 담은 짧은 제품 지원 음성 메시지입니다. 중요한 세부 사항을 전사문과 대조할 수 있도록 원본 클립을 보존하세요. 더 긴 녹음에는 장문 전사에 적합한 워크플로를 준비하세요. 짧은 클립의 길이 제한을 모델 전체의 오디오 처리 용량으로 해석해서는 안 됩니다.</p><p>결과에는 전체 전사문, 단어별 신뢰도가 있는 단어 목록, 0에서 1 사이의 전체 신뢰도가 포함됩니다. 제출한 오디오의 길이와 요청 식별자도 제공되므로 텍스트를 원본 클립과 연결해 유지할 수 있습니다. 단어 신뢰도를 이용해 청취 검토가 필요한 구절을 찾으세요. 특히 애플리케이션에서 중요한 이름, 숫자, 분야별 어휘를 살펴보세요.</p><p>단어 타임스탬프는 선택 사항이며 기본값은 꺼짐입니다. 요청하면 정렬된 각 단어에 클립 시작을 기준으로 한 시작 및 종료 시점이 밀리초 단위로 포함될 수 있습니다. 제작사의 프로필은 단어를 정렬할 수 없을 때 대략적인 시간을 만들어 넣는 대신 해당 값을 비워둡니다. 타임스탬프 정확도는 영어 오디오에서 가장 높습니다. 단어 강조 표시, 검색 가능한 파형, 자막 정렬을 준비할 때 누락된 타이밍을 명시적으로 유지하고, 완성된 자막 트랙으로 사용하기 전에 텍스트를 녹음과 비교하세요.</p><p>컨텍스트 프롬프트는 녹음이 무엇에 관한 것인지 설명합니다. 분야, 상황, 애플리케이션이 이미 알고 있는 구체적인 세부 사항을 지정할 수 있으며 최대 길이는 6000자입니다. 특정 기기에 관한 기술 지원 대화처럼 오디오에 맞는 짧은 설명으로 시작하세요. 프롬프트는 인식 컨텍스트를 제공합니다. 화자의 메시지를 다른 문서로 다시 쓰라는 요청은 아닙니다.</p><p>별도의 주요 용어 목록은 특정 어휘를 우선적으로 인식하도록 유도합니다. Sync 프로필은 최대 100개 용어와 목록 전체에 걸쳐 8000자를 허용합니다. 드문 이름, 약어, 제품 용어는 정확한 철자를 사용하고, 일반적으로 잘 인식되는 단어는 목록에서 제외하세요. 크거나 불필요한 용어 목록은 과도한 교정을 유발할 수 있으므로 녹음에서 중요한 단어에 집중하세요. 컨텍스트 설명과 어휘 목록은 함께 사용할 수 있습니다.</p><p>이전 대화도 짧은 답변을 해석하는 데 도움을 줄 수 있습니다. 이전 발화를 오래된 것부터 최신 순으로 제공하되, 현재 오디오는 전사 대상 턴으로 유지하세요. 문서에 명시된 컨텍스트 허용량은 500턴 또는 총 16,000자입니다. 이 한도나 사용 가능한 모델 컨텍스트를 초과하면 가장 오래된 항목부터 제거됩니다. 짧은 답변에 앞선 질문으로부터 의미가 정해지는 식별자나 지시 표현이 들어 있을 때 유용합니다.</p><p>언어 선택은 하나 이상의 예상 언어를 우선적으로 인식하도록 유도합니다. 현재 Sync 인터페이스는 32개 언어 코드를 허용하며, 언어를 지정하지 않으면 영어가 기본값입니다. 언어가 섞인 오디오에서는 예상 언어를 나열하세요. 사용자 정의 컨텍스트 프롬프트는 관리형 기본 프롬프트를 대체하고 별도의 언어 코드 유도 설정보다 우선하므로, 언어와 상황 컨텍스트가 모두 필요하면 해당 프롬프트 안에 예상 언어를 명시하세요. 전사를 번역 지침으로 취급하지 말고 실제로 말한 언어로 전사문을 유지하세요.</p><p>이 모델은 다른 AssemblyAI 전사 워크플로에도 등장하지만, Sync 프로필의 짧은 클립 요구 사항과 결과 필드는 이 특정 인터페이스에 속합니다. 제작사의 Dictation 워크플로는 별도의 텍스트 정리 단계를 추가합니다. 전사문과 다시 쓴 메시지는 서로 다른 결과물입니다. 이후 편집이나 요약 단계에서 정리된 버전을 만들더라도 인식된 음성을 보존해 원래 표현을 계속 비교할 수 있도록 하세요.</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>assemblyai/universal-3-5-pro</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.00025</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-1073-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1073-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-1073-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1073-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;assemblyai/universal-3-5-pro&#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=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-pro</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "assemblyai/universal-3-5-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|assemblyai%2Funiversal-3-5-pro",
      "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": [
                  "assemblyai/universal-3-5-pro"
                ],
                "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": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "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": "assemblyai/universal-3-5-pro"
              },
              "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.00025",
                "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.00025",
                "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': 'assemblyai/universal-3-5-pro', '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.00025
          }
        },
        "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.00025",
                "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.00025",
                "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": "assemblyai/universal-3-5-pro",
        "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.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "ca454c4b293c4ef306e67d7fd7eff6895f6a68ae91b0d30dd941f65f4be213a6",
    "input_html_sha256": "b83d07268841a385c163fa73a956eb6049a97cc051c897db6bf29b1118dc3704",
    "private_audit_sha256": "fe9f532554a5dc55af4c1a0b82ce7bc3f5c3ef2bd2c27bd4448b79c1a719f1d1",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/assemblyai-universal-3-5-pro/",
    "description": "Universal-3.5 Pro는 짧은 오디오 클립을 한 번의 응답으로 완성된 전사문으로 변환하는 AssemblyAI의 음성 텍스트 변환 모델입니다. Sync 프로필은 음성 입력과 눌러서 말하기 워크플로를 위해 단어 신뢰도, 선택적 단어 타임스탬프, 어휘 힌트, 이전 대화 컨텍스트를 추가합니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/assemblyai-universal-3-5-pro/index.md",
    "title": "AssemblyAI: Universal-3.5 Pro — Ailoot",
    "url": "https://ailoot.ai/models/ko/assemblyai-universal-3-5-pro/"
  },
  "rawModel": {
    "about": "Universal-3.5 Pro는 녹음된 음성을 텍스트로 변환하는 AssemblyAI의 음성 인식 모델입니다. Sync 프로필에서는 짧은 오디오 클립으로부터 한 번의 응답으로 완성된 전사문을 생성합니다. 이는 음성 메시지, 눌러서 말하기 입력, 애플리케이션이 녹음 종료 시점을 이미 알고 있는 개별 대화 턴에 적합합니다.\n\n오디오를 범위가 정해진 클립으로 준비하세요. AssemblyAI의 Sync 요구 사항은 80밀리초에서 120초까지의 길이를 허용하며, 최대 파일 크기는 40 MB입니다. 지원 형식은 WAV 또는 부호 있는 16비트 리틀 엔디언 원시 PCM입니다. 오디오는 모노나 스테레오일 수 있으며, 스테레오는 내부적으로 다운믹스됩니다. 지원 샘플 레이트는 8, 16, 22.05, 24, 32, 44.1, 48 kHz입니다. WAV 헤더는 샘플 레이트와 채널 수를 제공하며, 원시 PCM에서는 이 값을 전사 설정에 별도로 제공해야 합니다.\n\n발화 전체를 녹음하고 말의 시작과 끝을 온전히 유지하세요. 유용한 원본 작업 예시는 제품 이름, 주문 식별자, 요청을 담은 짧은 제품 지원 음성 메시지입니다. 중요한 세부 사항을 전사문과 대조할 수 있도록 원본 클립을 보존하세요. 더 긴 녹음에는 장문 전사에 적합한 워크플로를 준비하세요. 짧은 클립의 길이 제한을 모델 전체의 오디오 처리 용량으로 해석해서는 안 됩니다.\n\n결과에는 전체 전사문, 단어별 신뢰도가 있는 단어 목록, 0에서 1 사이의 전체 신뢰도가 포함됩니다. 제출한 오디오의 길이와 요청 식별자도 제공되므로 텍스트를 원본 클립과 연결해 유지할 수 있습니다. 단어 신뢰도를 이용해 청취 검토가 필요한 구절을 찾으세요. 특히 애플리케이션에서 중요한 이름, 숫자, 분야별 어휘를 살펴보세요.\n\n단어 타임스탬프는 선택 사항이며 기본값은 꺼짐입니다. 요청하면 정렬된 각 단어에 클립 시작을 기준으로 한 시작 및 종료 시점이 밀리초 단위로 포함될 수 있습니다. 제작사의 프로필은 단어를 정렬할 수 없을 때 대략적인 시간을 만들어 넣는 대신 해당 값을 비워둡니다. 타임스탬프 정확도는 영어 오디오에서 가장 높습니다. 단어 강조 표시, 검색 가능한 파형, 자막 정렬을 준비할 때 누락된 타이밍을 명시적으로 유지하고, 완성된 자막 트랙으로 사용하기 전에 텍스트를 녹음과 비교하세요.\n\n컨텍스트 프롬프트는 녹음이 무엇에 관한 것인지 설명합니다. 분야, 상황, 애플리케이션이 이미 알고 있는 구체적인 세부 사항을 지정할 수 있으며 최대 길이는 6000자입니다. 특정 기기에 관한 기술 지원 대화처럼 오디오에 맞는 짧은 설명으로 시작하세요. 프롬프트는 인식 컨텍스트를 제공합니다. 화자의 메시지를 다른 문서로 다시 쓰라는 요청은 아닙니다.\n\n별도의 주요 용어 목록은 특정 어휘를 우선적으로 인식하도록 유도합니다. Sync 프로필은 최대 100개 용어와 목록 전체에 걸쳐 8000자를 허용합니다. 드문 이름, 약어, 제품 용어는 정확한 철자를 사용하고, 일반적으로 잘 인식되는 단어는 목록에서 제외하세요. 크거나 불필요한 용어 목록은 과도한 교정을 유발할 수 있으므로 녹음에서 중요한 단어에 집중하세요. 컨텍스트 설명과 어휘 목록은 함께 사용할 수 있습니다.\n\n이전 대화도 짧은 답변을 해석하는 데 도움을 줄 수 있습니다. 이전 발화를 오래된 것부터 최신 순으로 제공하되, 현재 오디오는 전사 대상 턴으로 유지하세요. 문서에 명시된 컨텍스트 허용량은 500턴 또는 총 16,000자입니다. 이 한도나 사용 가능한 모델 컨텍스트를 초과하면 가장 오래된 항목부터 제거됩니다. 짧은 답변에 앞선 질문으로부터 의미가 정해지는 식별자나 지시 표현이 들어 있을 때 유용합니다.\n\n언어 선택은 하나 이상의 예상 언어를 우선적으로 인식하도록 유도합니다. 현재 Sync 인터페이스는 32개 언어 코드를 허용하며, 언어를 지정하지 않으면 영어가 기본값입니다. 언어가 섞인 오디오에서는 예상 언어를 나열하세요. 사용자 정의 컨텍스트 프롬프트는 관리형 기본 프롬프트를 대체하고 별도의 언어 코드 유도 설정보다 우선하므로, 언어와 상황 컨텍스트가 모두 필요하면 해당 프롬프트 안에 예상 언어를 명시하세요. 전사를 번역 지침으로 취급하지 말고 실제로 말한 언어로 전사문을 유지하세요.\n\n이 모델은 다른 AssemblyAI 전사 워크플로에도 등장하지만, Sync 프로필의 짧은 클립 요구 사항과 결과 필드는 이 특정 인터페이스에 속합니다. 제작사의 Dictation 워크플로는 별도의 텍스트 정리 단계를 추가합니다. 전사문과 다시 쓴 메시지는 서로 다른 결과물입니다. 이후 편집이나 요약 단계에서 정리된 버전을 만들더라도 인식된 음성을 보존해 원래 표현을 계속 비교할 수 있도록 하세요.\n\n유용한 결과물로는 음성 메시지 전사문, 어시스턴트용으로 완성된 턴, 짧고 검색 가능한 오디오 텍스트, 검토 인터페이스용 시간 정보가 포함된 단어 목록이 있습니다. 결정적인 단어를 녹음과 대조하고 누락된 정렬을 보존하며, 반환된 텍스트와 클립의 연결을 유지하세요. 인식 결과는 다음 애플리케이션 단계에 원본 근거가 있는 전사문을 제공합니다. 요청에 답하거나 메시지를 편집하는 작업은 주변 워크플로에 속합니다.",
    "alias_of": null,
    "aliases": [],
    "author": "AssemblyAI",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
    "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": [
                  "assemblyai/universal-3-5-pro"
                ],
                "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": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "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": "assemblyai/universal-3-5-pro"
              },
              "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.00025",
                "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.00025",
                "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': 'assemblyai/universal-3-5-pro', '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.00025
          }
        },
        "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.00025",
                "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.00025",
                "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": "assemblyai/universal-3-5-pro",
        "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.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "AssemblyAI: Universal-3.5 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Universal-3.5 Pro는 짧은 오디오 클립을 한 번의 응답으로 완성된 전사문으로 변환하는 AssemblyAI의 음성 텍스트 변환 모델입니다. Sync 프로필은 음성 입력과 눌러서 말하기 워크플로를 위해 단어 신뢰도, 선택적 단어 타임스탬프, 어휘 힌트, 이전 대화 컨텍스트를 추가합니다."
  },
  "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": "Universal-3.5 Pro는 짧은 오디오 클립을 한 번의 응답으로 완성된 전사문으로 변환하는 AssemblyAI의 음성 텍스트 변환 모델입니다. Sync 프로필은 음성 입력과 눌러서 말하기 워크플로를 위해 단어 신뢰도, 선택적 단어 타임스탬프, 어휘 힌트, 이전 대화 컨텍스트를 추가합니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "24a4a47932cda08a57aee054114b50785b422df9059cfce9f91c202a100bdcd6",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "4b24d9fecf14cd86ee7448554b3eeaa83040441d4cf09e1646f1d326083fcd0b"
}
