Référence de l'API
Les points d'accès HTTP publics de Sextant.
Les bases#
Questions#
POST /v1/ask#
Toutes les questions, un seul point d'accès: un fait, une comparaison, une liste sur plusieurs sources ou un rapport complet. Sextant choisit comment chercher (une recherche directe, ou le workflow de recherche pour une question en plusieurs parties, comparative ou une liste) et la longueur de la réponse (réponse adaptative).
Sans sources: toute la bibliothèque (pour une relance, les sources du thread). Un dossier est remplacé par ses
sources et celles de ses sous-dossiers. Tout autre champ est refusé (422).
{ "sources": "https://example.com/rapport-annuel.pdf", "question": "Quel âge a le PDG ?" }{ "sources": ["Contrats 2025", "src_…"], "question": "Une revue complète de ces contrats : renouvellements, pénalités, risques." }Réponse:
Erreurs: 400 (invalid_request, fetch_blocked), 402, 404 (identifiant, source ou dossier introuvable), 413,
415, 422, 502.
Sortie structurée#
Avec answer_schema, un programme lit directement les valeurs de la réponse. Sextant rédige sa réponse citée comme
d'habitude, puis remplit le schéma à partir de cette réponse, avec les preuves qu'elle cite pour la forme exacte d'un
nom ou d'un chiffre. Une valeur vient de la réponse seulement; ce que la réponse ne donne pas vaut null, ou est omis
quand le schéma ne l'exige pas.
{
"sources": "src_…",
"question": "Combien de salariés l'entreprise comptait-elle en fin d'exercice, et où est son siège ?",
"answer_schema": {
"type": "object",
"properties": {
"salaries": { "type": "integer" },
"siege": { "type": "string", "description": "ville" }
},
"required": ["salaries"]
}
}La réponse garde answer et evidence, et ajoute data, par exemple { "salaries": 79390, "siege": "San Francisco" }.
processing.answer_schema indique si les données suivent le schéma (valid, et problems sinon). Tout schéma JSON
(draft 2020-12) jusqu'à 20 000 caractères; un schéma invalide est refusé (400). Le remplir ajoute un court appel de
modèle au prix de la question.
Streaming#
ask envoie des Server-Sent Events avec "stream": true ou Accept: text/event-stream.
event: <nom>, puisdata: <JSON>avect_ms(millisecondes depuis le début du run).- Ouverture: commentaire
: connected;: keepaliveaprès 15 s de silence. - Fin:
resultpuisdone, ouerrorpuisdone. Fermer la connexion annule le run. - Authentification,
402, identifiant inconnu, champ hors bornes: erreur JSON ordinaire, avant le flux. - Ignorez les événements inconnus: la liste peut s'allonger.
Sources#
POST /v1/sources#
Enregistre un fichier ou une source.
source, wait et folder_id passent en JSON, en champ de formulaire ou (wait, folder_id) en paramètre de
requête.
curl -s "$SEXTANT_API/v1/sources" -H "authorization: Bearer $SEXTANT_API_KEY" \
-F "file=@proces-verbal.pdf" -F "folder_id=fld_…" -F "wait=false"wait=true:200:source(objet source),outline,outline_text(plan en texte indenté),elapsed_ms,cached(source déjà connue).wait=false:202 {"import": {...}}dès la spécification validée ou le fichier stocké; la suite tourne en arrière-plan (Imports). Une source déjà en cours d'import renvoie le même import.
Erreurs: 400 invalid_request (ni file ni source, fichier trop gros), 400 fetch_blocked, 402
(stockage), 404 (dossier), 415 (vérifié avant l'import).
GET /v1/sources#
Réponse: {"sources": [...], "total": n}; ligne: id, uri, type, title, state, length, length_unit,
size_bytes, mime_type, created_at, updated_at, live (source dynamique).
GET /v1/sources/{source_id}#
Objet source: id, uri, type (pdf, video, audio, youtube, web_page, website, text, image,
office, records), title, length et length_unit (pages, secondes, caractères...), processing_state,
capabilities (native_text, bookmarks, subtitles, chapters...), metadata, stats, size_bytes,
mime_type, media_url, created_at, updated_at, card (courte description pour choisir parmi les sources),
excerpt (premiers mots), settings (source dynamique: refresh_s, window_s, valeurs actuelles et par défaut).
PATCH /v1/sources/{source_id}#
Réponse: la ligne de la source. Erreurs: 400 (réglage non applicable à cette source), 404.
Autres points d'accès#
Imports#
Sources ajoutées avec wait=false.
Import: id (imp_…), kind (spec, upload), label (spécification ou nom de fichier, secrets masqués), type,
connector, folder_id, status (queued, running, done, failed, cancelled), stage (queued,
fetching, reading, outlining, done), progress (0 à 1 ou null), message, source_id, source (une fois
terminé), error (code, message), created_at, updated_at, finished_at.
Connecteurs#
Dossiers#
Dossier: id (fld_…), name, parent_id, description, color, source_ids, n_sources (directes),
n_folders, n_total (sous-dossiers compris), types, types_total, created_at, updated_at. Erreurs: 400
(nom pris à côté, déplacement dans lui-même ou un de ses sous-dossiers), 404.
Régions#
Un passage en entier, par identifiant de région (region_id d'une preuve, id d'un candidat), pour vérifier une
citation dans son contexte.
Erreurs: 402, 404.
Runs#
Lien de partage: jeton dans l'en-tête x-sextant-share (ou ?share= pour les URL d'images et de vidéos). Il ouvre ce
run, ses tableaux, son SQL et les sources lues, en lecture seule, rien d'autre (403); il ne crée pas d'autre lien.
Threads#
Facturation et consommation#
Paiement: 400 hors des bornes de topup, 503 provider_unavailable sans paiements configurés.