modelli

gemini-3-pro-preview

Markdown · JSON

gemini-3-pro-preview

Gemini 3 Pro Preview è il modello di ragionamento multimodale di Google per testo, immagini, audio, video e PDF, con output testuale. L’ampio spazio di input, le capacità di programmazione e i flussi con strumenti supportati lo rendono adatto ad analisi dettagliate, confronti tra documenti ed esecuzione di compiti basata sulle prove.

Informazioni sul modello

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.

Gemini 3 Pro Preview è il profilo di anteprima Gemini 3 Pro di Google per il ragionamento multimodale e la generazione di testo. Può lavorare con testo, immagini, audio, video e documenti PDF e restituire un risultato scritto. Gli impieghi previsti comprendono analisi complesse, programmazione avanzata, sviluppo di algoritmi e compiti che combinano un insieme consistente di fonti con una domanda specifica.

Modello e struttura dell’input

Gemini 3 Pro è un modello sparse mixture-of-experts basato su transformer, con supporto nativo per input multimodali. La sua architettura instrada ogni token attraverso un sottoinsieme selezionato di esperti. Si tratta di una caratteristica progettuale del modello, anziché di un controllo utente per selezionare un particolare esperto o fissare una configurazione di erogazione.

Prepara gli input in funzione delle informazioni necessarie al compito. Un documento, uno screenshot e una registrazione audio possono fornire prove diverse. Identifica il contenuto di ciascun elemento e il modo in cui deve contribuire alla risposta. L’output rimane testuale; comprendere materiale visivo o parlato non trasforma questa anteprima in un generatore di immagini, voce o video.

Analisi multimodale

Usa le immagini per domande sul contenuto visibile, l’audio per informazioni parlate o acustiche e il video per una sequenza in cui contano i cambiamenti nel tempo. Allega il contenuto effettivo alla domanda, anziché descriverlo soltanto a memoria. Quando confronti più elementi, etichettali chiaramente, così la risposta potrà riferirsi alla fonte corretta.

Per esempio, un brief di analisi del prodotto può combinare una specifica scritta, uno screenshot dell’interfaccia e una dimostrazione registrata. Chiedi un confronto che separi ciò che la specifica promette da ciò che è visibile o udibile nel materiale fornito. Definisci il risultato desiderato come un insieme di conclusioni, osservazioni di supporto e domande irrisolte.

Per un compito su PDF, fornisci il documento e identifica le sezioni o le affermazioni da esaminare. Una domanda utile chiede un confronto, un’estrazione o una spiegazione legata alla fonte, anziché richiedere soltanto un riepilogo generale di un file di grandi dimensioni.

Contesto lungo e spazio per l’output

La specifica esatta dell’anteprima indica un limite di input di 1.048.576 token e un limite di output di 65.536 token. Il produttore dichiara gennaio 2025 come limite temporale delle conoscenze; fornisci prove più recenti quando la domanda dipende da eventi o informazioni successivi. Questi limiti sono distinti. Un ampio insieme di fonti può essere letto per produrre una risposta mirata senza richiedere al modello di riprodurre ogni parte dell’input.

Organizza il materiale lungo rendendone chiara la struttura: titoli dei documenti, confini delle sezioni, percorsi del codice e domanda a cui l’output deve rispondere. Mantieni le eccezioni e le definizioni pertinenti vicino al contenuto a cui si applicano. Se il compito richiede una relazione lunga, specificane le sezioni e le prove attese in ciascuna.

Un’ampia finestra di contesto non garantisce che ogni dettaglio riceva la stessa attenzione o che ogni conclusione sia corretta. Google segnala anche un possibile peggioramento nelle conversazioni con più turni; riesamina i fatti importanti delle fonti e il contesto riutilizzato man mano che lo scambio prosegue. Controlla la risposta rispetto ai passaggi o agli elementi specifici che ne sostengono le affermazioni importanti.

Programmazione e sviluppo di algoritmi

Gli impieghi previsti dal produttore comprendono programmazione avanzata e lavoro algoritmico. Fornisci il sorgente pertinente, le ipotesi sull’ambiente, l’errore osservato e il comportamento atteso. Per un compito algoritmico, definisci l’input, l’output desiderato e condizioni quali ordinamento, duplicati o dati non validi.

Un brief di debug utile affianca l’input che causa il problema e l’errore alla porzione minima di sorgente pertinente. Chiedi una diagnosi e una modifica mirata, quindi verifica se la modifica proposta affronta il comportamento segnalato. Il codice generato e l’affermazione che dovrebbe funzionare sono diversi da un’implementazione eseguita e verificata.

