Aller au contenu

Quickstart

L’API Astrolabe Chat est OpenAI-compatible : si votre outil parle à OpenAI, il parle à Astrolabe Chat.

Depuis le portail développeur : créez une organisation, générez une clé API. Vous obtenez :

  • Base URL : https://api.astrolabe.chat/v1
  • Clé : sk-...

À la création, vous choisissez ce que la clé peut faire. Sept permissions, combinables :

PermissionScopeDonne accès à
Chat / inférencechat/v1/chat/completions, /v1/models, embeddings
Bases : lecturekb:readlecture des bases de connaissance (liste, recherche, export)
Bases : écriturekb:writecréation / modification / suppression de bases et documents
Connecteur MCPmcple serveur MCP /v1/mcp (RAG exposé comme outils)
Recherche webweb_searchles outils web_search / web_fetch dans la boucle agentique
Connecteurs APIconnectionsutiliser les connecteurs API (/v1/connections, outils connection:…)
Exécution de codecodel’outil code (sandbox isolé) dans la boucle agentique

Une clé sans liste de permissions est illimitée (rétrocompatibilité).

Une clé qui appelle une surface hors de ses permissions reçoit 403. Pour un connecteur (Claude, ChatGPT, n8n), une clé « Connecteur MCP » seule suffit et limite l’exposition. Les clés créées avant cette fonctionnalité restent sans restriction (toutes permissions).

Fenêtre de terminal
curl https://api.astrolabe.chat/v1/chat/completions \
-H "Authorization: Bearer $ASTROLABE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mistral-small",
"messages": [{"role": "user", "content": "Explique l'\''ESS en une phrase."}],
"max_tokens": 500
}'
from openai import OpenAI
client = OpenAI(
base_url="https://api.astrolabe.chat/v1",
api_key="sk-...",
)
resp = client.chat.completions.create(
model="mistral-small",
messages=[{"role": "user", "content": "Bonjour !"}],
max_tokens=500,
)
print(resp.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.astrolabe.chat/v1",
apiKey: process.env.ASTROLABE_API_KEY,
});
const resp = await client.chat.completions.create({
model: "mistral-small",
messages: [{ role: "user", content: "Bonjour !" }],
max_tokens: 500,
});
console.log(resp.choices[0].message.content);

mistral-small raisonne avant de répondre sur les tâches complexes. Ce raisonnement est exposé dans le champ reasoning_content du message (peut être null si le modèle n’a pas jugé utile de raisonner) :

{
"choices": [{
"message": {
"role": "assistant",
"content": "La réponse finale.",
"reasoning_content": "…réflexion interne… (null si absent)"
}
}]
}

Pour la sortie structurée (json_schema / json_object), le raisonnement est automatiquement désactivé — reasoning_content est toujours null et max_tokens n’a besoin de couvrir que le JSON final.

L’impact pratique sur max_tokens : les tokens de réflexion sont comptabilisés. Avec une valeur trop basse en mode chat, la réponse peut être vide ou tronquée. Voir Référence API — Raisonnement pour les détails.