AI Glot websiteOpen AI Glot
CLIAutomazione e output della CLI

Automazione e output della CLI

Esegui la CLI di AI Glot in modo sicuro negli script e nei flussi CI usando JSON o NDJSON, credenziali di ambiente, profili, codici di uscita e tentativi ripetuti con limiti.

Nel terminale, la CLI mostra tabelle di facile lettura; se l’output viene reindirizzato, produce JSON. Lo stesso comando funziona quindi sia in modalità interattiva sia nei processi automatizzati.

Terminal
aiglot batches list                    # table on a terminal
aiglot batches list | jq '.data[0].id' # JSON when piped
aiglot batches list --output ndjson    # one object per line
aiglot account --json                  # explicit JSON

Gli errori e gli avvisi che il chiamante deve comunque vedere, per esempio quando una pagina di risultati è stata troncata, vengono inviati allo standard error. Lo standard output resta quindi sicuro da reindirizzare a un altro programma.

Attendere il completamento di una traduzione

Prepara prima il piano e controllane l’ambito, le esclusioni e il costo stimato. La CLI restituisce direttamente i singoli oggetti: leggi .id, .status e .plan, non .data.id o .data.status. I comandi di elenco continuano invece a usare un array data.

Terminal
set -euo pipefail

batch=$(aiglot batches create catalogue.csv --instruction "Translate into French" --json)
id=$(printf '%s' "$batch" | jq -er '.id')
printf '%s\n' "$batch" | jq '.plan'

Esegui il blocco seguente solo dopo aver autorizzato il piano, la qualità Standard selezionata e il costo stimato. Un’autorizzazione esistente è sufficiente se li copre. L’attesa è limitata a 60 controlli e termina con gli stati completed, failed o cancelled. Se il processo viene interrotto o scade il tempo, conserva l’ID del batch e riprendilo senza creare un’altra traduzione.

Terminal
aiglot batches approve "$id" --quality standard --json

for ((attempt = 0; attempt < 60; attempt++)); do
  status=$(aiglot batches get "$id" --timeout 15 --json | jq -er '.status')
  case "$status" in
    completed)
      aiglot batches download "$id" --output result.csv
      break
      ;;
    failed|cancelled)
      printf 'Batch %s ended with status %s.\n' "$id" "$status" >&2
      exit 1
      ;;
    awaiting_instructions|awaiting_approval)
      printf 'Batch %s needs a decision; inspect its plan before continuing.\n' "$id" >&2
      exit 2
      ;;
  esac
  if ((attempt == 59)); then
    printf 'Wait limit reached. Resume batch %s; do not create a duplicate.\n' "$id" >&2
    exit 1
  fi
  sleep 5
done

Questi sono tutti gli stati che può restituire una traduzione, compresi i tre che la terminano. Rispondono tutti alla stessa domanda: chi sta aspettando e che cosa?

StatoSignificatoChi attendeTerminale
analyzingla struttura del file è in fase di letturanoi, per alcuni secondi
awaiting_instructionsil file è stato letto, ma non è ancora stata richiesta alcuna operazionetu
awaiting_approvalil piano è pronto e il costo è stato calcolatotu
translatingelaborazione in corso; è l’unico stato in cui vengono spesi creditinoi
completedoperazione completata, il file dei risultati è disponibilenessuno✓
failedoperazione terminata senza risultati; consulta error.codetu, per riprovare✓
cancelledoperazione interrotta intenzionalmente; viene addebitato solo il lavoro già svoltonessuno✓

Paginazione

batches list e glossaries list usano cursori. Passa il valore next_cursor della risposta precedente così com’è, usando --cursor, oppure lascia che --all segua i cursori fino a quando has_more è false (con un limite di sicurezza di 200 pagine):

Terminal
aiglot batches list --status completed --all
aiglot glossaries list --all --output ndjson

