Developers
Pensé pour les développeurs, dès la première requête.
API REST versionnée, erreurs explicites, idempotence, webhooks signés, sandbox, API Explorer et exemples prêts à copier.
Quick Start en 3 minutes
Créez un compte, récupérez une clé sandbox et envoyez votre premier événement.
Idempotence partout
Idempotency-Key sur tous les POST : une coupure réseau ne double jamais une action.
Webhooks signés
HMAC-SHA256, horodatage, anti-rejeu, relances exponentielles, identifiants de dédoublonnage.
Observabilité
request_id, trace_id, correlation_id et timeline complète pour chaque événement.
Exemples multi-langages
cURL, PHP, Laravel, JavaScript, Node.js, Python.
// Laravel — envoyer un événement
Http::withToken(config('services.nati.secret'))
->withHeaders(['Idempotency-Key' => $payment->id])
->post('https://api.nati.bot/v1/events', [
'type' => 'withdrawal.requested',
'id' => $withdrawal->id,
'customer' => ['external_id' => $user->id, 'email' => $user->email],
'data' => ['amount' => 150000, 'currency' => 'XOF',
'transaction_id' => $withdrawal->reference],
'metadata' => ['ip' => request()->ip(), 'device_id' => $deviceId],
]);
// Webhook reçu si vos règles le demandent :
// { "type": "hold.requested", "data": { "hold": { "id": "hold_…",
// "transaction_id": "…", "status": "requested" } } }
// Votre système confirme : POST /v1/holds/{id}/confirm
Cycle de vie de l'API
États : ACTIVE → DEPRECATED → SUNSET_SCHEDULED → REMOVED. Dans /v1, seuls les changements additifs sont permis ; un retrait passe par une dépréciation annoncée. Une opération dépréciée continue de fonctionner à l'identique et ses réponses portent Deprecation: @<secondes Unix> (RFC 9745) et Link: <…>; rel="deprecation" ; Sunset (RFC 8594) n'apparaît que lorsqu'une date d'arrêt a été décidée. Durée de la fenêtre de migration : à décider par le propriétaire.
Opérations HTTP
Aucune opération de l'API v1 n'est dépréciée, planifiée pour arrêt ou retirée.
Valeurs de contrat
| Valeur | Contrat | État | Depuis | Arrêt | Remplacement |
|---|---|---|---|---|---|
| verification.failed | Type d'événement webhook | Dépréciée | 2026-10-06 | non décidée | verification.review_required, verification.additional_data_required, verification.expired, verification.cancelled |
verification.failed : Nati Verify n'a pas d'échec terminal automatique : une issue défavorable devient une revue humaine ou une action demandée au client. Toujours accepté dans un abonnement v1, jamais émis ; retrait possible uniquement dans /v2.
SDK 1.8 : les deux SDK signalent l'en-tête Deprecation reçu (rappel onDeprecation, avertissement non bloquant) et les types de webhook dépréciés (DEPRECATED_WEBHOOK_TYPES, Nati\Webhook::DEPRECATED_TYPES).