API MIA KAPITAL
Infrastructure de scoring financier certifiée SYSCOHADA. Analysez la solvabilité de vos MPME en moins de 60 secondes — conforme aux normes BCEAO, COBAC et aux Actes Uniformes OHADA.
🏦 Institutions financières
Intégrez directement dans votre core banking via l'API REST. Licences annuelles avec SLA garanti.
📊 MPME
Plans mensuels avec quota d'analyses. Résultats avec certificat PKI signé MIA VERIFIED™.
🔒 Sécurité
JWT HS256 + rotation des refresh tokens. Rate limiting Redis par IP. Audit trail complet.
⚡ Performance
Latence médiane < 400ms. Uptime SLA 99.9%. Réponses compressées Brotli/Gzip.
En 3 étapes
De zéro à votre première analyse SYSCOHADA en moins de 5 minutes.
1 — Créer un compte
POST https://api.miakapital.com/api/auth/register { "email": "vous@entreprise.com", "password": "MotDePasse1Securise", "fullName": "Kofi Mensah", "companyName": "SARL Mensah & Co", "country": "Bénin", "sector": "commerce" }
2 — Récupérer votre token d'accès
{
"success": true,
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5...", // Valide 15 minutes
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5...", // Valide 7 jours
"user": {
"id": "usr_01HXYZ...",
"email": "vous@entreprise.com"
}
}
}
3 — Lancer votre première analyse
POST https://api.miakapital.com/api/score Authorization: Bearer <accessToken> { "companyName": "SARL Mensah & Co", "country": "Bénin", "sector": "commerce", "fiscalYear": 2024, "revenue": 85000000, "netIncome": 6970000, "totalAssets": 120000000, "totalLiabilities": 46000000, "cash": 15000000, "cogs": 61200000 }
URLs de base
| Environnement | URL | Usage |
|---|---|---|
| Production | https://api.miakapital.com |
Données réelles, facturation active |
| Sandbox | https://sandbox.miakapital.com |
Tests et intégration, aucune facturation |
Inscription
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
email | string | requis | Adresse email unique |
password | string | requis | Min 8 caractères, 1 majuscule, 1 chiffre |
fullName | string | requis | Prénom et nom complets |
companyName | string | requis | Raison sociale |
country | string | requis | Pays OHADA (ex: "Bénin") |
sector | string | optionnel | Secteur d'activité |
phone | string | optionnel | Numéro de téléphone |
Connexion
L'accessToken expire après 15 minutes. Utilisez le refreshToken (valide 7 jours) pour en obtenir un nouveau sans demander à l'utilisateur de se reconnecter.
| Champ | Type | Requis |
|---|---|---|
email | string | requis |
password | string | requis |
Rotation du refresh token
À chaque appel, l'ancien refresh token est blacklisté dans Redis et un nouveau pair (access + refresh) est émis. Implémentez ce mécanisme côté client pour maintenir les sessions sans re-authentification.
// Requête { "refreshToken": "eyJhbGci..." } // Réponse 200 { "accessToken": "eyJhbGci...", "refreshToken": "eyJhbGci..." // Nouveau token — invalide l'ancien }
Profil utilisateur
Requiert le header Authorization: Bearer <accessToken>.
Lancer une analyse
Produit un score sur 100 points, une note A+→D, les ratios détaillés calibrés sur les benchmarks sectoriels OHADA, et un certificat PKI MIA VERIFIED™ signé cryptographiquement (plans Pro et supérieurs).
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
companyName | string | requis | Raison sociale de l'entreprise |
country | string | requis | Pays OHADA |
sector | string | requis | Secteur d'activité |
fiscalYear | number | requis | Exercice fiscal (ex: 2024) |
revenue | number | requis | Chiffre d'affaires en FCFA |
netIncome | number | requis | Résultat net en FCFA |
totalAssets | number | requis | Total bilan actif en FCFA |
totalLiabilities | number | requis | Total dettes en FCFA |
cash | number | requis | Trésorerie disponible en FCFA |
cogs | number | requis | Coût des marchandises vendues en FCFA |
legalForm | string | optionnel | SARL · SA · SAS · EI · GIE |
externalId | string | optionnel | Identifiant interne pour corrélation |
Structure de réponse
{
"success": true,
"data": {
"id": "ana_01JXYZ...",
"rawScore": 68.42, // Score sur 100
"grade": "A", // A+ | A | B+ | B | C | D
"gradeLabel": "Très bon — Risque faible",
"zone": "UEMOA", // UEMOA | CEMAC | OHADA_OUT
"ratios": {
"netMargin": 0.082, // Marge nette (pondération 25%)
"grossMargin": 0.280, // Marge brute (15%)
"debtRatio": 0.383, // Ratio d'endettement (20%)
"currentRatio": 1.65, // Liquidité courante (20%)
"roa": 0.058, // Rentabilité des actifs (10%)
"workingCapital":28970000 // Fonds de roulement en FCFA (10%)
},
"certificate": {
"id": "CERT-BJ-2024-0087",
"status": "VALID",
"verifyUrl": "https://verify.miakapital.com/ana_01JXYZ...",
"pdfUrl": "https://api.miakapital.com/api/score/ana_01JXYZ.../pdf"
},
"createdAt": "2024-11-15T09:42:31.000Z"
}
}
Grille de notation
| Note | Score | Interprétation | Décision crédit recommandée |
|---|---|---|---|
| A+ | 85 – 100 | Excellent — Risque très faible | Approbation directe |
| A | 70 – 84 | Très bon — Risque faible | Approbation avec garanties standard |
| B+ | 58 – 69 | Bon — Risque modéré faible | Approbation avec conditions |
| B | 45 – 57 | Acceptable — Risque modéré | Analyse approfondie requise |
| C | 30 – 44 | Fragile — Risque élevé | Refus ou garanties renforcées |
| D | 0 – 29 | Critique — Risque très élevé | Refus recommandé |
Configuration
Recevez des notifications HTTP en temps réel sur votre endpoint dès qu'une analyse est complétée ou qu'un certificat change de statut. Disponible sur les plans institutionnels.
{
"url": "https://votre-systeme.com/hooks/mia",
"events": ["score.completed", "certificate.issued"],
"secret": "votre_secret_hmac_sha256" // Pour vérifier la signature
}
Vérification de signature
Chaque requête webhook inclut le header X-MIA-Signature contenant un HMAC-SHA256 du corps calculé avec votre secret. Vérifiez-le avant de traiter l'événement.
import crypto from 'crypto'; function verifyWebhook(body, signature, secret) { const expected = 'sha256=' + crypto.createHmac('sha256', secret) .update(body) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(expected), Buffer.from(signature) ); }
Événements disponibles
| Événement | Description |
|---|---|
score.completed | Analyse financière terminée, score disponible |
certificate.issued | Certificat PKI MIA VERIFIED™ généré et signé |
certificate.revoked | Certificat révoqué suite à mise à jour |
quota.threshold | Quota mensuel atteint à 80% ou 100% |
subscription.renewed | Abonnement renouvelé avec succès |
Zone OHADA — 17 pays
MIA KAPITAL couvre l'intégralité des États membres de l'OHADA. Les benchmarks sectoriels sont calibrés par zone monétaire.
Zone UEMOA — Franc CFA BCEAO (XOF)
Zone CEMAC — Franc CFA BEAC (XAF)
Autres États membres OHADA
Secteurs d'activité
Utilisez les valeurs exactes ci-dessous dans le champ sector. Les benchmarks financiers sont calibrés par secteur et par zone OHADA.
| Valeur API | Libellé |
|---|---|
commerce | Commerce et distribution |
agriculture | Agriculture, élevage, pêche |
industrie | Industrie manufacturière |
services | Services aux entreprises |
construction | BTP et génie civil |
transport | Transport et logistique |
numerique | Technologies et numérique |
sante | Santé et pharmacie |
energie | Énergie et mines |
immobilier | Immobilier et foncier |
tourisme | Tourisme et hôtellerie |
services. MIA KAPITAL appliquera les benchmarks du secteur default.Limites de débit
Tous les limiteurs sont Redis-backed et multi-instances. Les headers standards RateLimit-Remaining, RateLimit-Reset sont retournés sur chaque réponse.
/api/auth/login et /api/auth/register. Les requêtes réussies ne sont pas comptabilisées./api/score. Indépendant du quota mensuel du plan./verify/:token. Clé par IP + User-Agent pour détecter les scans automatisés.Retry-After indiquant le délai d'attente en secondes. Implémentez un backoff exponentiel dans votre client.Codes d'erreur
{"success": false, "message": "..."}. Le champ message est en français, adapté à l'affichage direct.| Code HTTP | Signification | Causes fréquentes |
|---|---|---|
| 400 | Requête invalide | Champs manquants, type incorrect |
| 401 | Non authentifié | Token absent, expiré ou révoqué |
| 403 | Accès refusé | Compte verrouillé, quota dépassé, plan insuffisant |
| 404 | Ressource introuvable | ID analyse ou certificat inexistant |
| 409 | Conflit | Email déjà utilisé à l'inscription |
| 422 | Validation échouée | Valeurs hors plage, secteur inconnu |
| 429 | Trop de requêtes | Rate limit dépassé — voir header Retry-After |
| 500 | Erreur serveur | Contacter support@miakapital.com |