Retour à la documentation

3D Bin Packing API

POST/api/v1/pack

Optimisez l'emballage de vos produits dans des cartons. L'algorithme calcule les positions 3D optimales pour maximiser l'utilisation de l'espace.

Corps de la requête

POST /api/v1/pack
Content-Type: application/json
Authorization: Bearer sk_votre_cle_api

{
  "bins": [
    {
      "id": "Carton_60x40x30",
      "w": 60,
      "h": 40,
      "d": 30,
      "max_wg": 25,
      "q": 10        // optionnel
    }
  ],
  "items": [
    {
      "id": "PROD001",
      "q": 5,
      "w": 15,
      "h": 10,
      "d": 8,
      "wg": 0.5,
      "vr": 1        // optionnel (rotation autorisée)
    }
  ],
  "params": {
    "images_complete": 1,  // optionnel
    "images_sbs": 0        // optionnel
  }
}

Paramètre binsRequis

Liste des cartons disponibles pour l'emballage.

ChampTypeRequisDescription
idstringIdentifiant unique du carton
wnumberLargeur (cm)
hnumberHauteur (cm)
dnumberProfondeur (cm)
max_wgnumberPoids maximum supporté (kg)
qnumberOptionnelQuantité disponible de ce type de carton

Paramètre itemsRequis

Liste des produits à emballer.

ChampTypeRequisDescription
idstringIdentifiant unique du produit
qnumberQuantité à emballer
wnumberLargeur (cm)
hnumberHauteur (cm)
dnumberProfondeur (cm)
wgnumberPoids unitaire (kg)
vr0 | 1OptionnelRotation autorisée (1 = oui, 0 = non). Défaut: 1

Paramètre paramsOptionnel

Options supplémentaires pour personnaliser le résultat.

ChampTypeDescription
images_complete0 | 1Générer des images 3D complètes du résultat
images_sbs0 | 1Générer des images step-by-step du processus

Réponse

Réponse réussie (200)
{
  "success": true,
  "response": {
    "bins_packed": 2,
    "items_packed": 15,
    "total_items": 15,
    "utilization": 0.87,
    "boxes": [
      {
        "bin_id": "Carton_60x40x30",
        "items": [
          {
            "id": "PROD001",
            "position": { "x": 0, "y": 0, "z": 0 },
            "dimensions": { "w": 15, "h": 10, "d": 8 },
            "rotation": "WHD"
          }
        ],
        "weight_utilization": 0.72,
        "volume_utilization": 0.85,
        "image_url": "https://..." // si images_complete=1
      }
    ],
    "unpacked_items": []
  }
}
Erreurs possibles
400Paramètres invalides
{
  "error": "Paramètres invalides",
  "details": ["bins.0.w: Expected number, received string"]
}
401Non authentifié
{ "error": "Clé API invalide ou manquante" }
429Quota dépassé
{
  "error": "Quota mensuel dépassé",
  "limit": 100,
  "used": 100,
  "reset_at": "2026-03-01T00:00:00Z"
}
502Erreur du service
{ "error": "Erreur lors de l'appel au service de packing" }

Exemple complet

Scénario : Emballer 20 produits dans des cartons

Vous avez 2 types de cartons disponibles et 3 types de produits à emballer. L'API va calculer la répartition optimale.

Requête

{
  "bins": [
    { "id": "petit", "w": 30, "h": 20, "d": 15, "max_wg": 10 },
    { "id": "grand", "w": 60, "h": 40, "d": 30, "max_wg": 25 }
  ],
  "items": [
    { "id": "tasse", "q": 10, "w": 8, "h": 10, "d": 8, "wg": 0.3 },
    { "id": "assiette", "q": 6, "w": 25, "h": 3, "d": 25, "wg": 0.5 },
    { "id": "verre", "q": 4, "w": 7, "h": 15, "d": 7, "wg": 0.2 }
  ],
  "params": {
    "images_complete": 1
  }
}

Résultat attendu

  • • L'algorithme utilisera probablement 1 grand carton et 1-2 petits
  • • Chaque item aura sa position 3D (x, y, z) et sa rotation
  • • Le taux d'utilisation sera maximisé (>80%)
  • • Une image 3D du résultat sera générée

Conseils d'utilisation

Unités cohérentes

Utilisez toujours les mêmes unités (cm pour les dimensions, kg pour le poids) entre les cartons et les items.

Rotation des items

Par défaut, les items peuvent être tournés. Utilisez vr: 0 pour les produits fragiles qui ne doivent pas être retournés.

Quantité de cartons

Si vous avez un nombre limité de cartons d'un type, spécifiez q. Sinon, l'algorithme considère une quantité illimitée.

Performance

Les images ralentissent la réponse. Désactivez-les en production si vous n'en avez pas besoin.

Prêt à essayer ?

Créez votre compte et testez l'API avec 100 requêtes gratuites.