Per una domanda su un repository più ampio, usa lo spazio di input per fornire i file necessari con etichette di percorso chiare. Specifica se il risultato desiderato è una spiegazione, una patch proposta o un’analisi delle alternative, così da dare al risultato uno scopo concreto.

Strumenti, fonti e risultati strutturati

La specifica del produttore per questa anteprima supporta chiamate di funzioni, esecuzione di codice, ricerca nei file, ancoraggio alla ricerca e contesto da URL. Queste funzionalità hanno ruoli distinti. Una chiamata di funzione descrive un’operazione che un’applicazione deve eseguire; il risultato dello strumento fornisce poi prove per il passaggio successivo del modello. L’esecuzione di codice è un flusso con strumenti, anziché una garanzia che qualsiasi codice applicativo generato sia già stato testato.

L’ancoraggio alla ricerca e il contesto da URL offrono flussi orientati alle fonti, mentre la ricerca nei file opera su una raccolta di file preparata. Conserva i risultati degli strumenti e le associazioni alle fonti insieme alla risposta, così da poter esaminare una conclusione. Secondo la specifica, il profilo non supporta l’uso del computer né l’ancoraggio a Maps.

Il supporto per output strutturati può esprimere un risultato secondo uno schema definito. Specifica i campi e il loro significato prima della generazione e controlla tanto il contenuto quanto il formato. Un oggetto strutturato valido richiede comunque una verifica dei fatti e della corrispondenza al compito.

Ragionamento, riutilizzo e confini tra edizioni

Questa anteprima supporta la modalità di pensiero. Usa un compito chiaro, prove pertinenti e vincoli espliciti per il lavoro che richiede più passaggi di ragionamento. Il risultato dovrebbe spiegare le ipotesi e la conclusione utile; il ragionamento nascosto o la presenza di una modalità di pensiero non costituiscono di per sé una verifica.

Il produttore elenca anche il supporto per cache e batch. Si tratta di funzionalità di elaborazione separate dalle capacità di contenuto del modello e la loro presenza non dimostra che una specifica richiesta sia stata memorizzata in cache o che un risultato batch sia corretto.

Mantieni Gemini 3 Pro Preview distinto da Gemini 3.1 Pro Preview, Gemini 3 Pro Image e dai profili audio o Live. L’output di questa anteprima è testuale e la sua specifica non comprende generazione di immagini, generazione audio o funzionamento Live. Valuta la risposta, il codice o il risultato strutturato restituito rispetto all’insieme di fonti fornito e al compito previsto.

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions gemini-3-pro-preview

gemini-3-pro-preview

Altro /gemini-3-pro-preview

Introduzione

Gemini 3 Pro Preview è il modello di ragionamento multimodale di Google per testo, immagini, audio, video e PDF, con output testuale. L’ampio spazio di input, le capacità di programmazione e i flussi con strumenti supportati lo rendono adatto ad analisi dettagliate, confronti tra documenti ed esecuzione di compiti basata sulle prove.

Input accettati
Testo
Risultati
Testo

Disponibile in Ailoot · input e metodi

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Tipi di input
text
Tipi di output
text
Formato di output
json o SSE
CampoTipoRequisitoValori e limitiPredefinito
CampomodelTipostringRequisitoObbligatorioValori e limiti
gemini-3-pro-preview
Predefinito—
CampomessagesTipomessage[]RequisitoObbligatorioValori e limiti
Numero minimo di elementi: 1
Predefinito—
Campomessages[].roleTipostringRequisitoObbligatorioValori e limiti
Dipende dal modello
Predefinito—
Campomessages[].contentTipostringRequisitoFacoltativoValori e limiti
Si applica quando: Conversazione testuale
Predefinito—
CampostreamTipobooleanRequisitoFacoltativoValori e limitiPredefinitofalse
Combinazioni di materiali in input

Testo · Testo UTF8

messages[].content

Parametri e ciclo di vita del metodo
ParametroContratto
Parametrocontent_typeContrattoapplication/json
ParametrorequiredContrattomodel, messages
Parametromaterial_typesContrattotext
ParametromessagesContrattoArray di messaggi con struttura role/content
Parametrofile_materialContrattoDocumento UTF-8 effettivo inserito come testo letterale; nessun ID di file dedotto
Parametrooptional_controlsContrattostream
Parametrocontrol_scopeContrattoConversazione testuale; stream è un booleano e per impostazione predefinita vale false.
Parametrooutput_modalitiesContrattotext
Parametrohosted_operationsContrattofalse
Parametromultimodal_input_bindingContrattonull

