Rapidy Développeurs

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

POST/v1/quotes

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

POST/v1/shipments

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

GET/v1/shipments/{shipmentId}

Récupère la fiche d'un envoi.

Paramètres

NomEmplacementDescription
shipmentIdcheminrequisIdentifiant 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

GET/v1/shipmentsliste

Liste les envois de votre organisation.

Paramètres

NomEmplacementDescription
statusqueryfacultatifFiltre 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

GET/v1/shipments/by-external-order/{externalOrderId}

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

NomEmplacementDescription
externalOrderIdcheminrequisVOTRE 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

POST/v1/shipments/{shipmentId}/mark-ready

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

NomEmplacementDescription
shipmentIdcheminrequisIdentifiant shp_….
bycorpsrequisQui 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

POST/v1/shipments/{shipmentId}/cancel

Annule un envoi encore annulable (tant que le colis n'est pas enlevé).

Paramètres

NomEmplacementDescription
shipmentIdcheminrequisIdentifiant shp_….
reasoncorpsrequisMotif — obligatoire, il alimente l'audit et l'arbitrage des litiges.
bycorpsrequisQui 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

POST/v1/shipments/{shipmentId}/open-dispute

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

NomEmplacementDescription
shipmentIdcheminrequisIdentifiant shp_….
reasoncorpsrequisCe qui s'est passé (colis abîmé, perdu, jamais livré…).
descriptioncorpsrequisDescription libre du problème.
claimant_idcorpsrequisQui signale, de votre côté.
claimant_typecorpsfacultatifdé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

GET/v1/tracking/{trackingCode}public — sans clé

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

NomEmplacementDescription
trackingCodecheminrequisCode 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

POST/v1/tracking/simulate-pricepublic — sans clé

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

NomEmplacementDescription
pickup_citycorpsrequisQUARTIER de départ.
dropoff_citycorpsrequisQUARTIER de destination.
weight_kgcorpsfacultatifPoids 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);