{
  "aboutHtml": "<p>Voyage Code 2 crea embedding numerici per codice sorgente e testo correlato. È progettato per il recupero semantico del codice, in cui uno sviluppatore descrive un comportamento o fornisce un frammento di codice e il sistema di ricerca trova implementazioni pertinenti. Gli esempi del produttore comprendono domande in linguaggio naturale, frammenti di codice e combinazioni dei due come input di ricerca.</p><p>Usatelo per costruire un’esperienza di ricerca nei repository intorno a domande di sviluppo reali. Uno sviluppatore può cercare la routine che rimuove soltanto il primo e l’ultimo carattere corrispondente o la parte di un progetto che applica un particolare attraversamento di un albero. Preparate query che esprimano con precisione il comportamento, inclusa la condizione che distingue l’implementazione desiderata da una vicina ma errata.</p><p>Indicizzate il codice in unità utili, anziché suddividere ogni file in base a un numero arbitrario di caratteri. Mantenete insieme la firma di una funzione, il corpo e la spiegazione pertinente. Quando una funzione ausiliaria dipende da tipi o costanti locali, conservate testo circostante sufficiente a rendere comprensibile il suo scopo. Archiviate percorsi dei file, revisioni dei repository e posizioni delle fonti al di fuori dell’embedding, in modo che il risultato possa aprire direttamente il codice originale.</p><p>Questa edizione ha una finestra di contesto di 16 000 token e produce embedding a 1 536 dimensioni. Dimensionate l’indice vettoriale per questa rappresentazione e mantenete gli embedding delle query e dei documenti associati allo stesso modello. Una raccolta già indicizzata con Voyage Code 2 può mantenere una rappresentazione di recupero coerente mentre i record di fonte vengono aggiornati. Il passaggio a un’altra edizione di embedding va trattato come una migrazione dell’indice, con un confronto esplicito sullo stesso repository.</p><p>Per una query in linguaggio naturale, descrivete l’operazione, gli input e l’esito pertinente. Per una query di codice, includete il frammento la cui logica deve essere confrontata e spiegate le condizioni importanti per la ricerca. Una ricerca sulla gestione dei tentativi, ad esempio, può precisare se il codice pertinente riprova dopo un timeout o dopo una risposta di errore completa. Occorre verificare nel codice sorgente recuperato questa distinzione prima di usarlo per una modifica.</p><p>Mantenete tracciabili documentazione e codice sorgente quando entrambi sono indicizzati. Un passaggio esplicativo può fornire contesto utile, mentre l’implementazione è l’artefatto che lo sviluppatore deve esaminare. Etichettate questi tipi di record affinché una pagina di ricerca mostri la destinazione corretta e un assistente di programmazione distingua una descrizione dal codice sorgente eseguibile.</p><p>Usate i passaggi recuperati come contesto per navigare nel repository, individuare implementazioni o preparare il passo successivo di un assistente di programmazione. Preservate il frammento pertinente completo e la sua posizione quando lo passate alla fase successiva. La similarità aiuta a trovare codice candidato; la revisione degli input effettivi, degli effetti collaterali e delle specifiche determina se il candidato risolva il problema attuale.</p><p>Valutate il recupero su un insieme di domande reali con risposte di fonte note. Includete funzioni rinominate, commenti fuorvianti, utilità simili con casi limite diversi e query che usano un vocabolario assente dal codice. Verificate se l’implementazione attesa compaia tra i risultati utili e se il frammento mostrato fornisca contesto sufficiente per valutarla. Conservate queste domande mentre il repository cresce, in modo che le modifiche all’estrazione, ai confini dei passaggi o all’indicizzazione possano essere confrontate sulle stesse attività.</p>",
  "aboutText": "Voyage Code 2 crea embedding numerici per codice sorgente e testo correlato. È progettato per il recupero semantico del codice, in cui uno sviluppatore descrive un comportamento o fornisce un frammento di codice e il sistema di ricerca trova implementazioni pertinenti. Gli esempi del produttore comprendono domande in linguaggio naturale, frammenti di codice e combinazioni dei due come input di ricerca.\n\nUsatelo per costruire un’esperienza di ricerca nei repository intorno a domande di sviluppo reali. Uno sviluppatore può cercare la routine che rimuove soltanto il primo e l’ultimo carattere corrispondente o la parte di un progetto che applica un particolare attraversamento di un albero. Preparate query che esprimano con precisione il comportamento, inclusa la condizione che distingue l’implementazione desiderata da una vicina ma errata.\n\nIndicizzate il codice in unità utili, anziché suddividere ogni file in base a un numero arbitrario di caratteri. Mantenete insieme la firma di una funzione, il corpo e la spiegazione pertinente. Quando una funzione ausiliaria dipende da tipi o costanti locali, conservate testo circostante sufficiente a rendere comprensibile il suo scopo. Archiviate percorsi dei file, revisioni dei repository e posizioni delle fonti al di fuori dell’embedding, in modo che il risultato possa aprire direttamente il codice originale.\n\nQuesta edizione ha una finestra di contesto di 16 000 token e produce embedding a 1 536 dimensioni. Dimensionate l’indice vettoriale per questa rappresentazione e mantenete gli embedding delle query e dei documenti associati allo stesso modello. Una raccolta già indicizzata con Voyage Code 2 può mantenere una rappresentazione di recupero coerente mentre i record di fonte vengono aggiornati. Il passaggio a un’altra edizione di embedding va trattato come una migrazione dell’indice, con un confronto esplicito sullo stesso repository.\n\nPer una query in linguaggio naturale, descrivete l’operazione, gli input e l’esito pertinente. Per una query di codice, includete il frammento la cui logica deve essere confrontata e spiegate le condizioni importanti per la ricerca. Una ricerca sulla gestione dei tentativi, ad esempio, può precisare se il codice pertinente riprova dopo un timeout o dopo una risposta di errore completa. Occorre verificare nel codice sorgente recuperato questa distinzione prima di usarlo per una modifica.\n\nMantenete tracciabili documentazione e codice sorgente quando entrambi sono indicizzati. Un passaggio esplicativo può fornire contesto utile, mentre l’implementazione è l’artefatto che lo sviluppatore deve esaminare. Etichettate questi tipi di record affinché una pagina di ricerca mostri la destinazione corretta e un assistente di programmazione distingua una descrizione dal codice sorgente eseguibile.\n\nUsate i passaggi recuperati come contesto per navigare nel repository, individuare implementazioni o preparare il passo successivo di un assistente di programmazione. Preservate il frammento pertinente completo e la sua posizione quando lo passate alla fase successiva. La similarità aiuta a trovare codice candidato; la revisione degli input effettivi, degli effetti collaterali e delle specifiche determina se il candidato risolva il problema attuale.\n\nValutate il recupero su un insieme di domande reali con risposte di fonte note. Includete funzioni rinominate, commenti fuorvianti, utilità simili con casi limite diversi e query che usano un vocabolario assente dal codice. Verificate se l’implementazione attesa compaia tra i risultati utili e se il frammento mostrato fornisca contesto sufficiente per valutarla. Conservate queste domande mentre il repository cresce, in modo che le modifiche all’estrazione, ai confini dei passaggi o all’indicizzazione possano essere confrontate sulle stesse attività.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "3eb789377663e13236442cf4b88f1a99bcc3b8a62006dddc4b026dad4499fd80",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "it",
  "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=\"Chiudi\">×</button></div><div class=\"idline\"><span>Voyage AI /</span><code>voyage-code-2</code><button type=\"button\" id=\"copy-id\">Copia ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sezioni della scheda del modello\"><button type=\"button\" data-card-jump=\"overview\">Introduzione</button><button type=\"button\" data-card-jump=\"methods\">Input e metodi</button><button type=\"button\" data-card-jump=\"pricing\">Tariffe</button><button type=\"button\" data-card-jump=\"examples\">Esempi</button><button type=\"button\" data-card-jump=\"results\">Risultati</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metodi 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\">Embedding</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\">Introduzione</h3><p class=\"mdesc-full\">Voyage Code 2 trasforma codice sorgente e testo correlato in embedding per la ricerca semantica nei repository. Domande in linguaggio naturale, frammenti di codice o query combinate possono recuperare implementazioni pertinenti; questa edizione usa una finestra di contesto di 16 000 token e vettori a 1 536 dimensioni.</p><dl class=\"card-io\" data-card-io><div><dt>Input accettati</dt><dd>Testo</dd></div><div><dt>Risultati</dt><dd>embedding</dd></div></dl><details class=\"card-about\"><summary>Informazioni sul modello</summary><p class=\"note-s\" data-model-method-boundary>Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.</p><div class=\"mabout\" id=\"m-about\"><p>Voyage Code 2 crea embedding numerici per codice sorgente e testo correlato. È progettato per il recupero semantico del codice, in cui uno sviluppatore descrive un comportamento o fornisce un frammento di codice e il sistema di ricerca trova implementazioni pertinenti. Gli esempi del produttore comprendono domande in linguaggio naturale, frammenti di codice e combinazioni dei due come input di ricerca.</p><p>Usatelo per costruire un’esperienza di ricerca nei repository intorno a domande di sviluppo reali. Uno sviluppatore può cercare la routine che rimuove soltanto il primo e l’ultimo carattere corrispondente o la parte di un progetto che applica un particolare attraversamento di un albero. Preparate query che esprimano con precisione il comportamento, inclusa la condizione che distingue l’implementazione desiderata da una vicina ma errata.</p><p>Indicizzate il codice in unità utili, anziché suddividere ogni file in base a un numero arbitrario di caratteri. Mantenete insieme la firma di una funzione, il corpo e la spiegazione pertinente. Quando una funzione ausiliaria dipende da tipi o costanti locali, conservate testo circostante sufficiente a rendere comprensibile il suo scopo. Archiviate percorsi dei file, revisioni dei repository e posizioni delle fonti al di fuori dell’embedding, in modo che il risultato possa aprire direttamente il codice originale.</p><p>Questa edizione ha una finestra di contesto di 16 000 token e produce embedding a 1 536 dimensioni. Dimensionate l’indice vettoriale per questa rappresentazione e mantenete gli embedding delle query e dei documenti associati allo stesso modello. Una raccolta già indicizzata con Voyage Code 2 può mantenere una rappresentazione di recupero coerente mentre i record di fonte vengono aggiornati. Il passaggio a un’altra edizione di embedding va trattato come una migrazione dell’indice, con un confronto esplicito sullo stesso repository.</p><p>Per una query in linguaggio naturale, descrivete l’operazione, gli input e l’esito pertinente. Per una query di codice, includete il frammento la cui logica deve essere confrontata e spiegate le condizioni importanti per la ricerca. Una ricerca sulla gestione dei tentativi, ad esempio, può precisare se il codice pertinente riprova dopo un timeout o dopo una risposta di errore completa. Occorre verificare nel codice sorgente recuperato questa distinzione prima di usarlo per una modifica.</p><p>Mantenete tracciabili documentazione e codice sorgente quando entrambi sono indicizzati. Un passaggio esplicativo può fornire contesto utile, mentre l’implementazione è l’artefatto che lo sviluppatore deve esaminare. Etichettate questi tipi di record affinché una pagina di ricerca mostri la destinazione corretta e un assistente di programmazione distingua una descrizione dal codice sorgente eseguibile.</p><p>Usate i passaggi recuperati come contesto per navigare nel repository, individuare implementazioni o preparare il passo successivo di un assistente di programmazione. Preservate il frammento pertinente completo e la sua posizione quando lo passate alla fase successiva. La similarità aiuta a trovare codice candidato; la revisione degli input effettivi, degli effetti collaterali e delle specifiche determina se il candidato risolva il problema attuale.</p><p>Valutate il recupero su un insieme di domande reali con risposte di fonte note. Includete funzioni rinominate, commenti fuorvianti, utilità simili con casi limite diversi e query che usano un vocabolario assente dal codice. Verificate se l’implementazione attesa compaia tra i risultati utili e se il frammento mostrato fornisca contesto sufficiente per valutarla. Conservate queste domande mentre il repository cresce, in modo che le modifiche all’estrazione, ai confini dei passaggi o all’indicizzazione possano essere confrontate sulle stesse attività.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponibile in Ailoot · input e metodi</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Embedding</b> <code>POST /v1/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>Tipi di input</dt><dd><code>text</code></dd></div><div><dt>Tipi di output</dt><dd><code>embedding</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Campo</th><th>Tipo</th><th>Requisito</th><th>Valori e limiti</th><th>Predefinito</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>voyage-code-2</div><div>Condizioni: Usa il selettore esatto del modello Ailoot.</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string or array&lt;string&gt;</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>Condizioni: Un testo o un elenco di testi; conserva un vettore per ogni elemento di dati restituito e il relativo indice.</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Parametri e ciclo di vita del metodo</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametro</th><th>Contratto</th></tr></thead><tbody><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>content_type</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>application/json</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>required</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>model, input</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>optional</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span></td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>material_types</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>text</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>conditions</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>Invia il testo con il modello selezionato; conserva ogni vettore restituito e il suo indice.</td></tr></tbody></table></div><p>Ciclo di vita: <code>synchronous</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tariffe</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.</p><dl data-price-conditions><dt>Modalità rapida</dt><dd>Non specificato <span class=\"note-s\">Quando è selezionata la modalità rapida</span></dd><dt>Modalità flex</dt><dd>Non specificato <span class=\"note-s\">Quando è selezionata la modalità flex</span></dd><dt>Sforzo massimo di ragionamento</dt><dd>Non specificato <span class=\"note-s\">Quando lo sforzo massimo di ragionamento usa l&#39;adeguamento predefinito (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tariffe Ailoot</h4><h4>Prezzi per configurazione</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configurazione</th><th>Listino delle tariffe</th><th>Costo</th></tr></thead><tbody><tr><th data-cell-label=\"Configurazione\" scope=\"row\"><span class=\"card-cell-label\">Configurazione</span>Tariffe base dei token</th><td data-cell-label=\"Listino delle tariffe\"><span class=\"card-cell-label\">Listino delle tariffe</span>Tariffa base</td><td data-cell-label=\"Costo\"><span class=\"card-cell-label\">Costo</span><div><span>Input · Token in input</span> <b>$0.0004</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Output · Token in output</span> <b>$0</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Lettura dalla cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Scrittura nella cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Scrittura nella cache, 1 ora</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. <a href=\"/docs/it/billing/reserve/\">Come funzionano la prenotazione e l’addebito finale →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esempi di richieste</h3><h4>Ailoot Ultra · Embedding</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianti di codice\"><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 · salva tutti i vettori e i dati di utilizzo</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copia il codice\"><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\">Ricevi e salva i risultati</h3></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias del modello</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>Alias dei percorsi dei metodi</h4><p class=\"note-s\">Usa i percorsi dei metodi indicati sopra.</p><h4>ID di chiamata correlati</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": "Conserva la risposta originale e X-Client-Request-ID per la riconciliazione. Una risposta ambigua non autorizza a inviare di nuovo la stessa richiesta di creazione.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Salva la risposta JSON completa, ogni vettore con il relativo indice, tutti i campi di utilizzo e le intestazioni della richiesta.",
              "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": "Usa il selettore esatto del modello Ailoot.",
                "default_known": false,
                "enum": [
                  "voyage-code-2"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Un testo o un elenco di testi; conserva un vettore per ogni elemento di dati restituito e il relativo indice.",
                "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": [
              "Invia il testo con il modello selezionato; conserva ogni vettore restituito e il suo indice."
            ],
            "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": "Tariffe base dei token",
            "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": "Embedding",
        "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": "287145ea6613e373f97af62352c7501a8c0e7481d12d2d9ab50e438909785dbe",
    "input_html_sha256": "cb337752b2f5628fbffc1bac97314676ef74647ba27af79d22d9344ec196b73c",
    "private_audit_sha256": "1686bd562c52926d73f9d3d226d59bf53c83fe0b1acfa8c3b77b7c12fa6a0d75",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/it/voyage-code-2/",
    "description": "Voyage Code 2 trasforma codice sorgente e testo correlato in embedding per la ricerca semantica nei repository. Domande in linguaggio naturale, frammenti di codice o query combinate possono recuperare implementazioni pertinenti; questa edizione usa una finestra di contesto di 16 000 token e vettori a 1 536 dimensioni.",
    "locale": "it",
    "md_url": "https://ailoot.ai/models/it/voyage-code-2/index.md",
    "title": "Voyage AI: Voyage Code 2 — Ailoot",
    "url": "https://ailoot.ai/models/it/voyage-code-2/"
  },
  "rawModel": {
    "about": "Voyage Code 2 crea embedding numerici per codice sorgente e testo correlato. È progettato per il recupero semantico del codice, in cui uno sviluppatore descrive un comportamento o fornisce un frammento di codice e il sistema di ricerca trova implementazioni pertinenti. Gli esempi del produttore comprendono domande in linguaggio naturale, frammenti di codice e combinazioni dei due come input di ricerca.\n\nUsatelo per costruire un’esperienza di ricerca nei repository intorno a domande di sviluppo reali. Uno sviluppatore può cercare la routine che rimuove soltanto il primo e l’ultimo carattere corrispondente o la parte di un progetto che applica un particolare attraversamento di un albero. Preparate query che esprimano con precisione il comportamento, inclusa la condizione che distingue l’implementazione desiderata da una vicina ma errata.\n\nIndicizzate il codice in unità utili, anziché suddividere ogni file in base a un numero arbitrario di caratteri. Mantenete insieme la firma di una funzione, il corpo e la spiegazione pertinente. Quando una funzione ausiliaria dipende da tipi o costanti locali, conservate testo circostante sufficiente a rendere comprensibile il suo scopo. Archiviate percorsi dei file, revisioni dei repository e posizioni delle fonti al di fuori dell’embedding, in modo che il risultato possa aprire direttamente il codice originale.\n\nQuesta edizione ha una finestra di contesto di 16 000 token e produce embedding a 1 536 dimensioni. Dimensionate l’indice vettoriale per questa rappresentazione e mantenete gli embedding delle query e dei documenti associati allo stesso modello. Una raccolta già indicizzata con Voyage Code 2 può mantenere una rappresentazione di recupero coerente mentre i record di fonte vengono aggiornati. Il passaggio a un’altra edizione di embedding va trattato come una migrazione dell’indice, con un confronto esplicito sullo stesso repository.\n\nPer una query in linguaggio naturale, descrivete l’operazione, gli input e l’esito pertinente. Per una query di codice, includete il frammento la cui logica deve essere confrontata e spiegate le condizioni importanti per la ricerca. Una ricerca sulla gestione dei tentativi, ad esempio, può precisare se il codice pertinente riprova dopo un timeout o dopo una risposta di errore completa. Occorre verificare nel codice sorgente recuperato questa distinzione prima di usarlo per una modifica.\n\nMantenete tracciabili documentazione e codice sorgente quando entrambi sono indicizzati. Un passaggio esplicativo può fornire contesto utile, mentre l’implementazione è l’artefatto che lo sviluppatore deve esaminare. Etichettate questi tipi di record affinché una pagina di ricerca mostri la destinazione corretta e un assistente di programmazione distingua una descrizione dal codice sorgente eseguibile.\n\nUsate i passaggi recuperati come contesto per navigare nel repository, individuare implementazioni o preparare il passo successivo di un assistente di programmazione. Preservate il frammento pertinente completo e la sua posizione quando lo passate alla fase successiva. La similarità aiuta a trovare codice candidato; la revisione degli input effettivi, degli effetti collaterali e delle specifiche determina se il candidato risolva il problema attuale.\n\nValutate il recupero su un insieme di domande reali con risposte di fonte note. Includete funzioni rinominate, commenti fuorvianti, utilità simili con casi limite diversi e query che usano un vocabolario assente dal codice. Verificate se l’implementazione attesa compaia tra i risultati utili e se il frammento mostrato fornisca contesto sufficiente per valutarla. Conservate queste domande mentre il repository cresce, in modo che le modifiche all’estrazione, ai confini dei passaggi o all’indicizzazione possano essere confrontate sulle stesse attività.",
    "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": "Tutte le tariffe della configurazione sono riportate nei dettagli."
      }
    ],
    "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": "Conserva la risposta originale e X-Client-Request-ID per la riconciliazione. Una risposta ambigua non autorizza a inviare di nuovo la stessa richiesta di creazione.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Salva la risposta JSON completa, ogni vettore con il relativo indice, tutti i campi di utilizzo e le intestazioni della richiesta.",
              "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": "Usa il selettore esatto del modello Ailoot.",
                "default_known": false,
                "enum": [
                  "voyage-code-2"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Un testo o un elenco di testi; conserva un vettore per ogni elemento di dati restituito e il relativo indice.",
                "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": [
              "Invia il testo con il modello selezionato; conserva ogni vettore restituito e il suo indice."
            ],
            "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": "Tariffe base dei token",
            "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": "Embedding",
        "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 trasforma codice sorgente e testo correlato in embedding per la ricerca semantica nei repository. Domande in linguaggio naturale, frammenti di codice o query combinate possono recuperare implementazioni pertinenti; questa edizione usa una finestra di contesto di 16 000 token e vettori a 1 536 dimensioni.",
    "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 trasforma codice sorgente e testo correlato in embedding per la ricerca semantica nei repository. Domande in linguaggio naturale, frammenti di codice o query combinate possono recuperare implementazioni pertinenti; questa edizione usa una finestra di contesto di 16 000 token e vettori a 1 536 dimensioni.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "887abbbaa53f39a6335b019bee5ac9370d87115b5257ac272fe178db6e816bf7",
    "renderer_sha256": "3be1a96012c3c76b38a7b9bea6a57c0def38c56103737bee6a5e77aaa75e488a"
  },
  "sourceRevision": "9af0a1c79301d648f05b6785a37c996c8f12a7e0ebe68dd985632bdc1f01340e"
}