Alias del metodo: /chat/completions

Ciclo di vita: synchronous_or_streamed

Invia l’ID esatto del modello con messages.

La lunghezza del contesto non è un limite di uscita.

Un file di testo può fornire testo letterale; gli ingressi immagine/audio/oggetto file richiedono un’associazione esatta.

Tariffe

Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.

Modalità rapida
Non specificato Quando è selezionata la modalità rapida
Modalità flex
Non specificato Quando è selezionata la modalità flex
Sforzo massimo di ragionamento
Non specificato Quando lo sforzo massimo di ragionamento usa l'adeguamento predefinito (default)
Tariffe della cache esplicita
Non abilitato Quando viene richiesta una cache esplicita

Tariffe Ailoot

Prezzi per configurazione

ConfigurazioneListino delle tariffeCosto
ConfigurazioneTariffe di base dei tokenListino delle tariffeTariffa baseCosto
Input · Token in input $0.004 / 1K token
Output · Token in output $0.024 / 1K token
Input · Lettura dalla cache $0 / 1K token
Input · Scrittura nella cache $0 / 1K token
Input · Scrittura nella cache, 1 ora — / 1K token

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. Come funzionano la prenotazione e l’addebito finale →

Esempi di richieste

Ailoot Ultra · OpenAI Chat

curlPython SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gemini-3-pro-preview","messages":[{"role":"user","content":"hello"}],"stream":false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="gemini-3-pro-preview", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))

Ricevi e salva i risultati

Ailoot Ultra · OpenAI Chat

json o SSE

Conserva tutti i risultati completati

Conserva ogni risposta, file e parte di contenuto restituiti per intero.

Conserva ogni scelta con contenuto, chiamate agli strumenti e ragionamento. In SSE assembla i delta per indice di scelta e strumento e conserva il motivo finale di completamento e i dati di utilizzo.

Se occorre verificare la risposta originale

Conserva gli ID e le intestazioni di richiesta/risposta. Non viene fornito alcun URL generico per recuperare un’attività testuale.

Campi della risposta
CampoTipo
Campochoices[].indexTipointeger
Campochoices[].message.contentTipostring|null
Campochoices[].message.tool_callsTipotool_call[]
Campochoices[].message.reasoning_contentTipostring
Campochoices[].message.reasoning_detailsTipoobject|array
Campochoices[].finish_reasonTipostring|null
CampousageTipoobject
Errori e passaggi successivi
RispostaCondizionePassaggio successivo
Risposta400 · invalid_request_errorCondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validiPassaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione.

Alias

Alias del modello

Ailoot Ultra gemini-3-pro-preview

Alias dei percorsi dei metodi

/chat/completions

ID di chiamata correlati

gemini-3-pro-preview

Ailoot Ultra · Anthropic Messages POST /v1/messages gemini-3-pro-preview

gemini-3-pro-preview

Altro /gemini-3-pro-preview

Introduzione

Gemini 3 Pro Preview è il modello di ragionamento multimodale di Google per testo, immagini, audio, video e PDF, con output testuale. L’ampio spazio di input, le capacità di programmazione e i flussi con strumenti supportati lo rendono adatto ad analisi dettagliate, confronti tra documenti ed esecuzione di compiti basata sulle prove.

Input accettati
Testo
Risultati
json · sse

Disponibile in Ailoot · input e metodi

Ailoot Ultra · Anthropic Messages POST /v1/messages
Tipi di input
text
Tipi di output
json, sse
Formato di output
JSON o SSE
CampoTipoRequisitoValori e limitiPredefinito
CampomodelTipostringRequisitoObbligatorioValori e limiti
gemini-3-pro-preview
Predefinito—
CampomessagesTipomessage[]RequisitoObbligatorioValori e limitiPredefinito—
Campomessages[].roleTipostringRequisitoObbligatorioValori e limiti
user, assistant
Predefinito—
Campomessages[].contentTipostringRequisitoObbligatorioValori e limitiPredefinito—
Campomax_tokensTipointegerRequisitoObbligatorioValori e limitiPredefinito—
CampostreamTipobooleanRequisitoFacoltativoValori e limitiPredefinitofalse
Combinazioni di materiali in input

Testo · Testo UTF-8

Stringa messages[].content

