Claude Opus 5.5 è disponibile su SeedRouter

Text

Riferimento API GLM-5.3

View Markdown

Campi delle richieste GLM-5.3, ragionamento, strumenti, streaming, utilizzo ed esempi completi Chat, Responses e Messages.

GLM-5.3 accetta testo e restituisce testo o chiamate agli strumenti. Ragiona sempre, supporta gli sforzi low, high e max e consente fino a 131.072 token di output. Usa glm-5.3 per il livello Default. Il gruppo predefinito è glm; glm-5.3:glm resta una selezione esplicita dello stesso gruppo. I gruppi aggiuntivi usano il proprio suffisso del modello.

URL di base: https://api.seedrouter.ai. Autenticati con Authorization: Bearer $SEEDROUTER_API_KEY. Conserva le credenziali sul server. Messages accetta anche l’header compatibile x-api-key.

Questo riferimento segue il contratto Chat di Z.ai, lo schema Responses del produttore e la sua guida alla compatibilità Messages. I limiti specifici provengono dalla guida GLM-5.3. L’allineamento della documentazione non dimostra ogni comportamento effettivo. Le verifiche del 29 ottobre 2026 hanno completato richieste testuali e streaming nei tre formati, chiamate di funzione Chat, output come oggetto JSON e continuazione di risposte salvate. Non sono stati accertati riscontri nella cache, durate esplicite della cache e tutti i controlli di compatibilità. I campi di riferimento Messages riportati sotto sono distinti dai campi GLM documentati dal produttore.

Specifica OpenAPI · Riferimento Markdown · Modello e Playground · Guida ai prezzi

Avvio rapido

Ogni esempio invia una richiesta Chat Completions. max_tokens: 2048 è un budget di esempio, non il valore predefinito. Ragionamento e risposta visibile condividono quel budget; esamina finish_reason prima di considerare completa la risposta.

curl https://api.seedrouter.ai/v1/chat/completions \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"glm-5.3","messages":[{"role":"user","content":"Explain an idempotency key with one concrete example."}],"reasoning_effort":"low","max_tokens":2048}'
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["SEEDROUTER_API_KEY"], base_url="https://api.seedrouter.ai/v1")
response = client.chat.completions.create(
    model="glm-5.3",
    messages=[{"role": "user", "content": "Explain an idempotency key with one concrete example."}],
    max_tokens=2048,
    extra_body={"reasoning_effort": "low"},
)
print(response.choices[0].message.content)
print(response.usage)
import OpenAI from 'openai';
const client = new OpenAI({apiKey: process.env.SEEDROUTER_API_KEY, baseURL: 'https://api.seedrouter.ai/v1'});
const response = await client.chat.completions.create({
  model: 'glm-5.3',
  messages: [{role: 'user', content: 'Explain an idempotency key with one concrete example.'}],
  reasoning_effort: 'low',
  max_tokens: 2048,
});
console.log(response.choices[0].message.content);
console.log(response.usage);
package main

import (
    "bytes"
    "fmt"
    "io"
    "net/http"
    "os"
    "time"
)