Con --output ndjson, --all stampa ogni riga di tutte le pagine man mano che arriva. In modalità table e json, invece, stampa un unico risultato combinato con has_more: false, next_cursor: null e il conteggio pages_fetched al posto di request_id, perché non è possibile indicare una singola richiesta quando ne sono state eseguite diverse.

Autenticazione nei flussi CI

Crea una chiave API dedicata con le autorizzazioni minime necessarie e conservala nel gestore dei segreti del provider CI:

Terminal
export AIGLOT_API_KEY="aig_live_…"
aiglot account --json

La CLI cerca le credenziali in quest’ordine: AIGLOT_API_KEY, portachiavi del sistema operativo, quindi file di configurazione protetto.

Codici di uscita

CodiceSignificato
0Operazione riuscita
1Errore API o del server
2Comando o argomenti non validi
3Errore di autenticazione o autorizzazione
4Risorsa non trovata
5Limite di richieste raggiunto
6Conflitto sullo stato della risorsa

Negli script, usa il codice di uscita o il valore strutturato error.code per gestire gli errori, non il testo del messaggio.

Nuovi tentativi

I nuovi tentativi sono automatici, ma solo quando riprovare è sicuro. Per ogni comando, le risposte 429 vengono ritentate rispettando Retry-After e usando un backoff limitato. Le risposte 408 e 5xx vengono ritentate solo per le richieste idempotenti (RFC 9110 §9.2.2): letture, glossaries replace e glossaries delete.

glossaries create, glossaries add, glossaries remove, batches rename e batches archive non vengono ritentati dopo una risposta 5xx, perché la modifica potrebbe essere già stata applicata e un secondo tentativo la eseguirebbe di nuovo. Questi errori vengono restituiti allo script con il codice di uscita 1: rileggi la risorsa e decidi se riprovare, invece di ripetere il comando alla cieca.

Usa --no-retry quando la gestione dei tentativi è affidata al chiamante e --timeout <seconds> (60 per impostazione predefinita) per limitare la durata di una singola richiesta. I comandi distruttivi non restano in attesa all’infinito di una conferma interattiva: per usarli in modalità non interattiva, specifica --force.

Profili

Usa profili con nome per tenere separate le credenziali di workspace o ambienti diversi:

Terminal
aiglot --profile client-a auth login --key "$CLIENT_A_KEY"
aiglot --profile client-a account
export AIGLOT_PROFILE=client-a

Variabili di ambiente

VariabileScopo
AIGLOT_API_KEYChiave API; ha la precedenza sulle credenziali memorizzate
AIGLOT_PROFILEProfilo di credenziali con nome
AIGLOT_NO_TUIForza un output leggibile dalle macchine
AIGLOT_NO_KEYCHAINIgnora il portachiavi del sistema operativo
NO_COLORStandard (no-color.org). Disattiva solo i colori, non modifica il formato dell’output

Use these docs with your AI tools

An AI agent can read this documentation directly. You do not need an account or an API key. Everything here is public and read-only.

Query these docs via MCP

Recommended

Add this server to Claude, Claude Code, Cursor, Mistral, or any tool that supports MCP. Your agent can then search AI Glot Docs documentation and read it in full, instead of answering from memory.

https://ai-glot.com/docs/mcp
  • searchFind the passages that answer a question.
  • fetchRead one page in full, as Markdown.
  • list_pagesSee every page in this documentation.

Query these docs over HTTP

The same tools also work as plain web requests. Use this for scripts, or for any tool that does not support MCP. There is one endpoint per tool. Arguments go in the query string, and the answer comes back as JSON.

https://ai-glot.com/docs/api/docs/search?query=custom+domain

Read the OpenAPI description. It is built from the same definitions as the tools, so it always matches what the endpoints do.

Read these docs as Markdown

Add .md to any page URL to get its Markdown source. You can also send the headerAccept: text/markdown to the page URL itself.

To read the whole documentation in one file, open llms-full.txt. For a short index of every page, open llms.txt.