{
  "aboutHtml": "<p>Voyage Code 2는 소스 코드와 관련 텍스트의 수치 임베딩을 생성합니다. 개발자가 동작을 설명하거나 코드 조각을 제공하면 검색 시스템이 관련 구현을 찾는 의미 기반 코드 검색용으로 설계되었습니다. 개발사의 예시는 자연어 질문, 코드 조각, 두 가지를 결합한 검색 입력을 다룹니다.</p><p>실제 개발 질문을 중심으로 리포지토리 검색 환경을 만드세요. 개발자는 일치하는 문자 중 첫 번째와 마지막 문자만 제거하는 루틴이나, 특정한 트리 순회를 적용하는 프로젝트 부분을 찾을 수 있습니다. 원하는 구현을 유사하지만 잘못된 구현과 구분하는 조건을 포함해, 동작을 정확히 표현하는 쿼리를 준비합니다.</p><p>모든 파일을 임의의 글자 수로 나누지 말고, 유용한 단위로 코드의 색인을 만듭니다. 함수 시그니처, 본문, 관련 설명을 함께 유지하세요. 보조 함수가 로컬 유형이나 상수에 의존하면, 그 목적을 이해할 수 있을 만큼 주변 텍스트를 보존합니다. 결과에서 원본 코드를 바로 열 수 있도록 파일 경로, 리포지토리 리비전, 소스 위치를 임베딩과 별도로 저장하세요.</p><p>이 버전은 16,000토큰 컨텍스트 창을 갖추고 1,536차원 임베딩을 생성합니다. 이 표현에 맞게 벡터 색인 크기를 정하고, 쿼리 및 문서 임베딩을 같은 모델에 연결해 유지하세요. Voyage Code 2로 이미 색인을 만든 모음은 원본 레코드를 업데이트하면서 일관된 검색 표현을 유지할 수 있습니다. 다른 임베딩 버전으로 옮길 때는 같은 리포지토리에서 명시적으로 비교하는 색인 마이그레이션으로 다루어야 합니다.</p><p>자연어 쿼리에는 작업, 입력, 관련 결과를 설명합니다. 코드 쿼리에는 로직을 일치시켜야 하는 조각을 넣고, 검색에 중요한 조건을 설명하세요. 예를 들어 재시도 처리 검색에서는 타임아웃 뒤에 재시도하는 코드인지, 완전한 오류 응답 뒤에 재시도하는 코드인지 명시할 수 있습니다. 검색된 소스를 편집에 사용하기 전에 그 차이를 확인해야 합니다.</p><p>문서와 소스 코드를 모두 색인에 넣는다면, 둘 다 추적할 수 있게 유지합니다. 설명 구절은 유용한 맥락이 될 수 있지만, 개발자가 확인해야 하는 산출물은 구현입니다. 검색 페이지가 올바른 목적지를 보여 주고 코딩 도우미가 설명과 실행 가능한 소스를 구분할 수 있도록, 이러한 레코드 유형에 라벨을 붙이세요.</p><p>검색된 구절은 리포지토리 탐색, 구현 발견, 코딩 도우미의 다음 단계에 필요한 맥락으로 사용합니다. 다음 단계로 전달할 때 관련 조각 전체와 그 위치를 보존하세요. 유사도는 후보 코드를 찾는 데 도움이 되며, 그 후보가 현재 문제를 해결하는지는 실제 입력, 부작용, 계약을 검토해 판단합니다.</p><p>답이 있는 소스를 알고 있는 실제 질문 모음으로 검색을 평가합니다. 이름이 바뀐 함수, 오해를 부르는 주석, 경계 사례가 다른 유사한 유틸리티, 코드에 없는 어휘를 쓰는 쿼리를 포함하세요. 예상 구현이 유용한 결과에 나타나는지, 표시된 조각이 판단에 충분한 맥락을 제공하는지 확인합니다. 추출, 구절 경계, 색인 작업의 변경을 같은 작업들로 비교할 수 있도록, 리포지토리가 커져도 이러한 질문을 유지하세요.</p>",
  "aboutText": "Voyage Code 2는 소스 코드와 관련 텍스트의 수치 임베딩을 생성합니다. 개발자가 동작을 설명하거나 코드 조각을 제공하면 검색 시스템이 관련 구현을 찾는 의미 기반 코드 검색용으로 설계되었습니다. 개발사의 예시는 자연어 질문, 코드 조각, 두 가지를 결합한 검색 입력을 다룹니다.\n\n실제 개발 질문을 중심으로 리포지토리 검색 환경을 만드세요. 개발자는 일치하는 문자 중 첫 번째와 마지막 문자만 제거하는 루틴이나, 특정한 트리 순회를 적용하는 프로젝트 부분을 찾을 수 있습니다. 원하는 구현을 유사하지만 잘못된 구현과 구분하는 조건을 포함해, 동작을 정확히 표현하는 쿼리를 준비합니다.\n\n모든 파일을 임의의 글자 수로 나누지 말고, 유용한 단위로 코드의 색인을 만듭니다. 함수 시그니처, 본문, 관련 설명을 함께 유지하세요. 보조 함수가 로컬 유형이나 상수에 의존하면, 그 목적을 이해할 수 있을 만큼 주변 텍스트를 보존합니다. 결과에서 원본 코드를 바로 열 수 있도록 파일 경로, 리포지토리 리비전, 소스 위치를 임베딩과 별도로 저장하세요.\n\n이 버전은 16,000토큰 컨텍스트 창을 갖추고 1,536차원 임베딩을 생성합니다. 이 표현에 맞게 벡터 색인 크기를 정하고, 쿼리 및 문서 임베딩을 같은 모델에 연결해 유지하세요. Voyage Code 2로 이미 색인을 만든 모음은 원본 레코드를 업데이트하면서 일관된 검색 표현을 유지할 수 있습니다. 다른 임베딩 버전으로 옮길 때는 같은 리포지토리에서 명시적으로 비교하는 색인 마이그레이션으로 다루어야 합니다.\n\n자연어 쿼리에는 작업, 입력, 관련 결과를 설명합니다. 코드 쿼리에는 로직을 일치시켜야 하는 조각을 넣고, 검색에 중요한 조건을 설명하세요. 예를 들어 재시도 처리 검색에서는 타임아웃 뒤에 재시도하는 코드인지, 완전한 오류 응답 뒤에 재시도하는 코드인지 명시할 수 있습니다. 검색된 소스를 편집에 사용하기 전에 그 차이를 확인해야 합니다.\n\n문서와 소스 코드를 모두 색인에 넣는다면, 둘 다 추적할 수 있게 유지합니다. 설명 구절은 유용한 맥락이 될 수 있지만, 개발자가 확인해야 하는 산출물은 구현입니다. 검색 페이지가 올바른 목적지를 보여 주고 코딩 도우미가 설명과 실행 가능한 소스를 구분할 수 있도록, 이러한 레코드 유형에 라벨을 붙이세요.\n\n검색된 구절은 리포지토리 탐색, 구현 발견, 코딩 도우미의 다음 단계에 필요한 맥락으로 사용합니다. 다음 단계로 전달할 때 관련 조각 전체와 그 위치를 보존하세요. 유사도는 후보 코드를 찾는 데 도움이 되며, 그 후보가 현재 문제를 해결하는지는 실제 입력, 부작용, 계약을 검토해 판단합니다.\n\n답이 있는 소스를 알고 있는 실제 질문 모음으로 검색을 평가합니다. 이름이 바뀐 함수, 오해를 부르는 주석, 경계 사례가 다른 유사한 유틸리티, 코드에 없는 어휘를 쓰는 쿼리를 포함하세요. 예상 구현이 유용한 결과에 나타나는지, 표시된 조각이 판단에 충분한 맥락을 제공하는지 확인합니다. 추출, 구절 경계, 색인 작업의 변경을 같은 작업들로 비교할 수 있도록, 리포지토리가 커져도 이러한 질문을 유지하세요.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "e0a031c06931bd08e4d5cf8638f83a26f0935604127619aa2e7c35632233a283",
    "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\">Voyage AI: Voyage Code 2</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>Voyage AI /</span><code>voyage-code-2</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|embeddings|/v1/embeddings|voyage-code-2\">임베딩</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\">Voyage Code 2는 의미 기반 리포지토리 검색을 위해 소스 코드와 관련 텍스트를 임베딩으로 변환합니다. 자연어 질문, 코드 조각, 또는 둘을 결합한 쿼리로 관련 구현을 검색할 수 있으며, 이 버전은 16,000토큰 컨텍스트 창과 1,536차원 벡터를 사용합니다.</p><dl class=\"card-io\" data-card-io><div><dt>허용 입력</dt><dd>텍스트</dd></div><div><dt>결과</dt><dd>embedding</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>Voyage Code 2는 소스 코드와 관련 텍스트의 수치 임베딩을 생성합니다. 개발자가 동작을 설명하거나 코드 조각을 제공하면 검색 시스템이 관련 구현을 찾는 의미 기반 코드 검색용으로 설계되었습니다. 개발사의 예시는 자연어 질문, 코드 조각, 두 가지를 결합한 검색 입력을 다룹니다.</p><p>실제 개발 질문을 중심으로 리포지토리 검색 환경을 만드세요. 개발자는 일치하는 문자 중 첫 번째와 마지막 문자만 제거하는 루틴이나, 특정한 트리 순회를 적용하는 프로젝트 부분을 찾을 수 있습니다. 원하는 구현을 유사하지만 잘못된 구현과 구분하는 조건을 포함해, 동작을 정확히 표현하는 쿼리를 준비합니다.</p><p>모든 파일을 임의의 글자 수로 나누지 말고, 유용한 단위로 코드의 색인을 만듭니다. 함수 시그니처, 본문, 관련 설명을 함께 유지하세요. 보조 함수가 로컬 유형이나 상수에 의존하면, 그 목적을 이해할 수 있을 만큼 주변 텍스트를 보존합니다. 결과에서 원본 코드를 바로 열 수 있도록 파일 경로, 리포지토리 리비전, 소스 위치를 임베딩과 별도로 저장하세요.</p><p>이 버전은 16,000토큰 컨텍스트 창을 갖추고 1,536차원 임베딩을 생성합니다. 이 표현에 맞게 벡터 색인 크기를 정하고, 쿼리 및 문서 임베딩을 같은 모델에 연결해 유지하세요. Voyage Code 2로 이미 색인을 만든 모음은 원본 레코드를 업데이트하면서 일관된 검색 표현을 유지할 수 있습니다. 다른 임베딩 버전으로 옮길 때는 같은 리포지토리에서 명시적으로 비교하는 색인 마이그레이션으로 다루어야 합니다.</p><p>자연어 쿼리에는 작업, 입력, 관련 결과를 설명합니다. 코드 쿼리에는 로직을 일치시켜야 하는 조각을 넣고, 검색에 중요한 조건을 설명하세요. 예를 들어 재시도 처리 검색에서는 타임아웃 뒤에 재시도하는 코드인지, 완전한 오류 응답 뒤에 재시도하는 코드인지 명시할 수 있습니다. 검색된 소스를 편집에 사용하기 전에 그 차이를 확인해야 합니다.</p><p>문서와 소스 코드를 모두 색인에 넣는다면, 둘 다 추적할 수 있게 유지합니다. 설명 구절은 유용한 맥락이 될 수 있지만, 개발자가 확인해야 하는 산출물은 구현입니다. 검색 페이지가 올바른 목적지를 보여 주고 코딩 도우미가 설명과 실행 가능한 소스를 구분할 수 있도록, 이러한 레코드 유형에 라벨을 붙이세요.</p><p>검색된 구절은 리포지토리 탐색, 구현 발견, 코딩 도우미의 다음 단계에 필요한 맥락으로 사용합니다. 다음 단계로 전달할 때 관련 조각 전체와 그 위치를 보존하세요. 유사도는 후보 코드를 찾는 데 도움이 되며, 그 후보가 현재 문제를 해결하는지는 실제 입력, 부작용, 계약을 검토해 판단합니다.</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/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>입력</dt><dd><code>text</code></dd></div><div><dt>출력</dt><dd><code>embedding</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>voyage-code-2</div><div>조건: 정확한 Ailoot 모델 선택자를 사용하세요.</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</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string or array&lt;string&gt;</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>조건: 텍스트 또는 텍스트 목록입니다. 반환된 데이터 항목마다 벡터 하나와 해당 인덱스를 보존하세요.</div></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</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>optional</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span></td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>material_types</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>text</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>conditions</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>선택한 모델로 텍스트를 전송하세요. 반환된 모든 벡터와 인덱스를 보존하세요.</td></tr></tbody></table></div><p>수명 주기: <code>synchronous</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><div class=\"tw\" data-pricing-profiles><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>기본 토큰 요금</th><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.0004</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>출력 · 출력 토큰</span> <b>$0</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></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-2789-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2789-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · 모든 벡터와 사용량 저장</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"코드 복사\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2789-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2789-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON&#39;\n{\n  &quot;model&quot;: &quot;voyage-code-2&quot;,\n  &quot;input&quot;: &quot;The quick brown fox jumps over the lazy dog&quot;\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">결과 수신 및 저장</h3></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=voyage-code-2&amp;route=Ultra&amp;caller=voyage-code-2&amp;fmt=embeddings\"><code>voyage-code-2</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=voyage-code-2&amp;route=Ultra&amp;caller=voyage-code-2&amp;fmt=embeddings\"><code>voyage-code-2</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "voyage-code-2",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|voyage-code-2",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "대조 확인을 위해 원본 응답과 X-Client-Request-ID를 보관하세요. 응답이 모호하다고 해서 동일한 생성 요청을 다시 제출해도 되는 것은 아닙니다.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "전체 JSON 응답, 각 벡터와 해당 인덱스, 모든 사용량 필드 및 요청 헤더를 저장하세요.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "정확한 Ailoot 모델 선택자를 사용하세요.",
                "default_known": false,
                "enum": [
                  "voyage-code-2"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "텍스트 또는 텍스트 목록입니다. 반환된 데이터 항목마다 벡터 하나와 해당 인덱스를 보존하세요.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-code-2"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-code-2"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "선택한 모델로 텍스트를 전송하세요. 반환된 모든 벡터와 인덱스를 보존하세요."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "기본 토큰 요금",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "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"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-code-2\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "http": "POST",
        "in": 0.4,
        "input": [
          "text"
        ],
        "label": "임베딩",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "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": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "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"
              }
            ]
          }
        ],
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "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"
          }
        ]
      }
    }
  ],
  "model_id": "voyage-code-2",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "54c5f4db6490dda2198a3e75544c294422addd6db9d57a94b1b79aa13e725546",
    "input_html_sha256": "5931e368b8351e36d5c31173ffdda832ed3cdd2130fdad4a0fc02d0bf323c4b5",
    "private_audit_sha256": "e02e5631e6c6c3f074412d751ae6ee9627fbb7b3e8de3543e9901808929175f4",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/voyage-code-2/",
    "description": "Voyage Code 2는 의미 기반 리포지토리 검색을 위해 소스 코드와 관련 텍스트를 임베딩으로 변환합니다. 자연어 질문, 코드 조각, 또는 둘을 결합한 쿼리로 관련 구현을 검색할 수 있으며, 이 버전은 16,000토큰 컨텍스트 창과 1,536차원 벡터를 사용합니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/voyage-code-2/index.md",
    "title": "Voyage AI: Voyage Code 2 — Ailoot",
    "url": "https://ailoot.ai/models/ko/voyage-code-2/"
  },
  "rawModel": {
    "about": "Voyage Code 2는 소스 코드와 관련 텍스트의 수치 임베딩을 생성합니다. 개발자가 동작을 설명하거나 코드 조각을 제공하면 검색 시스템이 관련 구현을 찾는 의미 기반 코드 검색용으로 설계되었습니다. 개발사의 예시는 자연어 질문, 코드 조각, 두 가지를 결합한 검색 입력을 다룹니다.\n\n실제 개발 질문을 중심으로 리포지토리 검색 환경을 만드세요. 개발자는 일치하는 문자 중 첫 번째와 마지막 문자만 제거하는 루틴이나, 특정한 트리 순회를 적용하는 프로젝트 부분을 찾을 수 있습니다. 원하는 구현을 유사하지만 잘못된 구현과 구분하는 조건을 포함해, 동작을 정확히 표현하는 쿼리를 준비합니다.\n\n모든 파일을 임의의 글자 수로 나누지 말고, 유용한 단위로 코드의 색인을 만듭니다. 함수 시그니처, 본문, 관련 설명을 함께 유지하세요. 보조 함수가 로컬 유형이나 상수에 의존하면, 그 목적을 이해할 수 있을 만큼 주변 텍스트를 보존합니다. 결과에서 원본 코드를 바로 열 수 있도록 파일 경로, 리포지토리 리비전, 소스 위치를 임베딩과 별도로 저장하세요.\n\n이 버전은 16,000토큰 컨텍스트 창을 갖추고 1,536차원 임베딩을 생성합니다. 이 표현에 맞게 벡터 색인 크기를 정하고, 쿼리 및 문서 임베딩을 같은 모델에 연결해 유지하세요. Voyage Code 2로 이미 색인을 만든 모음은 원본 레코드를 업데이트하면서 일관된 검색 표현을 유지할 수 있습니다. 다른 임베딩 버전으로 옮길 때는 같은 리포지토리에서 명시적으로 비교하는 색인 마이그레이션으로 다루어야 합니다.\n\n자연어 쿼리에는 작업, 입력, 관련 결과를 설명합니다. 코드 쿼리에는 로직을 일치시켜야 하는 조각을 넣고, 검색에 중요한 조건을 설명하세요. 예를 들어 재시도 처리 검색에서는 타임아웃 뒤에 재시도하는 코드인지, 완전한 오류 응답 뒤에 재시도하는 코드인지 명시할 수 있습니다. 검색된 소스를 편집에 사용하기 전에 그 차이를 확인해야 합니다.\n\n문서와 소스 코드를 모두 색인에 넣는다면, 둘 다 추적할 수 있게 유지합니다. 설명 구절은 유용한 맥락이 될 수 있지만, 개발자가 확인해야 하는 산출물은 구현입니다. 검색 페이지가 올바른 목적지를 보여 주고 코딩 도우미가 설명과 실행 가능한 소스를 구분할 수 있도록, 이러한 레코드 유형에 라벨을 붙이세요.\n\n검색된 구절은 리포지토리 탐색, 구현 발견, 코딩 도우미의 다음 단계에 필요한 맥락으로 사용합니다. 다음 단계로 전달할 때 관련 조각 전체와 그 위치를 보존하세요. 유사도는 후보 코드를 찾는 데 도움이 되며, 그 후보가 현재 문제를 해결하는지는 실제 입력, 부작용, 계약을 검토해 판단합니다.\n\n답이 있는 소스를 알고 있는 실제 질문 모음으로 검색을 평가합니다. 이름이 바뀐 함수, 오해를 부르는 주석, 경계 사례가 다른 유사한 유틸리티, 코드에 없는 어휘를 쓰는 쿼리를 포함하세요. 예상 구현이 유용한 결과에 나타나는지, 표시된 조각이 판단에 충분한 맥락을 제공하는지 확인합니다. 추출, 구절 경계, 색인 작업의 변경을 같은 작업들로 비교할 수 있도록, 리포지토리가 커져도 이러한 질문을 유지하세요.",
    "about_sha256": "02443af503f57362991a7f624a9b2b777836a591a3816de5330425a291427ffb",
    "alias_of": null,
    "aliases": [],
    "author": "Voyage AI",
    "capabilities": {
      "context_length": 16000,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "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"
          }
        ],
        "summary": "구성의 전체 요금 정보는 상세 정보에서 확인할 수 있습니다."
      }
    ],
    "ctx": null,
    "display_name": "Voyage AI: Voyage Code 2",
    "formats": [
      "embeddings"
    ],
    "id": "voyage-code-2",
    "input": [
      "text"
    ],
    "kind": "embedding",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "대조 확인을 위해 원본 응답과 X-Client-Request-ID를 보관하세요. 응답이 모호하다고 해서 동일한 생성 요청을 다시 제출해도 되는 것은 아닙니다.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "전체 JSON 응답, 각 벡터와 해당 인덱스, 모든 사용량 필드 및 요청 헤더를 저장하세요.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "정확한 Ailoot 모델 선택자를 사용하세요.",
                "default_known": false,
                "enum": [
                  "voyage-code-2"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "텍스트 또는 텍스트 목록입니다. 반환된 데이터 항목마다 벡터 하나와 해당 인덱스를 보존하세요.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-code-2"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-code-2"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "선택한 모델로 텍스트를 전송하세요. 반환된 모든 벡터와 인덱스를 보존하세요."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "기본 토큰 요금",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "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"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-code-2\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "http": "POST",
        "in": 0.4,
        "input": [
          "text"
        ],
        "label": "임베딩",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "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": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "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"
              }
            ]
          }
        ],
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "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"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "voyage-code-2",
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra"
      }
    ],
    "name": "Voyage AI: Voyage Code 2",
    "price": {
      "in": 0.4,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.4,
      "sort_out": 0,
      "varies": false
    },
    "short": "Voyage Code 2는 의미 기반 리포지토리 검색을 위해 소스 코드와 관련 텍스트를 임베딩으로 변환합니다. 자연어 질문, 코드 조각, 또는 둘을 결합한 쿼리로 관련 구현을 검색할 수 있으며, 이 버전은 16,000토큰 컨텍스트 창과 1,536차원 벡터를 사용합니다.",
    "short_sha256": "392f5ff2471da11418d1ad1c0971fff44fb348ff0d8d619073b3d78c51bb9acb"
  },
  "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": "Voyage Code 2는 의미 기반 리포지토리 검색을 위해 소스 코드와 관련 텍스트를 임베딩으로 변환합니다. 자연어 질문, 코드 조각, 또는 둘을 결합한 쿼리로 관련 구현을 검색할 수 있으며, 이 버전은 16,000토큰 컨텍스트 창과 1,536차원 벡터를 사용합니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "89e6279f6c6f29ac343c9b4c087af48d939f9540d06a4e11d5a296d667bc2bd4",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "fe018bc8e1b657b3394cf99876802094753148b9eec1f9c8e2961031bf3dcfcc"
}
