# API COMMANDE COURSIER.FR V4

<table border="1" id="bkmrk-08%2F06%2F2020-version-3" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 33.3333%;">01/03/2023</td><td style="width: 33.3333%;">[![image-1662457811981.png](https://bookstack.digf.fr/uploads/images/gallery/2022-09/scaled-1680-/image-1662457811981.png)](https://bookstack.digf.fr/uploads/images/gallery/2022-09/image-1662457811981.png)</td><td class="align-right" style="width: 33.3333%;">Version 4.1</td></tr></tbody></table>

##### **Objectif**

Pouvoir commander un coursier directement depuis un site internet, un intranet ou toute autre application d’un partenaire. L’API permet de spécifier l’adresse d’enlèvement, de destination, le colisage, le niveau de prestation et des références client. Elle peut être appelée directement sans appeler l'API devis au préalable si vous connaissez le service à utiliser.

##### **Protocole**

Les requests se font en mode https à l’url <u>api.coursier.fr/v4/order.php,</u> on récupère un accusé de la commande, un id, les engagements horaires et une url de tracking.

##### **Authentification**

L'authentification se fait à l'aide d'une apikey associée à votre user coursier.fr, vous pouvez trouver ces informations dans votre espace client. Vous devez disposez d'un compte en facturation mensuelle, si ce n'est pas encore le cas vous pouvez contacter un commercial à l'adresse <commercial@coursier.fr>. Vous devez passer en paramètre l'apikey, le user et le compte client utilisé, un même user pouvant être rattaché à plusieurs comptes client.

Afin de tester nos apis, vous pouvez utiliser le compte de test suivant pour réaliser vos développements dès à présent en attendant d'avoir vos accès définitifs :

User : <test@apicfr.fr>

Pass : T3stCFR\*

ClientId : 7055339

Apikey : e1ab1411d66765e73cf4b068d39cda8a

##### **Paramètres**

Les paramètres sont à passer en POST sous forme d’un tableau json.

<table id="bkmrk-nom-requis-type-desc" style="width: 0px;" width="614"><tbody><tr><td style="width: 222px;">**NOM**

</td><td style="width: 107px;">**REQUIS**

</td><td style="width: 116px;">**TYPE**

</td><td style="width: 357px;">**DESCRIPTIF**

</td></tr><tr><td style="width: 222px;">User

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(180)

</td><td style="width: 357px;">User d'accès aux interfaces coursier.fr

</td></tr><tr><td style="width: 222px;">Apikey

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(32)

</td><td style="width: 357px;">Apikey liée à votre user d'accès aux interfaces coursier.fr

</td></tr><tr><td style="width: 222px;">ClientId

</td><td style="width: 107px;">O

</td><td style="width: 116px;">int

</td><td style="width: 357px;">Numéro de compte client

</td></tr><tr><td style="width: 222px;">FromAddress.Company

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Nom de l'Entreprise d'enlèvement dans le cas d'une société

</td></tr><tr><td style="width: 222px;">FromAddress.Address

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(120)

</td><td style="width: 357px;">Numéro et rue de l'adresse d'enlèvement

</td></tr><tr><td style="width: 222px;">FromAddress.PostalCode

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(10)

</td><td style="width: 357px;">Code Postal de l’adresse d’enlèvement

</td></tr><tr><td style="width: 222px;">FromAddress.City

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Ville d’enlèvement

</td></tr><tr><td style="width: 222px;">FromAddress.Country

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Pays d’enlèvement (exemple : France)

</td></tr><tr><td style="width: 222px;">FromAddress.Contact

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Contact d’enlèvement

</td></tr><tr><td style="width: 222px;">FromAddress.Email

</td><td style="width: 107px;">N

</td><td style="width: 116px;">Varchar(100)

</td><td style="width: 357px;">Email d’enlèvement

</td></tr><tr><td style="width: 222px;">FromAddress.PhoneNumber

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(30)

</td><td style="width: 357px;">Téléphone d’enlèvement

</td></tr><tr><td style="width: 222px;">FromAddress.Comment

</td><td style="width: 107px;">N

</td><td style="width: 116px;">Varchar(100)

</td><td style="width: 357px;">Précision enlèvement. L'information est enregistrée avec le contact créé, elle doit donc être liée à l'adresse ou le contact comme un code porte, une consigne (ne pas mettre un numéro de colis par exemple)

</td></tr><tr><td style="width: 222px;">ToAddress.Company

