API REST Kubova
Chargez des conteneurs depuis n'importe quel langage. Authentification Bearer, JSON en entrée / JSON en sortie.
Vous cherchez la configuration MCP ? Lisez le guide MCP →
Authentification
Chaque requête nécessite une clé API dans l'en-tête Authorization :
Authorization: Bearer kbv_abc123...Générez des clés depuis le tableau de bord une fois que vous êtes sur l'offre Pro.
Gérer les clés API →Vérifier une clé
Utilisez le point de terminaison /me pour confirmer que votre clé est valide avant d'envoyer des requêtes de chargement :
curl https://kubova.com/api/v1/me \
-H "Authorization: Bearer kbv_..."Charger des conteneurs
Envoyez une requête POST à /api/v1/pack avec les cargaisons et un conteneur. L'optimiseur renvoie les placements par conteneur, le volume utilisé et les pièces non placées.
curl -X POST https://kubova.com/api/v1/pack \
-H "Authorization: Bearer kbv_..." \
-H "Content-Type: application/json" \
-d '{
"cargos": [{
"id": "sku-a",
"name": "Box A",
"shape": "box",
"lengthCm": 50, "widthCm": 40, "heightCm": 30,
"quantity": 20,
"weightKg": 5,
"color": "#e85d3a",
"includeInLoading": true,
"allowStacking": true,
"allowRotation": true
}],
"container": {
"id": "40hc",
"name": "40HC",
"innerLengthCm": 1203.0,
"innerWidthCm": 235.2,
"innerHeightCm": 269.7,
"doorWidthCm": 233.5,
"doorHeightCm": 258.5,
"maxPayloadKg": 26330
},
"options": {
"loadingDirection": "floor-to-top",
"vnsTimeLimitMs": 5000
}
}'En cas de succès, renvoie ok=true avec result.containers et result.unplaced. En cas d'erreur, renvoie ok=false avec une chaîne d'erreur.
Générer un rapport PDF
Envoyez une requête POST à /api/v1/report avec la même structure de corps que /pack. format=json renvoie le PDF en base64 + un PNG 3D par conteneur ; format=binary diffuse un seul PDF combiné que vous pouvez enregistrer directement.
# JSON response: base64 PDF + 3D PNG per container
curl -X POST https://kubova.com/api/v1/report \
-H "Authorization: Bearer kbv_..." \
-H "Content-Type: application/json" \
-d '{ "cargos": [...], "container": {...}, "format": "json" }'
# Binary response: a single combined PDF
curl -X POST "https://kubova.com/api/v1/report?format=binary" \
-H "Authorization: Bearer kbv_..." \
-H "Content-Type: application/json" \
-d '{ "cargos": [...], "container": {...} }' \
--output kubova-report.pdfNécessite la portée report sur la clé. Les nouvelles clés sont fournies avec les portées pack et report.
Limites de taux et délais d'expiration
- Par défaut 60 requêtes par minute par clé (configurable par clé sur demande).
- Les requêtes de chargement expirent après 290 secondes. Cela couvre toutes les charges de travail observées jusqu'à présent ; le modèle de tâche asynchrone sera mis en place lorsque les utilisateurs réels commenceront à atteindre cette limite.
- Chaque clé a un ensemble de portées (pack, report). Le point de terminaison /pack nécessite la portée pack.
- L'accès à l'API est disponible à partir de l'offre Pro.
Codes d'erreur
| Erreur | HTTP | Signification |
|---|---|---|
| missing_bearer_token | 401 | Aucun en-tête Authorization n'a été envoyé. |
| invalid_token | 401 | Le jeton ne correspond à aucune clé active. |
| token_revoked | 401 | La clé a été révoquée depuis le tableau de bord. |
| token_expired | 401 | La clé a dépassé sa date d'expiration. |
| scope_missing:pack | 403 | La clé ne possède pas la portée requise. |
| rate_limit_exceeded | 429 | Plus de 60 requêtes au cours de la dernière minute. |
| upstream_unreachable | 502 | Le service de chargement était injoignable. Réessayez après un certain délai. |