TogoLM

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.com

En-têtes HTTP

HeaderDescription
X-API-KeyClé API TogoLM, optionnelle sur les endpoints publics, augmente le quota
Content-Typeapplication/json, requis pour les requêtes POST

Démarrer en 4 étapes

01
Créez une clé API

Gratuit, instantané. Utilisez le formulaire ci-dessous : la clé est affichée une seule fois.

02

Ajoutez le header

Passez votre clé via X-API-Key sur chaque requête pour bénéficier de 200 req/jour.

03
Interrogez le corpus

POST /v1/query/stream : réponse RAG avec réflexion Gemini 2.5 Flash en streaming.

04
Explorez les données

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

Anonymous
20 / day
Par IP
Freedéfaut
200 / day
Avec clé API
Dev
1 000 / day
Sur demande
Institution
100 000 / day
Partenaires

Authentification

Passez votre clé dans le header X-API-Key de chaque requête HTTP.

cURL
curl https://api.togolm.com/v1/search?q=budget \
  -H "X-API-Key: tgolm_your_key_here"
GET/v1/stats
Public

Retourne les statistiques en direct du corpus : nombre de documents, de fragments, sources actives et langues supportées.

Requête
curl https://api.togolm.com/v1/stats
Réponse
{
  "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"
}
GET/v1/documents
Public

Liste paginée de tous les documents du corpus. Filtrable par domaine source, catégorie ou langue.

Paramètres

pageintegerqueryPage numberdefault: 1
page_sizeintegerqueryResults per page (max 100)default: 20
sourcestringqueryFilter by source domain (e.g. jo.gouv.tg)
categorystringquerylegal · education · economy · agriculture · health · politics · press
languagestringqueryLanguage codedefault: fr
Requête
curl "https://api.togolm.com/v1/documents?category=legal&page=1&page_size=10"
Réponse
{
  "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
}
POST/v1/query
Clé optionnelle

Recherche 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 category
languagestringbodyResponse languagedefault: fr
Requête
curl -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 ?"}'
Réponse
{
  "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
}
POST/v1/query/stream
Clé optionnelle

Identique à /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 answer
categorystringbodyRestrict retrieval to a category
languagestringbodyResponse languagedefault: fr
Requête
curl -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 ?"}'
Réponse
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]
POST/v1/feedback
Clé optionnelle

Signale 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 · other
questionstringbodyrequiredThe 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 any
languagestringbodyResponse languagedefault: fr
Requête
curl -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."}'
Réponse
{
  "id": "6f2a1c4e-...",
  "message": "Feedback recorded"
}

Codes d'erreur

CodeSignification
200Succès
400Requête invalide (paramètre manquant ou malformé)
401Clé API invalide ou absente
409Email déjà enregistré
422Validation échouée (corps de requête invalide)
429Quota journalier dépassé
500Erreur serveur interne