</td><td style="width: 107px;">N

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Nom de l'Entreprise à livrer dans le cas d'une société

</td></tr><tr><td style="width: 222px;">ToAddress.Address

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(120)

</td><td style="width: 357px;">Numéro et rue de l’adresse de livraison

</td></tr><tr><td style="width: 222px;">ToAddress.PostalCode

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(10)

</td><td style="width: 357px;">Code Postal de l’adresse de livraison

</td></tr><tr><td style="width: 222px;">ToAddress.City

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Ville de livraison

</td></tr><tr><td style="width: 222px;">ToAddress.Country

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Pays de livraison (exemple : France)

</td></tr><tr><td style="width: 222px;">ToAddress.Contact

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Contact de livraison

</td></tr><tr><td style="width: 222px;">ToAddress.Email

</td><td style="width: 107px;">N

</td><td style="width: 116px;">Varchar(100)

</td><td style="width: 357px;">Email de livraison

</td></tr><tr><td style="width: 222px;">ToAddress.PhoneNumber

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(30)

</td><td style="width: 357px;">Téléphone de livraison

</td></tr><tr><td style="width: 222px;">ToAddress.Comment

</td><td style="width: 107px;">N

</td><td style="width: 116px;">Varchar(100)

</td><td style="width: 357px;">Précision livraison. L'information est enregistrée avec le contact créé, elle doit donc être liée à l'adresse ou le contact comme un code porte, une consigne (ne pas mettre un numéro de colis par exemple)

</td></tr><tr><td style="width: 222px;">ServiceId

</td><td style="width: 107px;">O

</td><td style="width: 116px;">int

</td><td style="width: 357px;">Nature de la prestation sous forme d'Id en fonction des accord contractuels. Ces codes vous sont données à la création du compte et vous pouvez également les récupérer en temps réel en appelant l'API devis qui vous donnera les services disponibles pour votre compte pour la date choisie. Pour tester (1=course en Normal, 2=course en Exclu, 3=course en double Exclu, 10=sur créneau 2h)

</td></tr><tr><td style="width: 222px;">StartDate

</td><td style="width: 107px;">N

</td><td style="width: 116px;">DateHeure

</td><td style="width: 357px;">Par défaut égale à maintenant, permet de spécifier une date en différé par exemple pour tenir compte d'un cutoff. Format « YYYY-MM-DD HH:MM:SS ».

Dans le cas d'un créneau, il s'agit de la date de début du créneau.

</td></tr><tr><td style="width: 222px;">Reference1

</td><td style="width: 107px;">N

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Référence interne du client, nous pouvons sur simple demande splitter ou regrouper vos factures par Reference1

</td></tr><tr><td style="width: 222px;">Reference2

</td><td style="width: 107px;">N

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Référence interne du client, nous pouvons sur simple demande splitter ou regrouper vos factures par Reference2

</td></tr><tr><td style="width: 222px;">Reference3

</td><td style="width: 107px;">N

</td><td style="width: 116px;">Varchar(50)

</td><td style="width: 357px;">Référence interne du client, nous pouvons sur simple demande splitter ou regrouper vos factures par Reference3

</td></tr><tr><td style="width: 222px;">Packages

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Array()

</td><td style="width: 357px;">Tableau des colis

</td></tr></tbody></table>

<u>Packages :</u>

<table id="bkmrk-nom-requis-type-desc-0" style="width: 804px;" width="614"><tbody><tr><td style="width: 227px;">**NOM**

</td><td style="width: 108px;">**REQUIS**

</td><td style="width: 111px;">**TYPE**

</td><td style="width: 358px;">**DESCRIPTIF**

</td></tr><tr><td style="width: 227px;">Name

</td><td style="width: 108px;">O

</td><td style="width: 111px;">Varchar(32)

</td><td style="width: 358px;">Texte libre : nature du colis (Pli, Colis, Sac, Palette...)

Pour des raisons de sécurité, éviter de préciser une nature d'objet dans le cas de marchandise à forte valeur (montre, bijou...)

</td></tr><tr><td style="width: 227px;">NumberOfPackage

</td><td style="width: 108px;">O

</td><td style="width: 111px;">Int

</td><td style="width: 358px;">Nombre de colis similaires

</td></tr><tr><td style="width: 227px;">Weight

</td><td style="width: 108px;">O

</td><td style="width: 111px;">double

</td><td style="width: 358px;">Poids en kilos

