Référence
Référence API
Chaque opération, ses paramètres, sa réponse et son appel dans les neuf langages.
Comment lire cette page
Cette référence est dérivée du manifeste dont les huit SDK sont générés. Elle ne peut donc pas décrire une API que les SDK ne parlent pas — c'est exactement le défaut qu'une documentation écrite à part finit toujours par avoir.
- Hôte
api— la passerelle Rapidy, authentifiée par clé. - Hôte
tracking— le suivi public. Souvent le même hôte ; distinct quand le suivi est servi sur son propre domaine. - Une opération marquée public n'envoie pas votre clé d'API.
Tous les corps sont en snake_case. Les montants sont en XOF sans sous-unité.
createQuote
Calcule un devis de livraison. Le prix est ferme jusqu'à expiresAt.
city = le QUARTIER de départ et d'arrivée. Joignez coords quand vous les avez : le prix suit alors la distance réelle.
Paramètres
Aucun paramètre — le corps est un CreateQuoteRequest complet.
Réponse
Quote
curl -s -X POST "$RAPIDY_API_URL/v1/quotes" \
-H "X-Api-Key: $RAPIDY_API_KEY" \
-H "Content-Type: application/json"// Voir « Démarrage rapide » : cette opération prend un modèle complet.
const result = await rapidy.createQuote({ /* CreateQuoteRequest */ });# Voir « Démarrage rapide » : cette opération prend un modèle complet.
result = rapidy.create_quote(...)// Voir « Démarrage rapide » : cette opération prend un modèle complet.
$result = $rapidy->createQuote([...]);# Voir « Démarrage rapide » : cette opération prend un modèle complet.
result = rapidy.create_quote(...)// Voir « Démarrage rapide » : cette opération prend un modèle complet.
result, err := client.CreateQuote(ctx, map[string]any{ /* … */ })// Voir « Démarrage rapide » : cette opération prend un modèle complet.
var result = rapidy.createQuote(Map.of(/* … */));// Voir « Démarrage rapide » : cette opération prend un modèle complet.
var result = await rapidy.CreateQuoteAsync(new Dictionary<string, object> { /* … */ });// Voir « Démarrage rapide » : cette opération prend un modèle complet.
final result = await rapidy.createQuote(...);
createShipment
Crée un envoi à partir d'un devis accepté.
Pour un paiement à la livraison, renseignez orderAmountXof : sans lui, seul le frais de livraison serait collecté et la valeur de la marchandise serait perdue.
Paramètres
Aucun paramètre — le corps est un CreateShipmentRequest complet.
Réponse
Shipment
curl -s -X POST "$RAPIDY_API_URL/v1/shipments" \
-H "X-Api-Key: $RAPIDY_API_KEY" \
-H "Content-Type: application/json"// Voir « Démarrage rapide » : cette opération prend un modèle complet.
const result = await rapidy.createShipment({ /* CreateShipmentRequest */ });# Voir « Démarrage rapide » : cette opération prend un modèle complet.
result = rapidy.create_shipment(...)// Voir « Démarrage rapide » : cette opération prend un modèle complet.
$result = $rapidy->createShipment([...]);# Voir « Démarrage rapide » : cette opération prend un modèle complet.
result = rapidy.create_shipment(...)// Voir « Démarrage rapide » : cette opération prend un modèle complet.
result, err := client.CreateShipment(ctx, map[string]any{ /* … */ })// Voir « Démarrage rapide » : cette opération prend un modèle complet.
var result = rapidy.createShipment(Map.of(/* … */));// Voir « Démarrage rapide » : cette opération prend un modèle complet.
var result = await rapidy.CreateShipmentAsync(new Dictionary<string, object> { /* … */ });// Voir « Démarrage rapide » : cette opération prend un modèle complet.
final result = await rapidy.createShipment(...);
getShipment
Récupère la fiche d'un envoi.
Paramètres
| Nom | Emplacement | Description | |
|---|---|---|---|
shipmentId | chemin | requis | Identifiant shp_…. |
Réponse
Shipment
curl -s -X GET "$RAPIDY_API_URL/v1/shipments/shp_7c1f4a2e" \
-H "X-Api-Key: $RAPIDY_API_KEY"const result = await rapidy.getShipment('shp_7c1f4a2e');result = rapidy.get_shipment(shipment_id="shp_7c1f4a2e")$result = $rapidy->getShipment('shp_7c1f4a2e');result = rapidy.get_shipment('shp_7c1f4a2e')result, err := client.GetShipment(ctx, "shp_7c1f4a2e")var result = rapidy.getShipment("shp_7c1f4a2e");var result = await rapidy.GetShipmentAsync("shp_7c1f4a2e");final result = await rapidy.getShipment('shp_7c1f4a2e');
listShipments
Liste les envois de votre organisation.
Paramètres
| Nom | Emplacement | Description | |
|---|---|---|---|
status | query | facultatif | Filtre sur l'état de l'envoi. |
Réponse
Liste de Shipment[], sous la clé shipments.
curl -s -X GET "$RAPIDY_API_URL/v1/shipments?status=DELIVERED" \
-H "X-Api-Key: $RAPIDY_API_KEY"const result = await rapidy.listShipments({ status: 'DELIVERED' });result = rapidy.list_shipments(status="DELIVERED")$result = $rapidy->listShipments(status: 'DELIVERED');result = rapidy.list_shipments(status: 'DELIVERED')result, err := client.ListShipments(ctx, "DELIVERED")var result = rapidy.listShipments("DELIVERED");var result = await rapidy.ListShipmentsAsync("DELIVERED");final result = await rapidy.listShipments(status: 'DELIVERED');
getShipmentByExternalOrder
Retrouve un envoi par votre propre référence de commande.
Évite de stocker nos identifiants chez vous : vous interrogez Rapidy avec la référence que vous connaissez déjà.
Paramètres
| Nom | Emplacement | Description | |
|---|---|---|---|
externalOrderId | chemin | requis | VOTRE référence de commande. |
Réponse
Shipment
curl -s -X GET "$RAPIDY_API_URL/v1/shipments/by-external-order/CMD-2026-42" \
-H "X-Api-Key: $RAPIDY_API_KEY"const result = await rapidy.getShipmentByExternalOrder('CMD-2026-42');result = rapidy.get_shipment_by_external_order(external_order_id="CMD-2026-42")$result = $rapidy->getShipmentByExternalOrder('CMD-2026-42');result = rapidy.get_shipment_by_external_order('CMD-2026-42')result, err := client.GetShipmentByExternalOrder(ctx, "CMD-2026-42")var result = rapidy.getShipmentByExternalOrder("CMD-2026-42");var result = await rapidy.GetShipmentByExternalOrderAsync("CMD-2026-42");final result = await rapidy.getShipmentByExternalOrder('CMD-2026-42');
markReady
Signale que le colis est PRÊT à être enlevé.
C'est ce geste — et lui seul — qui fait entrer la course dans la file d'affectation. Sans lui, un envoi créé attend indéfiniment et aucun livreur ne se voit proposer la mission.
Paramètres
| Nom | Emplacement | Description | |
|---|---|---|---|
shipmentId | chemin | requis | Identifiant shp_…. |
by | corps | requis | Qui déclenche (nom lisible : votre opérateur, votre système). |
Réponse
Shipment
curl -s -X POST "$RAPIDY_API_URL/v1/shipments/shp_7c1f4a2e/mark-ready" \
-H "X-Api-Key: $RAPIDY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"by": "mon-back-office"
}'const result = await rapidy.markReady('shp_7c1f4a2e', 'mon-back-office');result = rapidy.mark_ready(shipment_id="shp_7c1f4a2e", by="mon-back-office")$result = $rapidy->markReady('shp_7c1f4a2e', by: 'mon-back-office');result = rapidy.mark_ready(shipment_id: 'shp_7c1f4a2e', by: 'mon-back-office')result, err := client.MarkReady(ctx, "shp_7c1f4a2e", "mon-back-office")var result = rapidy.markReady("shp_7c1f4a2e", "mon-back-office");var result = await rapidy.MarkReadyAsync("shp_7c1f4a2e", "mon-back-office");final result = await rapidy.markReady(shipmentId: 'shp_7c1f4a2e', by: 'mon-back-office');
cancelShipment
Annule un envoi encore annulable (tant que le colis n'est pas enlevé).
Paramètres
| Nom | Emplacement | Description | |
|---|---|---|---|
shipmentId | chemin | requis | Identifiant shp_…. |
reason | corps | requis | Motif — obligatoire, il alimente l'audit et l'arbitrage des litiges. |
by | corps | requis | Qui annule. |
Réponse
Shipment
curl -s -X POST "$RAPIDY_API_URL/v1/shipments/shp_7c1f4a2e/cancel" \
-H "X-Api-Key: $RAPIDY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "client rétracté",
"by": "mon-back-office"
}'const result = await rapidy.cancelShipment('shp_7c1f4a2e', 'client rétracté', 'mon-back-office');result = rapidy.cancel_shipment(shipment_id="shp_7c1f4a2e", reason="client rétracté", by="mon-back-office")$result = $rapidy->cancelShipment('shp_7c1f4a2e', reason: 'client rétracté', by: 'mon-back-office');result = rapidy.cancel_shipment(shipment_id: 'shp_7c1f4a2e', reason: 'client rétracté', by: 'mon-back-office')result, err := client.CancelShipment(ctx, "shp_7c1f4a2e", "client rétracté", "mon-back-office")var result = rapidy.cancelShipment("shp_7c1f4a2e", "client rétracté", "mon-back-office");var result = await rapidy.CancelShipmentAsync("shp_7c1f4a2e", "client rétracté", "mon-back-office");final result = await rapidy.cancelShipment(shipmentId: 'shp_7c1f4a2e', reason: 'client rétracté', by: 'mon-back-office');
openDispute
Signale un problème sur un envoi et ouvre un dossier.
Le règlement de cet envoi est retenu le temps que le dossier soit tranché.
Paramètres
| Nom | Emplacement | Description | |
|---|---|---|---|
shipmentId | chemin | requis | Identifiant shp_…. |
reason | corps | requis | Ce qui s'est passé (colis abîmé, perdu, jamais livré…). |
description | corps | requis | Description libre du problème. |
claimant_id | corps | requis | Qui signale, de votre côté. |
claimant_type | corps | facultatif | défaut : seller. Rôle du signalant. |
Réponse
Claim
curl -s -X POST "$RAPIDY_API_URL/v1/shipments/shp_7c1f4a2e/open-dispute" \
-H "X-Api-Key: $RAPIDY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "client rétracté",
"description": "colis ouvert à la livraison",
"claimant_id": "usr_4b2e9d10",
"claimant_type": "seller"
}'const result = await rapidy.openDispute({ shipmentId: 'shp_7c1f4a2e', reason: 'client rétracté', description: 'colis ouvert à la livraison', claimantId: 'usr_4b2e9d10', claimantType: 'seller' });result = rapidy.open_dispute(shipment_id="shp_7c1f4a2e", reason="client rétracté", description="colis ouvert à la livraison", claimant_id="usr_4b2e9d10", claimant_type="seller")$result = $rapidy->openDispute('shp_7c1f4a2e', reason: 'client rétracté', description: 'colis ouvert à la livraison', claimantId: 'usr_4b2e9d10', claimantType: 'seller');result = rapidy.open_dispute(shipment_id: 'shp_7c1f4a2e', reason: 'client rétracté', description: 'colis ouvert à la livraison', claimant_id: 'usr_4b2e9d10', claimant_type: 'seller')result, err := client.OpenDispute(ctx, "shp_7c1f4a2e", "client rétracté", "colis ouvert à la livraison", "usr_4b2e9d10", "seller")var result = rapidy.openDispute("shp_7c1f4a2e", "client rétracté", "colis ouvert à la livraison", "usr_4b2e9d10", "seller");var result = await rapidy.OpenDisputeAsync("shp_7c1f4a2e", "client rétracté", "colis ouvert à la livraison", "usr_4b2e9d10", "seller");final result = await rapidy.openDispute(shipmentId: 'shp_7c1f4a2e', reason: 'client rétracté', description: 'colis ouvert à la livraison', claimantId: 'usr_4b2e9d10', claimantType: 'seller');
trackByCode
Suivi PUBLIC et anonyme d'un envoi par son code.
N'exige aucune clé : c'est la vue destinée au client final, expurgée de toute donnée personnelle de tiers.
Paramètres
| Nom | Emplacement | Description | |
|---|---|---|---|
trackingCode | chemin | requis | Code public à 10 caractères communiqué au destinataire. |
Réponse
TrackingView
curl -s -X GET "$RAPIDY_TRACKING_URL/v1/tracking/A2C3D4E5F6"const result = await rapidy.trackByCode('A2C3D4E5F6');result = rapidy.track_by_code(tracking_code="A2C3D4E5F6")$result = $rapidy->trackByCode('A2C3D4E5F6');result = rapidy.track_by_code('A2C3D4E5F6')result, err := client.TrackByCode(ctx, "A2C3D4E5F6")var result = rapidy.trackByCode("A2C3D4E5F6");var result = await rapidy.TrackByCodeAsync("A2C3D4E5F6");final result = await rapidy.trackByCode('A2C3D4E5F6');
simulatePrice
Prix INDICATIF d'une livraison, sans compte ni engagement.
Ce n'est pas un devis : rien n'est réservé et aucun identifiant n'est rendu. Pour un prix ferme, appelez createQuote.
Paramètres
| Nom | Emplacement | Description | |
|---|---|---|---|
pickup_city | corps | requis | QUARTIER de départ. |
dropoff_city | corps | requis | QUARTIER de destination. |
weight_kg | corps | facultatif | Poids approximatif. |
Réponse
PriceSimulation
curl -s -X POST "$RAPIDY_TRACKING_URL/v1/tracking/simulate-price" \
-H "Content-Type: application/json" \
-d '{
"pickup_city": "Médina",
"dropoff_city": "Ouakam",
"weight_kg": 2
}'const result = await rapidy.simulatePrice({ pickupCity: 'Médina', dropoffCity: 'Ouakam', weightKg: 2 });result = rapidy.simulate_price(pickup_city="Médina", dropoff_city="Ouakam", weight_kg=2)$result = $rapidy->simulatePrice(pickupCity: 'Médina', dropoffCity: 'Ouakam', weightKg: 2);result = rapidy.simulate_price(pickup_city: 'Médina', dropoff_city: 'Ouakam', weight_kg: 2)result, err := client.SimulatePrice(ctx, "Médina", "Ouakam", 2)var result = rapidy.simulatePrice("Médina", "Ouakam", 2);var result = await rapidy.SimulatePriceAsync("Médina", "Ouakam", 2);final result = await rapidy.simulatePrice(pickupCity: 'Médina', dropoffCity: 'Ouakam', weightKg: 2);