Authentification & autorisation
Chaque requête vers l'API AfriMap est authentifiée par une clé API transmise dans le header HTTP. Ce guide couvre l'obtention, l'utilisation et la sécurisation de vos clés.
Format des clés API
AfriMap utilise deux types de clés, différenciées par leur préfixe :
afm_test_*- Gratuit à vie — pas de carte bancaire
- 10 000 requêtes / jour
- Accès à toutes les API (routing, geocoding, tiles, places, navigation, ETA)
- Données réelles (pas un mock)
- Pas de SLA garanti
afm_live_*- Facturation mensuelle — par requête au-delà du quota
- Quota configurable selon le plan (Starter, Pro, Enterprise)
- SLA 99.9% garanti
- Support prioritaire
- Origines CORS configurables
Comment s'authentifier
Ajoutez l'en-tête X-AfriMap-Key à chaque requête HTTP :
curl -H "X-AfriMap-Key: afm_test_AbCdEf1234" \ "https://api.afrimap.ci/v1/geocode?q=cocody+abidjan"import { AfriMapClient } from '@afrimap/sdk'// Le SDK ajoute automatiquement le header X-AfriMap-Keyconst client = new AfriMapClient({ apiKey: process.env.AFRIMAP_API_KEY!, })val client = AfriMapClient.Builder() .apiKey("afm_live_...") .build()let client = AfriMapClient(apiKey: "afm_live_...") client := afrimap.NewClient("afm_live_...").env), un gestionnaire de secrets (Vault, AWS Secrets Manager), ou le système de config de votre framework. Obtenir une clé API
- 1Créez un compte sur portal.afrimap.ci/auth/register avec votre email professionnel.
- 2Récupérez votre clé sandbox — elle est générée automatiquement à l'inscription. Allez dans Dashboard → Clés API pour la copier.
- 3Passez en production quand vous êtes prêt — Dashboard → Facturation → choisissez un plan. Votre clé bascule de
afm_test_*àafm_live_*.
Limites de débit (Rate Limiting)
AfriMap applique un sliding window par clé API via Redis. Quand votre quota est atteint, l'API retourne 429 Too Many Requests.
| Plan | Requêtes / jour | Burst / seconde | Prix |
|---|---|---|---|
| Sandbox | 10 000 | 10 | Gratuit |
| Starter | 100 000 | 50 | 25 000 FCFA/mois |
| Pro | 1 000 000 | 200 | 150 000 FCFA/mois |
| Enterprise | Illimité | Sur mesure | Contact sales@afrimap.ci |
Headers de réponse
Chaque réponse inclut les headers suivants pour vous permettre de gérer votre consommation côté client :
X-RateLimit-Limit: 100000 # Quota total du plan X-RateLimit-Remaining: 98542 # Requêtes restantes X-RateLimit-Reset: 1713312000 # Timestamp Unix du reset Retry-After: 3600 # Secondes avant reset (sur 429 uniquement)Gérer un 429
async function fetchWithRetry(url: string, opts: RequestInit, maxRetries = 3) { for (let i = 0; i < maxRetries; i++) { const res = await fetch(url, opts) if (res.status !== 429) return res const retryAfter = Number(res.headers.get('Retry-After')) || 2 ** i await new Promise(r => setTimeout(r, retryAfter * 1000)) } throw new Error('Rate limit exceeded after retries') }CORS (Cross-Origin)
En production, AfriMap vérifie l'origine des requêtes navigateur contre la liste d'origines autorisées de votre clé API. Configurez vos origines dans Dashboard → Clés API → Origines CORS.
En sandbox, toutes les origines sont acceptées (Access-Control-Allow-Origin: *). C'est pratique pour le développement mais n'utilisez jamais une clé sandbox en production.
Checklist sécurité
afm_live_* dans le code source (pas de commit, pas de bundle JS client)*)