</td></tr><tr><td style="width: 227px;">Length

</td><td style="width: 108px;">O

</td><td style="width: 111px;">Double

</td><td style="width: 358px;">Longueur en cm

</td></tr><tr><td style="width: 227px;">Width

</td><td style="width: 108px;">O

</td><td style="width: 111px;">double

</td><td style="width: 358px;">Largeur en cm

</td></tr><tr><td style="width: 227px;">Height

</td><td style="width: 108px;">O

</td><td style="width: 111px;">Double

</td><td style="width: 358px;">Hauteur en cm

</td></tr></tbody></table>

<p class="callout info">Si vous ne disposez pas des mesures précises de vos envois, vous pouvez vous référer à la grille standard ci dessous</p>

<table border="1" id="bkmrk-name-weight-length-w" style="width: 0px;"><tbody><tr><td class="align-center" style="width: 55px;">Name</td><td class="align-center" style="width: 63px;">Weight</td><td class="align-center" style="width: 62px;">Length</td><td class="align-center" style="width: 56px;">Width</td><td class="align-center" style="width: 60px;">Height</td><td class="align-center" style="width: 99px;">Exemple</td></tr><tr><td class="align-center" style="width: 55px;">XS</td><td class="align-center" style="width: 63px;">1</td><td class="align-center" style="width: 62px;">30</td><td class="align-center" style="width: 56px;">20</td><td class="align-center" style="width: 60px;">5</td><td class="align-center" style="width: 99px;">Pli</td></tr><tr><td class="align-center" style="width: 55px;">S</td><td class="align-center" style="width: 63px;">3</td><td class="align-center" style="width: 62px;">30</td><td class="align-center" style="width: 56px;">25</td><td class="align-center" style="width: 60px;">25</td><td class="align-center" style="width: 99px;">Petit Colis</td></tr><tr><td class="align-center" style="width: 55px;">M</td><td class="align-center" style="width: 63px;">5</td><td class="align-center" style="width: 62px;">40</td><td class="align-center" style="width: 56px;">30</td><td class="align-center" style="width: 60px;">30</td><td class="align-center" style="width: 99px;">Moyen colis</td></tr><tr><td class="align-center" style="width: 55px;">L</td><td class="align-center" style="width: 63px;">15</td><td class="align-center" style="width: 62px;">60</td><td class="align-center" style="width: 56px;">40</td><td class="align-center" style="width: 60px;">40 </td><td class="align-center" style="width: 99px;">Gand Colis</td></tr><tr><td class="align-center" style="width: 55px;">XL</td><td class="align-center" style="width: 63px;">100</td><td class="align-center" style="width: 62px;">80</td><td class="align-center" style="width: 56px;">60</td><td class="align-center" style="width: 60px;">100</td><td class="align-center" style="width: 99px;">Demi Palette</td></tr><tr><td class="align-center" style="width: 55px;">XXL</td><td class="align-center" style="width: 63px;">250</td><td class="align-center" style="width: 62px;">80</td><td class="align-center" style="width: 56px;">120</td><td class="align-center" style="width: 60px;">100</td><td class="align-center" style="width: 99px;">Palette</td></tr></tbody></table>

<div id="bkmrk-"><div><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg>  
</div></div><p class="callout danger">Les colisages erronées peuvent entrainer un supplément et un retard de livraison </p>

##### **Réponse JSON**

La réponse contient le détail de la course enregistrée ainsi que son Id permettant par la suite d'en faire le suivi. En cas de rupture de charge, deux courses avec le même numéro seront créées et visibles par l'API de tracking pour suivre chacun des deux trajets. En cas d'erreur, l'api répond un json contenant un champ Message précisant la nature de l'erreur.

<table id="bkmrk-nom-taille-descripti" style="width: 810px;"><tbody><tr><td style="width: 225px;">**NOM**

</td><td style="width: 116px;">**Taille**

</td><td style="width: 469px;">**DESCRIPTIF**

</td></tr><tr><td style="width: 225px;">MissionNumber

</td><td style="width: 116px;">int

</td><td style="width: 469px;">Numéro de la course, c'est ce numéro qui permet de dialoguer avec notre coursier, le service client et l'API de tracking

</td></tr><tr><td style="width: 225px;">PickupStartDate

</td><td style="width: 116px;">Datetime

</td><td style="width: 469px;">Début du créneau d’enlèvement

</td></tr><tr><td style="width: 225px;">PickupEndDate