func main() {
    body := []byte(`{"model":"glm-5.3","messages":[{"role":"user","content":"Explain an idempotency key with one concrete example."}],"reasoning_effort":"low","max_tokens":2048}`)
    req, err := http.NewRequest("POST", "https://api.seedrouter.ai/v1/chat/completions", bytes.NewReader(body))
    if err != nil { panic(err) }
    req.Header.Set("Authorization", "Bearer " + os.Getenv("SEEDROUTER_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    client := &http.Client{Timeout: 3 * time.Minute}
    res, err := client.Do(req)
    if err != nil { panic(err) }
    defer res.Body.Close()
    data, err := io.ReadAll(res.Body)
    if err != nil { panic(err) }
    if res.StatusCode != http.StatusOK { panic(fmt.Sprintf("HTTP %d: %s", res.StatusCode, data)) }
    fmt.Println(string(data))
}

Chat Completions

POST /v1/chat/completions accetta 16 campi di primo livello. I campi non ammettono null se non indicato esplicitamente. I campi facoltativi possono essere omessi; non inviare null al posto dell’omissione.

CampoTipoObbligatorioValore predefinito e vincoli
modelstringaSìglm-5.3 (Default)
messagesarraySìAlmeno un messaggio; deve contenere un messaggio utente o strumento
do_samplebooleanoNotrue; false rende inefficaci temperature e top_p
streambooleanoNofalse
thinkingoggettoNotype: enabled; clear_thinking: true
reasoning_effortstringaNolow, high, max; predefinito max
temperaturenumeroNo0–1 inclusi; predefinito 1
top_pnumeroNo0.01–1 inclusi; predefinito 0.95
max_tokensinteroNo1–131072; nessun valore predefinito Chat pubblicato
tool_streambooleanoNofalse; true richiede stream: true
toolsarrayNoFunction, retrieval o web_search; fino a 128 elementi
tool_choicestringaNoSolo auto
stoparray di stringheNoFino a quattro stringhe nello schema ufficiale; quattro sono state accettate in una richiesta reale, ma la corrispondenza di arresto non è stata verificata
response_formatoggettoNotype obbligatorio: text o json_object; predefinito text
request_idstringaNo6–64 caratteri; identificatore univoco della richiesta del chiamante
user_idstringaNo6–128 caratteri; evita informazioni personali

I messaggi system e user richiedono content come stringa. Un messaggio assistant può contenere content come stringa, reasoning_content e tool_calls. Un messaggio tool richiede content e tool_call_id. Conserva esattamente il ragionamento storico usando thinking.clear_thinking: false, incluso l’ordine delle chiamate dell’assistente e dei risultati degli strumenti. Il ragionamento non può essere disattivato.

Uno strumento funzione usa {type:"function", function:{name, description, parameters}}. Il nome contiene 1–64 lettere ASCII, cifre, trattini bassi o trattini. Lo schema macchina richiede description e parameters; il testo menziona l’omissione per funzioni senza parametri. Usa la forma completa finché il conflitto non sarà risolto. parameters è il JSON Schema della tua funzione; non viene interpretato come contenuto del messaggio.

Uno strumento di recupero usa {type:"retrieval", retrieval:{knowledge_id, prompt_template?}}. Un ID di conoscenza appartiene all’account che serve la richiesta; dichiarare questo strumento non crea una base di conoscenza.

Uno strumento di ricerca web usa {type:"web_search", web_search:{search_engine:"search_pro_jina"}}. I campi facoltativi includono enable, search_query, count (1–50), search_domain_filter, search_recency_filter (oneDay, oneWeek, oneMonth, oneYear, noLimit), content_size (medium, high), result_sequence (before, after), search_result, require_search e search_prompt. Consulta OpenAPI per i tipi esatti. La disponibilità di ricerca e recupero specifica dell’account richiede verifica reale.

La modalità oggetto JSON produce JSON, senza imporre un JSON Schema fornito. Includi i campi desiderati nel prompt e convalida il risultato nella tua applicazione.

Responses

POST /v1/responses accetta 15 campi di primo livello per la creazione. Segue lo schema Responses del produttore, specializzato per GLM-5.3; il comportamento esatto nei diversi servizi resta da verificare.

curl https://api.seedrouter.ai/v1/responses \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"glm-5.3","input":[{"type":"message","role":"user","content":"Give a concise example of a safe retry."}],"reasoning":{"effort":"low"},"max_output_tokens":2048,"store":false}'
CampoTipoObbligatorioValore predefinito e vincoli
modelstringaSìglm-5.3
inputstringa o arraySìElementi di input nativi elencati sotto
instructionsstringaNoIstruzioni di sistema
streambooleanoNofalse
temperaturenumeroNo0–1, massimo due cifre decimali; predefinito 1
top_pnumeroNo0.01–1, massimo due cifre decimali; predefinito 0.95
max_output_tokensinteroNo1–131072; predefinito 65536, ragionamento incluso
stoparray di stringheNoNessun limite di quantità dichiarato in questo protocollo
toolsarrayNoFunction, namespace, custom o web_search
tool_choicestringaNonone o auto
reasoningoggettoNoeffort: low, high, max; predefinito max
textoggettoNoformat.type: text o json_object
prompt_cache_keystringaNoChiave di instradamento della cache; nessun limite di lunghezza documentato
previous_response_idstringaNoRiferimento a una risposta precedentemente salvata
storebooleanoNofalse; indica se salvare questa risposta

Gli elementi messaggio di input richiedono type: "message", un ruolo (user, system, assistant, developer) e contenuto. Il contenuto può essere una stringa, un blocco di testo o un array di blocchi di testo. Usa input_text o output_text dell’assistente con una stringa text. Gli schemi generici per immagini/file non conferiscono capacità visive a questo modello solo testuale.

Gli elementi di input delle chiamate di funzione richiedono type: "function_call", name, call_id e arguments come stringa JSON; namespace è facoltativo. I risultati richiedono type: "function_call_output", call_id e output come stringa. Gli elementi di ragionamento usano type: "reasoning" e un singolo oggetto content: {type:"reasoning_text", text:"..."}. Conservalo senza convertirlo in array.

Gli strumenti funzione richiedono type: "function" e name, con description e parameters facoltativi. Gli strumenti namespace richiedono type: "namespace" e name e possono contenere tools di funzione. Gli strumenti personalizzati richiedono type: "custom" e name. Gli strumenti di ricerca web richiedono type: "web_search". Non copiare in questo formato i campi obbligatori delle funzioni Chat.

La risposta precedente referenziata deve essere stata salvata. Salvare la risposta attuale è una scelta separata; previous_response_id non impone store: true per quella attuale. Il periodo di conservazione del produttore è di sette giorni. Una verifica reale ha salvato una risposta e proseguito dal suo ID con store: false attuale; questo non dimostra ogni operazione sulle risposte salvate.

Operazioni sulle risposte salvate

Quando store: true riesce, conserva invariato l’ID restituito. Queste operazioni autenticate usano lo stesso account che l’ha creato:

  • GET /v1/responses/{response_id} recupera la risposta salvata.
  • GET /v1/responses/{response_id}/input_items elenca gli elementi di input. Campi di query facoltativi: order (asc o desc, predefinito desc), limit (intero 1–100, predefinito 20) e after (last_id dell’ultima pagina).
  • DELETE /v1/responses/{response_id} elimina la risposta salvata.

Una richiesta di creazione successiva può usare l’ID salvato come previous_response_id. L’accesso richiede l’accesso attuale al modello dell’utente originale. La conservazione è di massimo sette giorni; le risposte scadute o eliminate non possono essere continuate. Recupero, eliminazione e continuazione mantengono il vincolo all’account originale. Non è documentato un endpoint di annullamento. Queste operazioni sono coperte da test di contratto locali. La verifica reale del 29 ottobre ha confermato salvataggio e continuazione; recupero ed elenco degli elementi di input hanno restituito 404 e l’eliminazione non è stata testata. Non fare affidamento su recupero, elenco o eliminazione finché la disponibilità non sarà confermata.

Compatibilità Messages

POST /v1/messages usa un involucro compatibile con Anthropic. Includi anthropic-version: 2023-06-01. Il produttore dimostra direttamente model, messages, max_tokens e stream. Non pubblica uno schema GLM Messages completo e segnala differenze rispetto a Claude. Gli altri controlli sono campi del riferimento di compatibilità, non capacità GLM verificate singolarmente.

curl https://api.seedrouter.ai/v1/messages \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'anthropic-version: 2023-06-01' \
  -d '{"model":"glm-5.3","messages":[{"role":"user","content":"Explain a safe retry in two sentences."}],"max_tokens":2048}'
CampoStruttura e convalidaEvidenza
modelStringa obbligatoria glm-5.3Esempio GLM
messagesArray user/assistant obbligatorio non vuoto; stringa o blocchi nativi di testo/strumentiEsempio testuale GLM; le strutture dei blocchi seguono il riferimento di compatibilità
max_tokensIntero obbligatorio 1–131072Esempio GLM e limite di output del modello
streamBooleano; predefinito falseEsempio GLM
systemStringa o array di blocchi di testoRiferimento di compatibilità
temperatureNumero 0–1Riferimento di compatibilità; mappatura non verificata
top_pNumero 0.01–1Riferimento di compatibilità; mappatura non verificata
top_kIntero non negativoRiferimento di compatibilità; mappatura non verificata
stop_sequencesArray di stringheRiferimento di compatibilità
toolsStrumenti client: name, input_schema, description facoltativaRiferimento di compatibilità
tool_choiceOggetto type auto, none, any o tool; lo strumento nominato richiede nameRiferimento di compatibilità
thinkingenabled con budget_tokens, oppure adaptive; non può disattivare il ragionamentoRiferimento di compatibilità e regola GLM del ragionamento sempre attivo
output_configOggetto con effort low, high o maxNome del campo compatibile; mappatura non verificata
metadataOggetto con user_id facoltativoRiferimento di compatibilità
cache_controlMarcatore ephemeral, ttl facoltativo 5m o 1hSolo riferimento di protocollo; comportamento TTL esplicito GLM non verificato

Il budget compatibile del ragionamento enabled è almeno 1024 e inferiore a max_tokens. I blocchi di testo richiedono text; la cronologia di ragionamento richiede thinking e signature; il ragionamento oscurato richiede data. I blocchi di uso degli strumenti richiedono id, name e input; quelli dei risultati richiedono tool_use_id. Nessun blocco di immagini, audio o video è accettato. I marcatori espliciti della cache non dimostrano un riscontro, una durata o una tariffa separata. La cache del contesto documentata del modello è automatica.

Output, streaming e utilizzo

Chat restituisce id, created, model, choices e usage, con request_id e web_search facoltativi. Leggi choices[].message.content, reasoning_content e tool_calls. Una risposta con chiamata a strumenti può non contenere testo di risposta. SSE invia incrementi di ragionamento, testo e argomenti degli strumenti, poi [DONE]. Unisci i frammenti di argomenti per indice di chiamata. Nessun campo stream_options fa parte della richiesta ufficiale GLM Chat.

Responses restituisce l’unione nativa output: messaggi, ragionamento e chiamate agli strumenti. SSE include response.created, response.in_progress, eventi degli elementi di output e delle parti di contenuto, incrementi di testo/ragionamento/argomenti delle funzioni, avanzamento della ricerca e gli eventi finali response.completed, response.incomplete o response.failed. Non richiede un marcatore [DONE]. Conserva indici e numeri di sequenza.

Messages restituisce un involucro messaggio nativo con blocchi di contenuto, stop_reason e usage. I nomi degli eventi includono message_start, content_block_start/delta/stop, message_delta e message_stop. Conserva le firme di ragionamento e gli ID degli strumenti come cronologia opaca.

FormatoInput totaleInput in cacheOutput
Chatprompt_tokensprompt_tokens_details.cached_tokenscompletion_tokens
Responsesinput_tokensinput_tokens_details.cached_tokensoutput_tokens
Messagesinput_tokens più cache_read_input_tokens ed eventuali cache_creation_input_tokenscache_read_input_tokensoutput_tokens

Il ragionamento è un sottoinsieme dell’output, non un addebito aggiuntivo. L’input in cache Chat/Responses è un sottoinsieme dell’input totale. Sottrai le porzioni in cache segnalate separatamente prima di applicare la tariffa dell’input ordinario. Le risposte pubbliche espongono l’utilizzo dei token, non gli importi monetari. I prezzi attuali provengono dalle impostazioni di fatturazione aggiornate; le richieste non riuscite non vengono addebitate.

Convalida ed errori

Tipi non validi, ragionamento disattivato, sforzo non supportato, budget di output eccessivi e input multimediali non superano la convalida. tool_stream di Chat richiede stream. I campi di primo livello non supportati vengono omessi anziché inoltrati. Le credenziali sono obbligatorie; un saldo insufficiente impedisce una richiesta a pagamento. Gli errori usano l’involucro pubblico degli errori (Messages usa la propria struttura nativa). Non considerare mai completo uno stream interrotto e non reinviare automaticamente una richiesta dal risultato incerto.

Il Playground espone gli stessi campi ammessi per il formato selezionato. I valori facoltativi vuoti vengono omessi; false e zero espliciti vengono conservati. Cambiare formato avvia una nuova conversazione. La stima di utilizzo richiede sia l’utilizzo segnalato sia le tariffe attuali.