Models
/modelsDécouvrir les model IDs visibles par la clé.
- Streaming
- —
- Note
- Réponse limitée à la clé ; l’exemple ci-dessous est abrégé.
DOCUMENTATION API
Authentifiez-vous avec votre clé API Sealarca, récupérez les modèles accessibles à cette clé, envoyez des requêtes Responses, Chat Completions ou Claude Messages et reliez le service à votre logiciel.
Les exemples utilisent un model ID retourné par GET /v1/models. Aucun modèle n’est figé dans cette documentation.
Premier appel
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\":\"Résume ce texte confidentiel en trois points.\",\"max_output_tokens\":256}"Structure de réponse
JSON · Réponse abrégée
{"id":"<response-id>","object":"response","status":"completed","model":"<model-id>","output":[{"type":"message","role":"assistant","content":[{"type":"output_text","text":"<generated text>"}]}]}POUR COMMENCER
Suivez cet ordre : accès, découverte des modèles, puis requête côté serveur.
Créez votre compte Sealarca pour accéder au dashboard.
Rechargez votre solde prépayé en CHF avant d’appeler l’API.
Créez une clé API Sealarca et conservez-la côté serveur.
Appelez GET /v1/models et choisissez un ID visible par votre clé.
Utilisez l’ID retourné avec Responses, Chat Completions ou Claude Messages.
L’API publique accepte une clé API Sealarca comme Bearer token ou, pour les clients Claude, via `x-api-key` sur la route Messages.
En-têtes d’authentification
Utilisez `Authorization: Bearer ...` pour Responses et Chat Completions. Les clients Claude peuvent utiliser `x-api-key: ...` avec `anthropic-version` sur `/v1/messages`.
Authorization: Bearer $SEALARCA_API_KEYx-api-key: $SEALARCA_API_KEYanthropic-version: 2023-06-01Conserver la clé côté serveur
Ne l’exposez jamais dans une application web publique, une application mobile distribuée, un dépôt ou une variable NEXT_PUBLIC_*. Desk est un client local distinct : l’utilisateur y fournit sa clé, conservée uniquement pendant la session de l’onglet.
Une clé serveur, la base URL et un corps JSON suffisent. L’exemple canonique utilise Responses.
Clé côté serveur uniquement. Ne placez jamais la clé dans une application web publique, un bundle navigateur, une variable `NEXT_PUBLIC_*`, un dépôt Git ou une application mobile distribuée. Une application web publique doit appeler votre backend, qui appelle ensuite 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\":\"Résume ce texte confidentiel en trois points.\",\"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>"}]}]}Interrogez le catalogue avec la même clé et utilisez exactement un `id` retourné dans `model`.
curl https://api.sealarca.ch/v1/models \
-H "Authorization: Bearer $SEALARCA_API_KEY"{"data":[{"id":"<model-id>","object":"model"}]}La réponse est limitée par la clé. Utilisez un id retourné exactement comme valeur de model ; ne copiez pas un nom de modèle depuis cette page.
Ces statuts décrivent le contrat publié. Les routes non disponibles ne sont volontairement pas publiées.
/modelsDécouvrir les model IDs visibles par la clé.
/responsesFormat recommandé pour les nouvelles intégrations OpenAI SDK.
/chat/completionsFormat messages pour clients existants.
/messagesFormat Messages pour les clients compatibles Claude et les intégrations qui utilisent l’API Messages.
/embeddingsCréer des représentations vectorielles pour la recherche et la similarité.
/vault/proofs/{receiptId}Consulter l’état et les contrôles associés à un reçu Vault.
/vault/proofs/{receiptId}/bundleTélécharger le JWS signé d’une preuve Vault terminale.
/vault/proofs/signing-keysObtenir le JWKS public des clés actives et retirées.
/vault/attestation?nonce=…Demander une attestation fraîche liée à un nonce client.
Quatre exemples : trois utilisent Responses et le quatrième utilise Messages. Choisissez un modèle autorisé pour l’endpoint concerné.
curl https://api.sealarca.ch/v1/responses \
-H "Authorization: Bearer $SEALARCA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$SEALARCA_MODEL_ID\",\"input\":\"Analyse ce document et retourne trois risques.\"}"Responses, Chat Completions et Claude Messages peuvent demander des événements envoyés par le serveur avec stream: true.
Définissez stream à true et utilisez curl -N ou un client HTTP équivalent. La réponse utilise text/event-stream.
Traitez les enregistrements data: séparés par des lignes vides. Les charges utiles et la terminaison dépendent du contrat de la 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\":\"Résume ce dossier.\",\"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\":\"Résume ce dossier.\"}]}"Content-Type: text/event-stream
data: <JSON event>
Une route confidentielle multimodale pour le texte, les images, les outils et les sorties structurées, avec 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."
}
]
}'Lire X-Sealarca-Receipt-ID et X-Sealarca-Receipt-URL sur la réponse. Le reçu devient disponible après finalisation et livraison ; un 404 peut être temporaire. Les états complete, interrupted et failed décrivent l’échange observé.
# 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-keysChaque inférence Vault acceptée fournit un reçu qui relie la réponse à la route et à la session vérifiées par Sealarca.
Avant toute transmission pour exécution, Sealarca contrôle que l’environnement de confiance et le canal associés à la route satisfont aux exigences Vault. Si ce contrôle échoue ou n’est pas disponible, l’inférence est refusée sans fallback vers une route non protégée. Le reçu Vault relie ensuite la réponse à la route et à la session vérifiées.
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\":\"Résume ce dossier.\"}"Le statut initial est pending. Conservez l’identifiant du reçu et utilisez l’URL fournie pour consulter le verdict final.
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 vérification est encore en cours. Réessayez après un court délai.
L’admission, le reçu et la session Vault référencée ont satisfait aux contrôles exigés.
La preuve n’a pas été validée. Ne considérez pas le résultat comme vérifié.
404 signifie que la preuve est absente ou inaccessible ; 410 signifie qu’elle a expiré.
503 · VAULT_VERIFICATION_UNAVAILABLELa vérification Vault n’est pas disponible. L’inférence est refusée sans basculer vers une exécution non protégée.
L’interface standard expose le résultat de la vérification opérée par Sealarca. Elle ne constitue pas l’export intégral des artefacts bruts pour une vérification cryptographique indépendante ; leur accès reste soumis au processus contractuel applicable.
Toute clé active du même utilisateur peut consulter son historique. Ne placez jamais une clé API dans l’URL.
En streaming, le reçu est annoncé avec la réponse ; le verdict définitif devient disponible après la fin du flux.
Les preuves sont conservées 90 jours et ne contiennent ni prompt, ni réponse, ni clé API.
Fournissez un nonce unique de 64 caractères hexadécimaux minuscules pour demander une attestation fraîche et authentifiée.
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 réponse standard contient le statut, le nonce, les dates de vérification et d’expiration, les contrôles normalisés, les digests d’évidence, de runtime et de keyset, ainsi que les empreintes des clés d’environnement utiles. Les artefacts complets restent réservés à l’export d’audit contractuellement autorisé.
{
"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>"]
}
}Chaque valeur est sha256: suivie du digest hexadécimal des octets observés dans la chaîne Vault. request_received couvre le corps reçu par l’environnement, request_forwarded le corps éventuellement transformé avant le modèle, et response_returned les octets de réponse observés, flux compris. Après normalisation ou transformation, ces octets peuvent différer des octets HTTP originaux du client.
Une preuve terminale verified ou failed est disponible sous sealarca-vault-proof-bundle/1. Son payload est canonisé selon RFC 8785 puis signé en JWS avec Ed25519. Le JWKS public conserve les clés actives et retirées pour vérifier un bundle archivé après 90 jours.
La signature garantit l’intégrité et l’origine Sealarca du bundle. Elle ne prolonge pas la validité temporelle de l’attestation et ne constitue pas, à elle seule, une vérification matérielle indépendante.
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_UNAVAILABLEChamps minimaux, format de sortie et comportement de streaming des routes confirmées.
Aucun corps. Bearer token requis.
Liste limitée par la clé contenant les model IDs visibles pour cette clé.
model
input
max_output_tokens
stream
Objet `response`; les SDK exposent `output_text`.
Requis : `model` et `input`. Champs courants documentés : `max_output_tokens` (entier positif) et `stream` (booléen). Les autres champs dépendent du modèle et ne font pas partie de ce contrat minimal.
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\":\"Résume ce texte confidentiel en trois points.\",\"max_output_tokens\":256}"model
messages
max_tokens
stream
choices[0].message.content
Requis : `model` et `messages`. Champs courants documentés : `max_tokens` (entier positif) et `stream` (booléen). Les autres champs dépendent du modèle et ne font pas partie de ce contrat minimal.
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\":\"Résume ce dossier.\"}],\"max_tokens\":256}"model
messages
max_tokens
stream
content
Requis : `model`, `max_tokens` et `messages`. `stream` active les événements SSE. Les autres champs dépendent du contrat publié.
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\":\"Résume ce dossier.\"}]}"Ne réessayez pas aveuglément. Corrigez les 4xx déterministes et appliquez un backoff borné aux erreurs temporaires.
Request ID. Chaque réponse du contrat `/v1/` inclut un header `x-request-id` généré par Sealarca. Le corps d’erreur peut aussi contenir un identifiant distinct `(id=…)` ; conservez les deux lorsqu’ils sont présents.
Ces recommandations suivent le comportement actuel de l’authentification, de l’accès aux modèles, de la facturation et du suivi des requêtes.
Chargez la clé depuis une variable d’environnement ou un gestionnaire de secrets et faites-la tourner si elle est exposée.
Appelez /v1/models avec la même clé et évitez de figer un model ID dans le code déployé.
Corrigez les erreurs 4xx déterministes. Utilisez un backoff borné pour 429, 5xx et les timeouts de passerelle.
Conservez x-request-id et tout identifiant d’erreur renvoyé avec un échec pour le support et le diagnostic.
L’API utilise des crédits prépayés en CHF. Le solde est contrôlé avant la requête et l’usage est débité sur l’appel réel.
Le solde est alimenté par des recharges de crédits.
L’entrée et la sortie peuvent avoir des tarifs distincts. Le catalogue affiche les prix publics par modèle.
Rechargez le solde avant de réessayer.
Utilisez ces liens pour l’accès au compte, la consommation des modèles, les protections et le périmètre technique du service.
Suivez le parcours compte, crédits et clé API.
Consultez le catalogue dynamique et les informations de consommation publiées.
Découvrez les protections, le traitement des données et leurs limites.
Comprenez le flux public du service et l’environnement d’exécution protégé.
Créez votre accès, découvrez un modèle autorisé et envoyez votre première requête côté serveur.