</td><td style="width: 116px;">Datetime

</td><td style="width: 469px;">Fin du créneau d’enlèvement

</td></tr><tr><td style="width: 225px;">DeliveryStartDate

</td><td style="width: 116px;">Datetime

</td><td style="width: 469px;">Début du créneau de livraison

</td></tr><tr><td style="width: 225px;">DeliveryEndDate

</td><td style="width: 116px;">Datetime

</td><td style="width: 469px;">Fin du créneau de livraison

</td></tr><tr><td style="width: 225px;">price

</td><td style="width: 116px;">Float

</td><td style="width: 469px;">Prix HT de la prestation

</td></tr><tr><td style="width: 225px;">CO2

</td><td style="width: 116px;">Float

</td><td style="width: 469px;">Emissions de CO2 générées pour faire cette prestation (en kg)

</td></tr><tr><td style="width: 225px;">TrackingUrl

</td><td style="width: 116px;">Varchar(256)

</td><td style="width: 469px;">Url de tracking

</td></tr><tr><td style="width: 225px;">TrackingKey

</td><td style="width: 116px;">varchar(8)

</td><td style="width: 469px;">Numéro de suivi crypté, à utiliser avec l'url [https://iris.coursier.fr/order/xxxxxxxx](https://iris.coursier.fr/order/xxxxxxxx)

</td></tr></tbody></table>

##### **Exemple d'appel**

```PHP
<?php<br></br>$url = "https://api.coursier.fr/v4/order.php";<br></br>$data = array('User' => 'test@apicfr.fr',<br></br>			 'Apikey' => 'e1ab1411d66765e73cf4b068d39cda8a',<br></br>			 'ClientId' => '7055339',<br></br>   			 'ServiceId' => 10, //Correspond à un service de créneau<br></br>			 'StartDate' => '2020-07-01 10:00:00',   //Mettre un début de créneau valide<br></br>			 'FromAddress' => array('Company' => 'Worldcompany',<br></br>               						'Address' => '45 Rue la Boétie',<br></br>			 						'PostalCode' => '75008',<br></br>			 						'City' => 'Paris',<br></br>			 						'Country' => 'France',<br></br>			 						'Contact' => 'Yann Thebault',<br></br>			 						'PhoneNumber' => '0602030405',<br></br>			 						'Email' => 'yt@test.com',<br></br>			 						'Comment' => '5ème étage à gauche'),<br></br>			 'ToAddress' => array('Company' => 'Coursier.fr',<br></br>               					  'Address' => '50 Rue Maurice Arnoux',<br></br>			 					  'PostalCode' => '92120',<br></br>			 					  'City' => 'Montrouge',<br></br>			 					  'Country' => 'France',<br></br>			 					  'Contact' => 'Sophie Mayeux',<br></br>			 					  'PhoneNumber' => '0605040302',<br></br>		 						  'Email' => 'sma@test.com',<br></br>			 					  'Comment' => 'Déposer le colis à l\'accueil'),<br></br>			 'Packages' => array(array('Name' => 'M', 'NumberOfPackage' => 1, 'Weight' =>5, 'Length' => '40', 'Width' => '30', 'Height' => '30')),<br></br>			 'Reference1' => 'Your internal data',<br></br>			 'Reference2' => 'Your internal data',<br></br>			 'Reference3' => 'Your internal data',<br></br>			 'Lang' => 'FR',<br></br>			);<br></br><br></br><br></br>$datajson = json_encode($data);<br></br>$curl = curl_init();<br></br>curl_setopt($curl, CURLOPT_URL, $url);<br></br>curl_setopt($curl, CURLOPT_POST, 1);<br></br>curl_setopt($curl, CURLOPT_POSTFIELDS, $datajson);<br></br>curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));<br></br>curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);<br></br>$res = curl_exec($curl);<br></br>curl_close($curl);<br></br>var_dump($res);<br></br>?>
```

##### **Exemple de réponse**

<p class="callout success">{"MissionNumber":"9999999","PickupStartDate":"2020-06-22 18:20:09","PickupEndDate":"2020-06-22 19:20:09","DeliveryStartDate":"2020-06-22 19:20:09","DeliveryEndDate":"2020-06-22 21:20:09","price":99.99,"CO2":2.5,"TrackingUrl":"https://iris.coursier.fr/order/DDDDDDDD","TrackingKey":"DDDDDDDD"}</p>