Tout ce dont vous avez besoin pour bâtir avec Kiriku
Documentation complète de l'API d'extraction de documents intelligents
Démarrage Rapide
Apprenez à intégrer Kiriku en moins de 5 minutes.
Référence API
Documentation détaillée de tous nos points de terminaison.
SDKs & Outils
Bibliothèques prêtes à l'emploi pour vos langages préférés.
Authentification
Toutes les requêtes API sécurisées nécessitent un token JWT dans l'en-tête Authorization.
# Format de l'en-tête Authorization
Authorization: Bearer <YOUR_JWT_TOKEN>
# Obtenir votre token via l'endpoint d'authentification
curl -X POST https://api.kiriku.app/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "votre@email.com",
"password": "votre_mot_de_passe"
}'DURÉE DE VALIDITÉ
24 heures
RÉNOVATION
Refresh token disponible
Types de Documents Supportés
CNI SÉNÉGAL
Carte d'identité nationale sénégalaise, recto et verso
PASSEPORT SÉNÉGAL
Passeport biométrique sénégalais
PERMIS CONDUIRE CEDEAO
Permis de conduire CEDEAO (format uniformisé)
AUTO
Détection automatique du type de document
Démarrage rapide
Base URL: https://api.kiriku.app/v1. Les appels d'écriture nécessitent un token JWT.
# Extraction rapide (multipart) - envoi des options en champs séparés (recommandé) curl -X POST https://api.kiriku.app/v1/extract \ -H "Authorization: Bearer <TOKEN>" \ -F "file=@/chemin/vers/cni_recto.jpg" \ -F "documentType=cni-senegal" \ -F "fraudCheck=true" \ -F "returnConfidence=true" \ -F "returnRawText=false"
# Variante: envoi des options dans un seul champ JSON
curl -X POST https://api.kiriku.app/v1/extract \
-H "Authorization: Bearer <TOKEN>" \
-F "file=@/chemin/vers/cni_recto.jpg" \
-F "documentType=cni-senegal" \
-F "options={\"fraudCheck\":true,\"returnConfidence\":true,\"returnRawText\":false}"JAVASCRIPT
const formData = new FormData();
formData.append('file', fileInput);
formData.append('documentType', 'cni-senegal');
formData.append('fraudCheck', 'true');
const response = await fetch(
'https://api.kiriku.app/v1/extract',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`
},
body: formData
}
);
const result = await response.json();PYTHON
import requests
url = "https://api.kiriku.app/v1/extract"
headers = {
"Authorization": f"Bearer {token}"
}
files = {
"file": open("cni_recto.jpg", "rb")
}
data = {
"documentType": "cni-senegal",
"fraudCheck": "true",
"returnConfidence": "true"
}
response = requests.post(
url, headers=headers,
files=files, data=data
)
result = response.json()Gestion des Erreurs
L'API retourne des codes HTTP standard et des messages d'erreur structurés.
# Structure des réponses d'erreur
{
"error": {
"code": "INVALID_DOCUMENT_TYPE",
"message": "Type de document non supporté",
"details": {
"provided": "passport-france",
"allowed": ["cni-senegal", "passeport-senegal", "permis-conduire-cedeao", "auto"]
}
}
}400
Requête invalide
401
Non authentifié
403
Accès refusé
429
Trop de requêtes
Référence Extraction
POST /extract
- - file: image/jpeg|png|webp, application/pdf
- - fileBack (optionnel)
- - documentType: cni-senegal | passeport-senegal | permis-conduire-cedeao | auto
- - fraudCheck | returnConfidence | returnRawText (ou champ unique options JSON)
# Réponse (exemple)
{
"id": "ext_1773232267885",
"status": "completed",
"documentType": "cni-senegal",
"data": {
"nom": { "value": "THIOMBANE", "confidence": 0.99 },
"prenom": { "value": "IBRAHIMA", "confidence": 0.99 }
},
"globalConfidence": 0.95,
"rawText": "...",
"provider": "openrouter",
"processingMs": 9000
}POST /extract/async
Même payload. Réponse: { extractionId, status: 'queued' }
Récupération: GET /extractions/:id
curl -X POST https://api.kiriku.app/v1/extract/async \ -H "Authorization: Bearer <TOKEN>" \ -F "file=@/chemin/vers/cni_recto.jpg" \ -F "documentType=cni-senegal"
Templates
GET /templates
GET /templates/:slug
POST/PUT/DELETE protégés (JWT)
# Création d'un template
curl -X POST https://api.kiriku.app/v1/templates \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"name": "Ma CNI",
"slug": "ma-cni",
"category": "identity",
"country": "SN",
"language": "fr",
"fields": [
{ "key": "nom", "type": "string", "required": true }
]
}'Scan Mobile (Mobile Handoff)
- - POST /mobile-handoff/session → { sessionId }
- - GET /mobile-handoff/session/:sessionId → { status, hasFile }
- - POST /mobile-handoff/upload/:sessionId (file)
- - GET /mobile-handoff/consume/:sessionId (récupération du fichier)
curl -X POST https://api.kiriku.app/v1/mobile-handoff/session curl -X POST https://api.kiriku.app/v1/mobile-handoff/upload/<SESSION_ID> \ -F "file=@/chemin/vers/photo.jpg" curl -X GET https://api.kiriku.app/v1/mobile-handoff/consume/<SESSION_ID> -OJ
Intégration rapide (cURL)
curl -X POST https://api.kiriku.app/v1/extract \ -H "Authorization: Bearer <TOKEN>" \ -F "file=@/chemin/vers/cni_recto.jpg" \ -F "documentType=cni-senegal" \ -F "fraudCheck=true" -F "returnConfidence=true" -F "returnRawText=false"