Skip to Content
Référence APIVue d'ensemble

Référence API

L’API publique Kadryza permet à votre serveur de créer des paiements Mobile Money, de suivre leur statut et de gérer vos endpoints webhook.

En bref

AspectConvention
URL de basehttps://api.kadryza.app
VersionnementPréfixe de chemin /v1
AuthentificationEn-tête X-API-Key (détails)
EnvironnementDéduit de la clé : kadryza_test_… ou kadryza_live_…, même URL
FormatJSON, clés en snake_case, Content-Type: application/json
IdentifiantsUUID ; références humaines KDRZ-XXXXX (sessions)
MontantsEntiers en XAF (pas de décimales)
DatesRFC 3339 en UTC (2026-06-05T12:30:00Z)
Statuts, codes d’erreurUPPER_SNAKE_CASE
Événements webhookdomaine.action (ex. payment_session.succeeded)

Endpoints

Paiements

MéthodeEndpointRôle
POST/v1/payment-sessionsCréer une Payment SessionDisponible
GET/v1/payment-sessions/:idLire une sessionDisponible
GET/v1/payment-sessions/by-referenceRetrouver une session par votre référenceDisponible
GET/v1/payment-sessions/:id/webhook-deliveriesHistorique des livraisons webhook d’une sessionDisponible
POST/v1/payment-sessions/:id/cancelAnnuler une sessionTest uniquement
POST/v1/hosted-checkoutsCréer un paiement hébergé (le client choisit l’opérateur)Disponible

Webhooks

MéthodeEndpointRôle
POST/v1/webhooksCréer un endpoint
GET/v1/webhooksLister les endpoints
PATCH/v1/webhooks/:idActiver ou désactiver
DELETE/v1/webhooks/:idRetirer un endpoint
POST/v1/webhooks/:id/testEnvoyer un événement de test signé

Transactions (API historique)

MéthodeEndpointRôle
POST/v1/transactionsInitier une transactionTest uniquement
GET/v1/transactions/:idLire une transactionDisponible
GET/v1/transactionsLister les transactionsDisponible

Avec une clé live, POST /v1/transactions répond 503 LEGACY_LIVE_TRANSACTION_DISABLED. Pour encaisser en production, utilisez les Payment Sessions ou le Hosted Checkout.

Les endpoints du dashboard (session utilisateur), du solde, des retraits, des rapports et des clés API ne font pas partie de l’API publique.

Réponses et erreurs

Une réponse réussie renvoie l’objet demandé (200, ou 201 à la création). Une erreur renvoie toujours la même forme :

Erreur
{ "error": "payment session reference is required", "code": "REFERENCE_REQUIRED" }

Utilisez code dans votre logique ; error est un message lisible qui peut évoluer. Certains codes ajoutent des champs (failed_checks, retry_after_seconds). Liste complète : Codes d’erreur.

Une ressource d’un autre compte ou d’un autre environnement répond 404, jamais 403.

Pagination

GET /v1/transactions accepte limit (défaut 20, maximum 1000) et offset. La réponse porte total, limit et offset :

GET /v1/transactions?limit=20&offset=0
{ "transactions": [], "total": 0, "limit": 20, "offset": 0 }

Filtres : status, operator, date_from, date_to (RFC 3339 ou AAAA-MM-JJ) et search. L’environnement est celui de la clé.

Limites de débit

PortéeLimite
Endpoints de l’API publique, par compte100 requêtes par minute
Création, modification, suppression, test d’endpoints webhook20 par 5 minutes

Chaque réponse limitée porte X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset (timestamp Unix). Au-delà, l’API répond 429 RATE_LIMIT_EXCEEDED avec Retry-After et retry_after_seconds. Attendez ce délai avant de réessayer.

Une limite complémentaire par adresse IP s’applique en amont de l’API.

Idempotence

  • Paiements : votre reference est unique par environnement. Une seconde création avec la même référence est refusée (409) pour les sessions, ou renvoie l’objet existant pour un Hosted Checkout identique. En cas de doute après une coupure réseau, relisez avec GET /v1/payment-sessions/by-reference.
  • Webhooks : dédupliquez sur event_id (en-tête X-Kadryza-Event-ID).

Suivi en temps réel

La page de paiement hébergée suit les sessions par un flux SSE public. Côté serveur, préférez les webhooks au polling.