Models
/modelsScopri gli ID dei modelli visibili alla chiave.
- Streaming
- —
- Nota
- Risposta limitata alla chiave; l’esempio seguente è abbreviato.
DOCUMENTAZIONE API
Autenticatevi con la vostra chiave API Sealarca, scoprite i modelli disponibili, inviate richieste Responses, Chat Completions o Claude Messages e collegate il servizio al vostro software.
Gli esempi usano un ID modello restituito da GET /v1/models. Nessun modello è fissato in questa documentazione.
Prima chiamata
cURL · Responses
curl https://api.sealarca.ch/v1/responses \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"input\":\"Riassumi questo testo riservato in tre punti.\",\"max_output_tokens\":256}"Struttura della risposta
JSON · Risposta abbreviata
{"id":"<response-id>","object":"response","status":"completed","model":"<model-id>","output":[{"type":"message","role":"assistant","content":[{"type":"output_text","text":"<generated text>"}]}]}INIZIATE QUI
Seguite questo ordine: accesso, scoperta dei modelli e poi una richiesta lato server.
Create il vostro account Sealarca per accedere al dashboard.
Ricaricate il saldo prepagato in CHF prima di chiamare l’API.
Create una chiave API Sealarca e conservatela sul server.
Chiamate GET /v1/models e scegliete un ID visibile alla vostra chiave.
Usate l’ID restituito con Responses, Chat Completions o Claude Messages.
L’API pubblica accetta una chiave API Sealarca come Bearer token oppure, per i client Claude, tramite `x-api-key` sulla route Messages.
Header di autenticazione
Usate `Authorization: Bearer ...` per Responses e Chat Completions. I client Claude possono usare `x-api-key: ...` con `anthropic-version` su `/v1/messages`.
Authorization: Bearer $SEALARCA_API_KEYx-api-key: $SEALARCA_API_KEYanthropic-version: 2023-06-01Conservare la chiave sul server
Non esponetela mai in un’applicazione web pubblica, un’app mobile distribuita, un repository o una variabile NEXT_PUBLIC_*. Desk è un client locale distinto: l’utente fornisce la chiave, conservata solo per la sessione della scheda.
Sono sufficienti una chiave lato server, la base URL e un corpo JSON. L'esempio canonico usa Responses.
Solo chiave lato server. Non inserite mai la chiave in un’applicazione web pubblica, in un bundle del browser, in una variabile `NEXT_PUBLIC_*`, in un repository Git o in un’app mobile distribuita. Un’applicazione web pubblica deve chiamare il vostro backend, che chiama poi Sealarca.
export SEALARCA_API_KEY="YOUR_SEALARCA_API_KEY"
export SEALARCA_MODEL_ID="MODEL_ID_FROM_V1_MODELS"
curl https://api.sealarca.ch/v1/responses \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"input\":\"Riassumi questo testo riservato in tre punti.\",\"max_output_tokens\":256}"{"id":"<response-id>","object":"response","status":"completed","model":"<model-id>","output":[{"type":"message","role":"assistant","content":[{"type":"output_text","text":"<generated text>"}]}]}Interroga il catalogo con la stessa chiave e usa l'`id` restituito esattamente in `modello`.
curl https://api.sealarca.ch/v1/models \
-H "Authorization: Bearer $SEALARCA_API_KEY"{"data":[{"id":"<model-id>","object":"model"}]}La risposta è limitata dalla chiave. Usate un id restituito esattamente come valore di model; non copiate un nome modello da questa pagina.
Questi stati descrivono il contratto pubblicato. Le route non disponibili non sono pubblicate intenzionalmente.
/modelsScopri gli ID dei modelli visibili alla chiave.
/responsesFormato consigliato per le nuove integrazioni OpenAI SDK.
/chat/completionsFormato Messages per i client esistenti.
/messagesFormato Messages per client compatibili con Claude e integrazioni che usano la Messages API.
/embeddingsCreare rappresentazioni vettoriali per ricerca e similarità.
/vault/proofs/{receiptId}Consultare lo stato e i controlli associati a una ricevuta Vault.
/vault/proofs/{receiptId}/bundleScaricare il JWS firmato di una prova Vault terminale.
/vault/proofs/signing-keysOttenere il JWKS pubblico delle chiavi attive e ritirate.
/vault/attestation?nonce=…Richiedere un’attestazione recente legata a un nonce del client.
Quattro esempi: tre usano Responses e il quarto Messages. Scegliete un modello autorizzato per l’endpoint interessato.
curl https://api.sealarca.ch/v1/responses \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"input\":\"Analizza questo documento e restituisci tre rischi.\"}"Responses, Chat Completions e Claude Messages possono richiedere eventi inviati dal server con stream: true.
Impostate stream su true e usate curl -N o un client HTTP equivalente. La risposta usa text/event-stream.
Elaborate i record data: separati da righe vuote. I payload e la terminazione dipendono dal contratto della route.
curl -N https://api.sealarca.ch/v1/responses \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"input\":\"Riassumi questo file.\",\"stream\":true}"curl -N https://api.sealarca.ch/v1/messages \
-H "x-api-key: $SEALARCA_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"max_tokens\":256,\"stream\":true,\"messages\":[{\"role\":\"user\",\"content\":\"Riassumi questo file.\"}]}"Content-Type: text/event-stream
data: <JSON event>
Una rotta confidenziale multimodale per testo, immagini, strumenti e output strutturati, con streaming.
curl https://api.sealarca.ch/v1/responses \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "glm.5.3-flash-shield",
"input": "Reply with OK.",
"reasoning": {
"effort": "low"
},
"store": false,
"max_output_tokens": 256
}'curl https://api.sealarca.ch/v1/chat/completions \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "glm.5.3-flash-shield",
"messages": [
{
"role": "user",
"content": "Reply with OK."
}
],
"reasoning_effort": "low",
"max_tokens": 256,
"stream": true
}'curl https://api.sealarca.ch/v1/messages \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "glm.5.3-flash-shield",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": "Reply with OK."
}
]
}'Leggere X-Sealarca-Receipt-ID e X-Sealarca-Receipt-URL dalla risposta. La ricevuta è disponibile dopo finalizzazione e consegna; un 404 può essere temporaneo. complete, interrupted e failed descrivono lo scambio osservato.
# X-Sealarca-Receipt-ID / X-Sealarca-Receipt-URL / X-Sealarca-Proof-Profile
curl https://api.sealarca.ch/v1/vault/proofs/$RECEIPT_ID/bundle \
-H "Authorization: Bearer $SEALARCA_API_KEY"
# JWKS: https://api.sealarca.ch/v1/vault/proofs/signing-keysOgni inferenza Vault accettata fornisce una ricevuta che collega la risposta alla route e alla sessione verificate da Sealarca.
Prima di qualsiasi inoltro per l’esecuzione, Sealarca controlla che l’ambiente di fiducia e il canale associati alla route soddisfino i requisiti Vault. Se questo controllo fallisce o non è disponibile, l’inferenza viene rifiutata senza fallback verso una route non protetta. La ricevuta Vault collega quindi la risposta alla route e alla sessione verificate.
curl -i https://api.sealarca.ch/v1/responses \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"input\":\"Riassumi questo file.\"}"Lo stato iniziale è pending. Conservate l’identificatore della ricevuta e usate l’URL fornito per consultare il verdetto finale.
export SEALARCA_VAULT_PROOF_URL="<X-Sealarca-Vault-Proof-URL>"
curl "$SEALARCA_VAULT_PROOF_URL" \
-H "Authorization: Bearer $SEALARCA_API_KEY"{
"schema": "sealarca-vault-proof/1",
"receipt_id": "<receipt-id>",
"status": "verified",
"model": "<model-id>",
"created_at": "<ISO-8601>",
"updated_at": "<ISO-8601>",
"verified_at": "<ISO-8601>",
"expires_at": "<ISO-8601>",
"admission": {
"status": "verified",
"checked_at": "<ISO-8601>",
"attested_at": "<ISO-8601>",
"expires_at": "<ISO-8601>",
"evidence_digest": "sha256:<hex>",
"keyset_digest": "sha256:<hex>"
},
"checks": [
{ "id": "attestation", "status": "verified" },
{ "id": "receipt", "status": "verified" }
],
"hashes": {
"request": "sha256:<hex>",
"response": "sha256:<hex>",
"request_received": "sha256:<hex>",
"request_forwarded": "sha256:<hex>",
"response_returned": "sha256:<hex>",
"keyset": "sha256:<hex>",
"evidence": "sha256:<hex>",
"runtime": "sha256:<hex>"
}
}La verifica è ancora in corso. Riprovate dopo un breve intervallo.
L’ammissione, la ricevuta e la sessione Vault referenziata hanno soddisfatto i controlli richiesti.
La prova non è stata verificata. Non considerate il risultato come verificato.
404 indica che la prova è assente o inaccessibile; 410 indica che è scaduta.
503 · VAULT_VERIFICATION_UNAVAILABLELa verifica Vault non è disponibile. L’inferenza viene rifiutata senza passare a un’esecuzione non protetta.
L’interfaccia standard espone il risultato della verifica effettuata da Sealarca. Non è un’esportazione completa degli artefatti grezzi per una verifica crittografica indipendente; l’accesso resta soggetto alla procedura contrattuale applicabile.
Qualsiasi chiave attiva dello stesso utente può consultare la cronologia. Non inserite mai una chiave API nell’URL.
In streaming, la ricevuta viene annunciata con la risposta; il verdetto finale diventa disponibile dopo la fine del flusso.
Le prove sono conservate per 90 giorni e non contengono prompt, risposta o chiave API.
Fornite un nonce univoco di 64 caratteri esadecimali minuscoli per richiedere un’attestazione recente e autenticata.
export SEALARCA_VAULT_NONCE="<64-lowercase-hex-characters>"
curl "https://api.sealarca.ch/v1/vault/attestation?nonce=$SEALARCA_VAULT_NONCE" \
-H "Authorization: Bearer $SEALARCA_API_KEY"La risposta standard contiene stato, nonce, date di verifica e scadenza, controlli normalizzati, digest di evidence, runtime e keyset e le impronte utili delle chiavi dell’ambiente. Gli artefatti completi restano riservati all’esportazione di audit autorizzata contrattualmente.
{
"schema": "sealarca-vault-attestation/1",
"status": "verified",
"nonce": "<64-lowercase-hex-characters>",
"verified_at": "<ISO-8601>",
"expires_at": "<ISO-8601>",
"checks": [{ "id": "<check-id>", "status": "verified" }],
"measurements": {
"evidence": "sha256:<hex>",
"runtime": "sha256:<hex>",
"keyset": "sha256:<hex>"
},
"key_fingerprints": {
"receipt_signing": ["sha256:<hex>"],
"tls": ["sha256:<hex>"],
"e2ee": ["sha256:<hex>"]
}
}Ogni valore è sha256: seguito dal digest esadecimale dei byte osservati nella catena Vault. request_received copre il corpo ricevuto dall’ambiente, request_forwarded il corpo eventualmente trasformato prima del modello e response_returned i byte di risposta osservati, compresi i flussi. Dopo normalizzazione o trasformazione, questi byte possono differire dai byte HTTP originali del client.
Una prova terminale verified o failed è disponibile come sealarca-vault-proof-bundle/1. Il payload è canonizzato secondo RFC 8785 e poi firmato in formato JWS con Ed25519. Il JWKS pubblico conserva le chiavi attive e ritirate per verificare un bundle archiviato dopo 90 giorni.
La firma garantisce l’integrità e l’origine Sealarca del bundle. Non estende la validità temporale dell’attestazione e, da sola, non costituisce una verifica hardware indipendente.
curl -f "$SEALARCA_VAULT_PROOF_URL/bundle" \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-o sealarca-vault-proof.jws.json
curl -f "https://api.sealarca.ch/v1/vault/proofs/signing-keys" \
-o sealarca-vault-jwks.jsonimport { createHash, createPublicKey, verify } from "node:crypto";
import { readFileSync } from "node:fs";
const bundle = JSON.parse(readFileSync("sealarca-vault-proof.jws.json", "utf8"));
const jwks = JSON.parse(readFileSync("sealarca-vault-jwks.json", "utf8"));
const header = JSON.parse(Buffer.from(bundle.protected, "base64url"));
if (header.alg !== "EdDSA" || header.typ !== "sealarca-vault-proof+jws") throw new Error("Unexpected JWS algorithm");
const jwk = jwks.keys.find((key) => key.kid === header.kid);
if (!jwk || jwk.kty !== "OKP" || jwk.crv !== "Ed25519") throw new Error("Signing key not found or unsupported");
// Obtain this fingerprint independently from your current Sealarca contract/guide.
// Never trust a fingerprint received alongside an untrusted bundle.
const expected = process.env.SEALARCA_VAULT_JWK_SHA256;
if (!expected) throw new Error("Trusted JWK fingerprint required");
const thumbprint = createHash("sha256")
.update(JSON.stringify({ crv: jwk.crv, kty: jwk.kty, x: jwk.x }))
.digest("hex");
if ("sha256:" + thumbprint !== expected) throw new Error("Unexpected signing key");
const valid = verify(
null,
Buffer.from(bundle.protected + "." + bundle.payload),
createPublicKey({ key: jwk, format: "jwk" }),
Buffer.from(bundle.signature, "base64url"),
);
if (!valid) throw new Error("Invalid Vault proof signature");
console.log(JSON.parse(Buffer.from(bundle.payload, "base64url")));503 · VAULT_PROOF_SIGNING_UNAVAILABLECampi minimi, formato di output e comportamento dello streaming per le route confermate.
Nessun corpo della richiesta. Token Bearer obbligatorio.
Elenco limitato dalla chiave, contenente gli ID dei modelli visibili a quella chiave.
model
input
max_output_tokens
stream
Oggetto `response`; gli SDK espongono `output_text`.
Obbligatori: `model` e `input`. Campi comuni documentati: `max_output_tokens` (intero positivo) e `stream` (booleano). Gli altri campi dipendono dal modello e non fanno parte di questo contratto minimo.
export SEALARCA_API_KEY="YOUR_SEALARCA_API_KEY"
export SEALARCA_MODEL_ID="MODEL_ID_FROM_V1_MODELS"
curl https://api.sealarca.ch/v1/responses \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"input\":\"Riassumi questo testo riservato in tre punti.\",\"max_output_tokens\":256}"model
messages
max_tokens
stream
choices[0].message.content
Obbligatori: `model` e `messages`. Campi comuni documentati: `max_tokens` (intero positivo) e `stream` (booleano). Gli altri campi dipendono dal modello e non fanno parte di questo contratto minimo.
curl https://api.sealarca.ch/v1/chat/completions \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"messages\":[{\"role\":\"user\",\"content\":\"Riassumi questo file.\"}],\"max_tokens\":256}"model
messages
max_tokens
stream
content
Obbligatori: `model`, `max_tokens` e `messages`. `stream` attiva gli eventi SSE. Gli altri campi dipendono dal contratto pubblicato.
curl https://api.sealarca.ch/v1/messages \
-H "x-api-key: $SEALARCA_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"max_tokens\":256,\"messages\":[{\"role\":\"user\",\"content\":\"Riassumi questo file.\"}]}"Non riprovare alla cieca. Correggi gli errori 4xx deterministici e applica un backoff limitato agli errori temporanei.
ID richiesta. Ogni risposta del contratto `/v1/` include un’intestazione `x-request-id` generata da Sealarca. Il corpo dell’errore può includere anche un identificativo distinto `(id=…)`; conservare entrambi quando presenti.
Queste raccomandazioni seguono il comportamento attuale di autenticazione, accesso ai modelli, fatturazione e tracciamento delle richieste.
Caricate la chiave da una variabile d’ambiente o da un secret manager e ruotatela se viene esposta.
Chiamate /v1/models con la stessa chiave ed evitate di fissare un ID modello nel codice distribuito.
Correggete gli errori 4xx deterministici. Usate un backoff limitato per 429, 5xx e timeout del gateway.
Conservate x-request-id e ogni ID errore restituito con un errore per l’assistenza e la diagnosi.
L’API utilizza crediti prepagati in CHF. Il saldo viene verificato prima della richiesta e l’utilizzo effettivo viene addebitato.
Il saldo viene alimentato tramite ricariche di crediti.
Input e output possono avere tariffe diverse. Il catalogo mostra i prezzi pubblici di ciascun modello.
Ricarica il saldo prima di riprovare.
Usate questi link per accesso all’account, consumo dei modelli, protezioni e perimetro tecnico del servizio.
Seguite il percorso per account, crediti e chiave API.
Consultate il catalogo dinamico e le informazioni pubblicate sull’utilizzo.
Scoprite le protezioni, il trattamento dei dati e i relativi limiti.
Comprendete il flusso pubblico del servizio e l’ambiente di esecuzione protetto.
Create l’accesso, scoprite un modello autorizzato e inviate la vostra prima richiesta lato server.