Documentation
TogoLM API
Une API REST + SSE pour accéder au corpus togolais : recherche sémantique, RAG en streaming avec réflexion visible et navigation des documents publics.
Base URL
https://api.togolm.comEn-têtes HTTP
| Header | Description |
|---|---|
X-API-Key | Clé API TogoLM, optionnelle sur les endpoints publics, augmente le quota |
Content-Type | application/json, requis pour les requêtes POST |
Démarrer en 4 étapes
Gratuit, instantané. Utilisez le formulaire ci-dessous : la clé est affichée une seule fois.
Ajoutez le header
Passez votre clé via X-API-Key sur chaque requête pour bénéficier de 200 req/jour.
POST /v1/query/stream : réponse RAG avec réflexion Gemini 2.5 Flash en streaming.
GET /v1/documents et GET /v1/search pour naviguer les 62 168 documents togolais.
Obtenir une clé API
Gratuit et instantané. La clé n'est affichée qu'une seule fois : sauvegardez-la immédiatement.
Plans & quotas
Authentification
Passez votre clé dans le header X-API-Key de chaque requête HTTP.
curl https://api.togolm.com/v1/search?q=budget \
-H "X-API-Key: tgolm_your_key_here"/v1/statsRetourne les statistiques en direct du corpus : nombre de documents, de fragments, sources actives et langues supportées.
curl https://api.togolm.com/v1/stats{
"total_documents": 62168,
"total_chunks": 310840,
"languages": ["fr"],
"sources": [
{ "source": "jo.gouv.tg", "documents": 34, "chunks": 187 },
{ "source": "inseed.tg", "documents": 90, "chunks": 450 }
],
"last_updated": "2026-06-12T08:00:00"
}/v1/documentsListe paginée de tous les documents du corpus. Filtrable par domaine source, catégorie ou langue.
Paramètres
pageintegerqueryPage numberdefault: 1page_sizeintegerqueryResults per page (max 100)default: 20sourcestringqueryFilter by source domain (e.g. jo.gouv.tg)categorystringquerylegal · education · economy · agriculture · health · politics · presslanguagestringqueryLanguage codedefault: frcurl "https://api.togolm.com/v1/documents?category=legal&page=1&page_size=10"{
"documents": [
{
"id": "3f2a...",
"source": "jo.gouv.tg",
"title": "Loi de finances 2025",
"category": "legal",
"language": "fr",
"word_count": 4280,
"chunk_count": 11
}
],
"total": 342,
"page": 1,
"page_size": 10,
"pages": 35
}/v1/searchRecherche plein texte sur le corpus via PostgreSQL FTS optimisé pour le français (ts_rank) avec fallback ILIKE. Retourne des extraits avec score de pertinence.
Paramètres
qstringqueryrequiredSearch query (min 2, max 500 chars)sourcestringqueryRestrict to a specific source domaincategorystringqueryRestrict to a categorylimitintegerqueryMax results (max 50)default: 10curl "https://api.togolm.com/v1/search?q=budget+2024&limit=5" \
-H "X-API-Key: YOUR_KEY"{
"results": [
{
"id": "9c1b...",
"source": "jo.gouv.tg",
"title": "Loi de finances 2025",
"excerpt": "…le budget de l'État togolais pour 2025…",
"score": 0.8412,
"url": "https://jo.gouv.tg/loi-finances-2025"
}
],
"total": 12,
"query": "budget 2024"
}/v1/queryRecherche les fragments les plus pertinents par similarité vectorielle, puis génère une réponse ancrée avec Gemini 2.5 Flash. Retourne la réponse complète + sources, en markdown portable (gras, listes, titres, blocs de code, sans tableaux ni HTML) exploitable dans n'importe quel client.
Paramètres
questionstringbodyrequiredThe question to answer (min 3, max 1000 chars)categorystringbodyRestrict retrieval to a categorylanguagestringbodyResponse languagedefault: frcurl -X POST https://api.togolm.com/v1/query \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_KEY" \
-d '{"question": "Quel est le budget de l\'État togolais ?"}'{
"answer": "Le budget de l'État togolais pour 2025 s'élève à 2 400 milliards de FCFA…",
"sources": [
{
"title": "Loi de finances 2025",
"url": "https://jo.gouv.tg/loi-finances-2025",
"score": 0.91
}
],
"model": "togolm-rag-v1",
"latency_ms": 1842
}/v1/query/streamIdentique à /v1/query mais diffuse la réponse token par token via Server-Sent Events. Événements : thinking (réflexion) · chunk (texte) · sources (citations).
Paramètres
questionstringbodyrequiredThe question to answercategorystringbodyRestrict retrieval to a categorylanguagestringbodyResponse languagedefault: frcurl -X POST https://api.togolm.com/v1/query/stream \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_KEY" \
--no-buffer \
-d '{"question": "Comment créer une entreprise au Togo ?"}'data: {"type": "thinking", "text": "Je dois analyser…"}
data: {"type": "chunk", "text": "Pour créer"}
data: {"type": "chunk", "text": " une entreprise"}
data: {"type": "chunk", "text": " au Togo…"}
data: {
"type": "sources",
"sources": [
{ "title": "Création d'entreprise", "url": "…", "score": 0.88 }
],
"latency_ms": 2100
}
data: [DONE]/v1/feedbackSignale un problème sur une réponse générée (réponse incorrecte, source cassée, contenu inapproprié, autre). Non soumis au rate limit des requêtes.
Paramètres
categorystringbodyrequiredincorrect · broken_source · harmful · otherquestionstringbodyrequiredThe original question (max 2000 chars)answerstringbodyrequiredThe generated answer being reported (max 8000 chars)commentstringbodyFree-text details (max 2000 chars)sourcesarraybodySources shown alongside the answer, if anylanguagestringbodyResponse languagedefault: frcurl -X POST https://api.togolm.com/v1/feedback \
-H "Content-Type: application/json" \
-d '{"category": "incorrect", "question": "Quelle est la capitale du Togo ?", "answer": "La capitale du Togo est Kara.", "comment": "C'\''est Lomé, pas Kara."}'{
"id": "6f2a1c4e-...",
"message": "Feedback recorded"
}Codes d'erreur
| Code | Signification |
|---|---|
| 200 | Succès |
| 400 | Requête invalide (paramètre manquant ou malformé) |
| 401 | Clé API invalide ou absente |
| 409 | Email déjà enregistré |
| 422 | Validation échouée (corps de requête invalide) |
| 429 | Quota journalier dépassé |
| 500 | Erreur serveur interne |