stock.geolock.fr/docs/colissimo-api.md
2026-02-24 16:10:30 +00:00

3.3 KiB

Colissimo Web Service Affranchissement — Documentation de référence

Authentification

Deux modes possibles :

Mode 1 : contractNumber + password (dans le body JSON)

{
  "contractNumber": "123456",
  "password": "monMotDePasse",
  ...
}

Mode 2 : API Key (dans le header)

apikey: MA_CLE_API

Endpoints

Environnement URL
Production https://ws.colissimo.fr/sls-ws/SlsServiceWSRest/3.1/generateLabel
Sandbox https://ws.colissimo.fr/sls-ws/SlsServiceWSRest/3.1/checkGenerateLabel

checkGenerateLabel = même requête mais sans générer de vrai colis (pas de suivi, pas de facturation).

Générer une étiquette (generateLabel)

POST https://ws.colissimo.fr/sls-ws/SlsServiceWSRest/3.1/generateLabel

{
  "contractNumber": "123456",
  "password": "monMotDePasse",
  "outputFormat": {
    "x": 0,
    "y": 0,
    "outputPrintingType": "PDF_10x15_300dpi"
  },
  "letter": {
    "service": {
      "productCode": "DOM",
      "depositDate": "2026-02-20",
      "orderNumber": "123-4567890-1234567",
      "commercialName": "Localiztoi"
    },
    "parcel": {
      "weight": 0.5
    },
    "sender": {
      "address": {
        "companyName": "Localiztoi",
        "line2": "Adresse de l'entrepôt",
        "countryCode": "FR",
        "city": "Ville",
        "zipCode": "00000"
      }
    },
    "addressee": {
      "address": {
        "lastName": "Dupont",
        "firstName": "Jean",
        "line2": "10 avenue des Champs",
        "countryCode": "FR",
        "city": "Lyon",
        "zipCode": "69001"
      }
    }
  }
}

Champs obligatoires

Bloc Champs
Racine contractNumber + password
outputFormat outputPrintingType
service productCode, depositDate
parcel weight (max 30 kg)
sender.address countryCode, zipCode, city
addressee.address lastName, line2, countryCode, city, zipCode

Formats d'étiquette

Format Description
PDF_A4_300dpi PDF pleine page A4
PDF_10x15_300dpi PDF étiquette 10x15 cm
ZPL_10x15_300dpi ZPL (Zebra) 10x15

Réponse

La réponse est multipart MIME (MTOM) contenant :

  1. Une partie JSON avec le statut + numéro de suivi
  2. Une partie binaire avec le PDF de l'étiquette
{
  "messages": [{ "id": "0", "type": "INFOS" }],
  "labelResponse": {
    "parcelNumber": "6A12345678901",
    "parcelNumberPartner": ""
  }
}

Codes produits

Code Service
DOM Colissimo Domicile sans signature
DOS Colissimo Domicile avec signature
HD Hors Domicile (point relais)
CECO Colissimo Eco France
COM Colissimo International

Stockage credentials (notre app)

Dans la table api_keys :

  • provider=laposte, label=contract_number
  • provider=laposte, label=password

Parsing MTOM

La réponse multipart contient :

  • Le JSON entre les délimiteurs MIME
  • Le PDF délimité par %PDF et %%EOF

Il faut parser les parties MIME pour extraire les deux.

Méthodes utiles

Méthode Description
checkGenerateLabel Test sans générer de vrai colis
getLabel Ré-imprimer une étiquette existante
generateBordereauByParcelsNumbers Bordereau de dépôt