L'API Sancti est compatible avec le format OpenAI. Si vous utilisez déjà l'API OpenAI, changez juste la baseURL — ça marche.
https://api.sancti.app/v1http://localhost:3001/v1 en localToutes les requêtes nécessitent un header Authorization.
Authorization: Bearer sk-sancti-YOUR_API_KEYObtenez votre clé depuis sancti settings → API Keys.
curl https://api.sancti.app/v1/models \
-H "Authorization: Bearer sk-sancti-YOUR_KEY"Endpoint principal, compatible OpenAI /chat/completions.
/v1/chat/completionsCrée une complétion de conversation
curl https://api.sancti.app/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-sancti-YOUR_KEY" \
-d '{
"model": "sancti-1",
"messages": [
{ "role": "user", "content": "Explique les closures en JavaScript" }
]
}'{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"model": "sancti-1",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "Une closure en JavaScript est une fonction qui..."
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 87,
"total_tokens": 99
}
}modelstringrequisID du modèle (sancti-1, sancti-flash, ou tout modèle Ollama)messagesarrayrequisListe des messages. Chaque message: {role, content}streambooleanoptionnelActive le streaming SSE (défaut: false)temperaturenumberoptionnelCréativité 0–2 (défaut: 0.7)max_tokensintegeroptionnelLimite de tokens dans la réponsesystemstringoptionnelPrompt système (raccourci Sancti)memorybooleanoptionnelActive la mémoire persistante Sancti (défaut: false)Listez et interrogez les modèles disponibles.
/v1/modelsListe tous les modèles disponibles
/v1/models/{model_id}Détails d'un modèle spécifique
{
"data": [
{ "id": "sancti-auto", "type": "chat", "provider": "sancti" },
{ "id": "sancti-1", "type": "chat", "provider": "sancti" },
{ "id": "sancti-flash", "type": "chat", "provider": "sancti" },
{ "id": "sancti-code", "type": "code", "provider": "sancti" },
// + tous vos modèles Ollama locaux
]
}L'API Mémoire permet de lire et écrire dans le graphe de connaissance Sancti.
/v1/memoryRécupère les souvenirs pertinents pour un contexte donné
/v1/memoryAjoute un nouveau souvenir
/v1/memory/{id}Supprime un souvenir spécifique
/v1/memory/searchRecherche sémantique dans la mémoire
curl https://api.sancti.app/v1/memory/search \
-H "Authorization: Bearer sk-sancti-YOUR_KEY" \
-G --data-urlencode "q=préférences de code" \
--data-urlencode "limit=5"Déclenchez et orchestrez les agents CODAO via l'API.
/v1/agentsListe les agents disponibles et leur statut
/v1/agents/{id}/runLance un agent sur un fichier ou contexte
/v1/agents/busSSE — flux d'événements du Cognitive Bus
curl https://api.sancti.app/v1/agents/security/run \
-H "Authorization: Bearer sk-sancti-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"context": "auth/jwt.ts",
"mode": "scan"
}'Activez le streaming avec stream: true — réponses en temps réel via SSE.
import { SanctiClient } from '@sancti/sdk';
const sancti = new SanctiClient({ apiKey: process.env.SANCTI_API_KEY });
const stream = await sancti.chat.completions.create({
model: 'sancti-1',
messages: [{ role: 'user', content: 'Écris une fonction de tri en Rust' }],
stream: true,
});
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta?.content || '';
process.stdout.write(delta);
}L'API retourne des erreurs au format standard JSON.
bad_requestParamètre invalide ou manquantunauthorizedClé API manquante ou invalidemodel_not_foundLe modèle demandé n'existe pasrate_limit_exceededTrop de requêtes — réessayez après le header Retry-Afterinternal_errorErreur serveur — contactez le supportmodel_unavailableModèle local indisponible (Ollama non démarré ?)SDK officiel — compatible Node.js et navigateur.
npm install @sancti/sdk
# ou
pnpm add @sancti/sdkimport { SanctiClient } from '@sancti/sdk';
const sancti = new SanctiClient({
apiKey: process.env.SANCTI_API_KEY,
baseURL: 'https://api.sancti.app/v1', // ou localhost:3001/v1
});
// Chat simple
const res = await sancti.chat.completions.create({
model: 'sancti-1',
messages: [{ role: 'user', content: 'Hello' }],
});
// Avec mémoire persistante
const res2 = await sancti.chat.completions.create({
model: 'sancti-1',
messages: [{ role: 'user', content: 'Tu te souviens de moi ?' }],
memory: true,
userId: 'user-123',
});
// Lister les modèles
const models = await sancti.models.list();Essayez l'API dans le playground ou téléchargez le SDK.