DOCUMENTATION

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"