Parametri e ciclo di vita del metodo
ParametroContratto
Parametrocontent_typeContrattoapplication/json
ParametrorequiredContrattomodel, messages, max_tokens
Parametrooptional_controlsContrattostream
Parametromaterial_typesContrattotext
Parametrotext_file_materialContrattoLeggi il documento UTF-8 effettivo e inserisci il testo nell’ingresso indicato o nella stringa del contenuto del messaggio.

Ciclo di vita: synchronous_or_streamed

Tariffe

Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.

Modalità rapida
Non specificato Quando è selezionata la modalità rapida
Modalità flex
Non specificato Quando è selezionata la modalità flex
Sforzo massimo di ragionamento
Non specificato Quando lo sforzo massimo di ragionamento usa l'adeguamento predefinito (default)
Tariffe della cache esplicita
Non abilitato Quando viene richiesta una cache esplicita

Tariffe Ailoot

Prezzi per configurazione

ConfigurazioneListino delle tariffeCosto
ConfigurazioneTariffe di base dei tokenListino delle tariffeTariffa baseCosto
Input · Token in input $0.004 / 1K token
Output · Token in output $0.024 / 1K token
Input · Lettura dalla cache $0 / 1K token
Input · Scrittura nella cache $0 / 1K token
Input · Scrittura nella cache, 1 ora — / 1K token

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. Come funzionano la prenotazione e l’addebito finale →

Esempi di richieste

Ailoot Ultra · Anthropic Messages

Corpo JSON minimo completocurl · usa il tuo documento UTF-8Python · salva il risultato completo
{
  "model": "gemini-3-pro-preview",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-3-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-3-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

Ricevi e salva i risultati

Ailoot Ultra · Anthropic Messages

JSON o SSE

Conserva tutti i risultati completati

Conserva ogni risposta, file e parte di contenuto restituiti per intero.

Conserva tutti i blocchi di contenuto, le firme di ragionamento e gli ID effettivi di utilizzo degli strumenti. Assembla tutti i delta dei blocchi SSE; il primo blocco di testo non è l’uscita completa.

Se occorre verificare la risposta originale

Conserva gli ID e le intestazioni di richiesta/risposta. Non viene fornito alcun URL generico per recuperare un’attività testuale.

Campi della risposta
CampoTipo
CampoidTipostring
CampomodelTipostring
Campocontent[]Tipotext|thinking|tool_use|other content block
Campostop_reasonTipostring|null
CampousageTipoobject
Errori e passaggi successivi
RispostaCondizionePassaggio successivo
Risposta400 · invalid_request_errorCondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validiPassaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione.

Alias

Alias del modello

Ailoot Ultra gemini-3-pro-preview

Alias dei percorsi dei metodi

/chat/completions

ID di chiamata correlati

gemini-3-pro-preview

FAQ · gemini-3-pro-preview
Quali input e risultati sono disponibili?

POST /v1/chat/completions · gemini-3-pro-preview: text → text

POST /v1/messages · gemini-3-pro-preview: text → json, sse

Quali campi usa la richiesta?

POST /v1/chat/completions · gemini-3-pro-preview: model, messages, stream

POST /v1/messages · gemini-3-pro-preview: model, messages, max_tokens, stream

Quali limiti si applicano?

POST /v1/chat/completions · gemini-3-pro-preview: messages.min_items: 1

Maggiori dettagli

Collega Ailoot a Claude Code, OpenCode, Hermes o alla tua applicazione.

L’azienda e il suo portafoglio di progetti

L’azienda e il suo portafoglio di progetti: milioni di clienti; vendite nell’ordine dei miliardi ogni mese.

Acquista token con uno sconto.

Sconto con abbonamento per lavoro regolare. Codici fino al 50% sull’acquisto di token.

Abbonamento
Scegli un piano scontato per richieste regolari.
Codice fino al 50%
Inserisci il codice all’acquisto. Il prezzo si aggiorna secondo la promozione.
Spese nella cronologia
Modello, token e importo sono salvati per ogni richiesta.

Scegli abbonamento · Consulta prezzi dei modelli

Collega l’API al prodotto che vendi.

SaaS, app e bot secondo offerta e accordo di licenza Ailoot. Per rivendere, richiedi una licenza reseller.

Applicazione commerciale
Integra generazione di testo, immagini, video e suono nelle funzioni a pagamento.
Licenza reseller
Invia descrizione del progetto e schema di accesso. Richiedi condizioni scritte per uso e rivendita.
Documenti sul sito
Offerta, accordo di licenza e politica sui dati sono disponibili prima della connessione.

Richiedi licenza reseller · Offerta e accordo di licenza