Mettre à jour un véhicule
Modifie l'un de vos véhicules.
Les préréglages sont en lecture seule. Gratuit : aucun crédit n'est débité.
Authentification
Paramètres de chemin
idstringobligatoireID d'un préréglage ou de l'un de vos véhicules (veh_…).
Paramètres du corps
application/jsontypestringType de véhicule. Seuls les types listés dans GET /v1/limits (allowed_vehicle_types) sont acceptés.
trucktrailerflatbedcontainerpalletaircraftshipnamestringNom affiché.
lengthnumber · cmLongueur intérieure de l'espace de chargement, selon x (de la paroi avant vers la porte).
widthnumber · cmLargeur intérieure de l'espace de chargement, selon z.
heightnumber · cmHauteur intérieure de l'espace de chargement, selon y.
max_weightnumber · kgCharge utile maximale.
floor_load_capacitynumber · kg/m²Capacité de charge du plancher : 0 ou plus (0 = sans limite).
aux_deckbooleanLe véhicule a un second plancher (double plancher).
falseaux_deck_heightnumber · cmHauteur du second plancher au-dessus du plancher. Obligatoire lorsque aux_deck vaut true.
aux_deck_max_weightnumber · kgLimite de charge du second plancher. Obligatoire lorsque aux_deck vaut true.
blocked_areasRect[]Zones du plancher sur lesquelles rien ne peut être posé (passages de roue, dégâts, espace réservé). Chacune doit se trouver sur le plancher du véhicule.
xnumber · cmobligatoireDistance entre la paroi avant et le bord le plus proche du rectangle.
znumber · cmobligatoireDistance entre la paroi droite (z = 0 ; la droite vue depuis la porte, en regardant vers l'intérieur) et le bord le plus proche du rectangle.
lengthnumber · cmobligatoireÉtendue selon x.
widthnumber · cmobligatoireÉtendue selon z.
axle_positionsAccès requisnumber[] · cmPositions des essieux (points d'appui) mesurées depuis l'avant de l'espace de chargement ; négatif = en avant de celui-ci. Même nombre d'éléments que axle_max_loads. Chacune entre −300 (un essieu situé en avant de l'espace de chargement, par ex. l'essieu avant d'un porteur, sous la cabine) et la longueur du véhicule.
axle_max_loadsAccès requisnumber[] · kgCharge maximale par essieu, dans l'ordre du champ axle_positions. Chaque valeur doit être supérieure à 0 et au plus égale à 100000.
cog_range_xAccès requisnumber · cmÉcart admis du centre de gravité par rapport au milieu de la longueur : de 0 à length / 2.
cog_range_yAccès requisnumber · cmÉcart admis du centre de gravité par rapport au milieu de la largeur : de 0 à width / 2.
tractor_weightAccès requisnumber · kgModèle d'essieux de semi-remorque : masse du tracteur.
empty_trailer_weightAccès requisnumber · kgModèle d'essieux de semi-remorque : masse à vide de la remorque.
front_axle_to_middle_axleAccès requisnumber · cmModèle d'essieux de semi-remorque : de l'essieu avant du tracteur à l'essieu moteur (central).
front_axle_to_tractor_cogAccès requisnumber · cmModèle d'essieux de semi-remorque : de l'essieu avant au centre de gravité du tracteur.
front_axle_to_kingpinAccès requisnumber · cmModèle d'essieux de semi-remorque : de l'essieu avant au pivot d'attelage (sellette).
kingpin_to_rear_axleAccès requisnumber · cmModèle d'essieux de semi-remorque : du pivot d'attelage au groupe d'essieux arrière de la remorque.
trailer_cog_to_rear_axleAccès requisnumber · cmModèle d'essieux de semi-remorque : du centre de gravité de la remorque au groupe d'essieux arrière.
trailer_start_to_kingpinAccès requisnumber · cmModèle d'essieux de semi-remorque : de l'avant de la remorque au pivot d'attelage.
max_middle_axle_weightAccès requisnumber · kgModèle d'essieux de semi-remorque : limite légale de l'essieu moteur (central).
max_rear_axle_weightAccès requisnumber · kgModèle d'essieux de semi-remorque : limite légale du groupe d'essieux arrière.
Exemple de requête
curl -X PATCH "https://runner.cargoduo.com/v1/vehicles/veh_118" \
-H "Authorization: Bearer $CARGODUO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"max_weight": 25000
}'const res = await fetch("https://runner.cargoduo.com/v1/vehicles/veh_118", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.CARGODUO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"max_weight": 25000
}),
});
const data = await res.json();
console.log(res.status, data);import os
import requests
response = requests.patch(
"https://runner.cargoduo.com/v1/vehicles/veh_118",
headers={"Authorization": f"Bearer {os.environ['CARGODUO_API_KEY']}"},
json={
"max_weight": 25000,
},
)
print(response.status_code, response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"max_weight": 25000
}`)
req, err := http.NewRequest("PATCH", "https://runner.cargoduo.com/v1/vehicles/veh_118", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("CARGODUO_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(out))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String body = """
{
"max_weight": 25000
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://runner.cargoduo.com/v1/vehicles/veh_118"))
.header("Authorization", "Bearer " + System.getenv("CARGODUO_API_KEY"))
.header("Content-Type", "application/json")
.method("PATCH", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("CARGODUO_API_KEY"));
var json = """
{
"max_weight": 25000
}
""";
var request = new HttpRequestMessage(HttpMethod.Patch, "https://runner.cargoduo.com/v1/vehicles/veh_118")
{
Content = new StringContent(json, Encoding.UTF8, "application/json"),
};
var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");<?php
$payload = <<<'JSON'
{
"max_weight": 25000
}
JSON;
$ch = curl_init('https://runner.cargoduo.com/v1/vehicles/veh_118');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CARGODUO_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), ' ', $response, PHP_EOL;require "net/http"
require "uri"
uri = URI("https://runner.cargoduo.com/v1/vehicles/veh_118")
request = Net::HTTP::Patch.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch("CARGODUO_API_KEY")}"
request["Content-Type"] = "application/json"
request.body = <<~'JSON'
{
"max_weight": 25000
}
JSON
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts response.code, response.bodyExemple de réponse
{
"id": "veh_118",
"object": "vehicle",
"kind": "custom",
"name": "Mega trailer 13.6 m",
"type": "trailer",
"length": 1360,
"width": 248,
"height": 300,
"max_weight": 25000,
"floor_load_capacity": null,
"axle_positions": [],
"axle_max_loads": [],
"cog_range_x": null,
"cog_range_y": null,
"aux_deck": false,
"aux_deck_height": null,
"aux_deck_max_weight": null,
"tractor_weight": null,
"empty_trailer_weight": null,
"front_axle_to_middle_axle": null,
"front_axle_to_tractor_cog": null,
"front_axle_to_kingpin": null,
"kingpin_to_rear_axle": null,
"trailer_cog_to_rear_axle": null,
"trailer_start_to_kingpin": null,
"max_middle_axle_weight": null,
"max_rear_axle_weight": null,
"blocked_areas": [],
"created_by": {
"id": "usr_7",
"name": "Elif Kaya"
},
"updated_by": {
"id": "usr_7",
"name": "Elif Kaya"
},
"created_at": "2026-10-02T08:41:17Z"
}Réponses
200OKLe véhicule après la modification.
NomTypeObligatoireDescriptionidstringstringNonID du préréglage, ou veh_… pour vos propres véhicules.
objectstringstringNonvehiclekindstringstringNonpreset= le catalogue prédéfini ;custom= ceux de votre organisation.presetcustomtypestringstringNonType de véhicule. Seuls les types listés dans GET /v1/limits (allowed_vehicle_types) sont acceptés.
trucktrailerflatbedcontainerpalletaircraftshipnamestringstringNonNom affiché.
lengthnumber · cmnumber · cmNonLongueur intérieure de l'espace de chargement, selon x (de la paroi avant vers la porte).
widthnumber · cmnumber · cmNonLargeur intérieure de l'espace de chargement, selon z.
heightnumber · cmnumber · cmNonHauteur intérieure de l'espace de chargement, selon y.
max_weightnumber · kgnumber · kgNonCharge utile maximale.
floor_load_capacitynumber | null · kg/m²number | null · kg/m²NonCapacité de charge du plancher : 0 ou plus (0 = sans limite).
axle_positionsnumber[] · cmnumber[] · cmNonPositions des essieux (points d'appui) mesurées depuis l'avant de l'espace de chargement ; négatif = en avant de celui-ci. Même nombre d'éléments que axle_max_loads. Chacune entre −300 (un essieu situé en avant de l'espace de chargement, par ex. l'essieu avant d'un porteur, sous la cabine) et la longueur du véhicule.
axle_max_loadsnumber[] · kgnumber[] · kgNonCharge maximale par essieu, dans l'ordre du champ axle_positions. Chaque valeur doit être supérieure à 0 et au plus égale à 100000.
cog_range_xnumber | null · cmnumber | null · cmNonÉcart admis du centre de gravité par rapport au milieu de la longueur : de 0 à length / 2.
cog_range_ynumber | null · cmnumber | null · cmNonÉcart admis du centre de gravité par rapport au milieu de la largeur : de 0 à width / 2.
aux_deckbooleanbooleanNonLe véhicule a un second plancher (double plancher).
aux_deck_heightnumber | null · cmnumber | null · cmNonHauteur du second plancher au-dessus du plancher. Obligatoire lorsque
aux_deckvauttrue.aux_deck_max_weightnumber | null · kgnumber | null · kgNonLimite de charge du second plancher. Obligatoire lorsque
aux_deckvauttrue.tractor_weightnumber | null · kgnumber | null · kgNonModèle d'essieux de semi-remorque : masse du tracteur.
empty_trailer_weightnumber | null · kgnumber | null · kgNonModèle d'essieux de semi-remorque : masse à vide de la remorque.
front_axle_to_middle_axlenumber | null · cmnumber | null · cmNonModèle d'essieux de semi-remorque : de l'essieu avant du tracteur à l'essieu moteur (central).
front_axle_to_tractor_cognumber | null · cmnumber | null · cmNonModèle d'essieux de semi-remorque : de l'essieu avant au centre de gravité du tracteur.
front_axle_to_kingpinnumber | null · cmnumber | null · cmNonModèle d'essieux de semi-remorque : de l'essieu avant au pivot d'attelage (sellette).
kingpin_to_rear_axlenumber | null · cmnumber | null · cmNonModèle d'essieux de semi-remorque : du pivot d'attelage au groupe d'essieux arrière de la remorque.
trailer_cog_to_rear_axlenumber | null · cmnumber | null · cmNonModèle d'essieux de semi-remorque : du centre de gravité de la remorque au groupe d'essieux arrière.
trailer_start_to_kingpinnumber | null · cmnumber | null · cmNonModèle d'essieux de semi-remorque : de l'avant de la remorque au pivot d'attelage.
max_middle_axle_weightnumber | null · kgnumber | null · kgNonModèle d'essieux de semi-remorque : limite légale de l'essieu moteur (central).
max_rear_axle_weightnumber | null · kgnumber | null · kgNonModèle d'essieux de semi-remorque : limite légale du groupe d'essieux arrière.
blocked_areasRect[]Rect[]NonZones du plancher sur lesquelles rien ne peut être posé (passages de roue, dégâts, espace réservé). Chacune doit se trouver sur le plancher du véhicule.
xnumber · cmobligatoirenumber · cmOuiDistance entre la paroi avant et le bord le plus proche du rectangle.
znumber · cmobligatoirenumber · cmOuiDistance entre la paroi droite (z = 0 ; la droite vue depuis la porte, en regardant vers l'intérieur) et le bord le plus proche du rectangle.
lengthnumber · cmobligatoirenumber · cmOuiÉtendue selon x.
widthnumber · cmobligatoirenumber · cmOuiÉtendue selon z.
created_byUserRef | nullUserRef | nullNonLe membre qui l'a créé (pour les appels API : le membre qui a créé la clé).
nullsi inconnu.idstringstringNonID du membre (usr_…). Filtrez les listes avec ?created_by=.
namestringstringNonupdated_byUserRef | nullUserRef | nullNonLe dernier membre à l'avoir modifié.
idstringstringNonID du membre (usr_…). Filtrez les listes avec ?created_by=.
namestringstringNoncreated_atstring | nullstring | nullNonRFC 3339 ;
nullpour les préréglages.400Bad request
invalid_jsoninvalid_jsonLe corps n'est pas un JSON valide ou un champ a un type incorrect.
Tous les codes d'erreurNomTypeObligatoireDescriptionerrorErrorBodyobligatoireErrorBodyOuicodestringobligatoirestringOuiCode lisible par machine (snake_case). Basez votre logique sur ce champ, jamais sur
message.messagestringobligatoirestringOuiExplication en anglais.
request_idstringobligatoirestringOuiIdentique à l'en-tête X-Request-Id. Indiquez-le lorsque vous contactez le support.
detailsErrorDetail[]ErrorDetail[]NonProblèmes par champ (
validation_failed).pathstringstringNonChemin JSON du champ en cause, par ex. items[3].length.
codestringstringNonrequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNonExplication en anglais.
401Unauthorized
unauthorizedkey_revokedkey_expiredunauthorizedClé API absente, mal formée ou inconnue.key_revokedLa clé a été révoquée.key_expiredLa clé a dépassé sa date d'expiration.
Tous les codes d'erreurNomTypeObligatoireDescriptionerrorErrorBodyobligatoireErrorBodyOuicodestringobligatoirestringOuiCode lisible par machine (snake_case). Basez votre logique sur ce champ, jamais sur
message.messagestringobligatoirestringOuiExplication en anglais.
request_idstringobligatoirestringOuiIdentique à l'en-tête X-Request-Id. Indiquez-le lorsque vous contactez le support.
detailsErrorDetail[]ErrorDetail[]NonProblèmes par champ (
validation_failed).pathstringstringNonChemin JSON du champ en cause, par ex. items[3].length.
codestringstringNonrequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNonExplication en anglais.
403Forbidden
preset_read_onlyip_not_allowedsubscription_inactiveaccount_inactivescope_missingpreset_read_onlyLes préréglages ne peuvent être ni modifiés ni supprimés.ip_not_allowedL'adresse IP appelante ne figure pas dans la liste des adresses IP autorisées de la clé.subscription_inactiveL'organisation n'a aucun abonnement actif incluant l'API.account_inactiveL'organisation est suspendue ou n'a aucun propriétaire dont le compte est actif.scope_missingIl manque à la clé une autorisation requise par cet endpoint.
Tous les codes d'erreurNomTypeObligatoireDescriptionerrorErrorBodyobligatoireErrorBodyOuicodestringobligatoirestringOuiCode lisible par machine (snake_case). Basez votre logique sur ce champ, jamais sur
message.messagestringobligatoirestringOuiExplication en anglais.
request_idstringobligatoirestringOuiIdentique à l'en-tête X-Request-Id. Indiquez-le lorsque vous contactez le support.
detailsErrorDetail[]ErrorDetail[]NonProblèmes par champ (
validation_failed).pathstringstringNonChemin JSON du champ en cause, par ex. items[3].length.
codestringstringNonrequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNonExplication en anglais.
404Not found
vehicle_not_foundvehicle_not_foundAucun véhicule avec cet ID parmi les préréglages ou les véhicules de votre organisation.
Tous les codes d'erreurNomTypeObligatoireDescriptionerrorErrorBodyobligatoireErrorBodyOuicodestringobligatoirestringOuiCode lisible par machine (snake_case). Basez votre logique sur ce champ, jamais sur
message.messagestringobligatoirestringOuiExplication en anglais.
request_idstringobligatoirestringOuiIdentique à l'en-tête X-Request-Id. Indiquez-le lorsque vous contactez le support.
detailsErrorDetail[]ErrorDetail[]NonProblèmes par champ (
validation_failed).pathstringstringNonChemin JSON du champ en cause, par ex. items[3].length.
codestringstringNonrequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNonExplication en anglais.
422Unprocessable entity
validation_failedvalidation_failedLa requête est un JSON bien formé, mais décrit une tâche invalide. details[] liste tous les problèmes.
Tous les codes d'erreurNomTypeObligatoireDescriptionerrorErrorBodyobligatoireErrorBodyOuicodestringobligatoirestringOuiCode lisible par machine (snake_case). Basez votre logique sur ce champ, jamais sur
message.messagestringobligatoirestringOuiExplication en anglais.
request_idstringobligatoirestringOuiIdentique à l'en-tête X-Request-Id. Indiquez-le lorsque vous contactez le support.
detailsErrorDetail[]ErrorDetail[]NonProblèmes par champ (
validation_failed).pathstringstringNonChemin JSON du champ en cause, par ex. items[3].length.
codestringstringNonrequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNonExplication en anglais.
429Too many requests
rate_limitedrate_limitedTrop de requêtes dans la minute, l'heure ou la journée en cours (par clé ou par organisation), ou plus de 60 échecs d'authentification par minute depuis votre adresse IP.
Tous les codes d'erreurNomTypeObligatoireDescriptionerrorErrorBodyobligatoireErrorBodyOuicodestringobligatoirestringOuiCode lisible par machine (snake_case). Basez votre logique sur ce champ, jamais sur
message.messagestringobligatoirestringOuiExplication en anglais.
request_idstringobligatoirestringOuiIdentique à l'en-tête X-Request-Id. Indiquez-le lorsque vous contactez le support.
detailsErrorDetail[]ErrorDetail[]NonProblèmes par champ (
validation_failed).pathstringstringNonChemin JSON du champ en cause, par ex. items[3].length.
codestringstringNonrequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNonExplication en anglais.
500Internal server error
internal_errorinternal_errorUne erreur s'est produite de notre côté.
Tous les codes d'erreurNomTypeObligatoireDescriptionerrorErrorBodyobligatoireErrorBodyOuicodestringobligatoirestringOuiCode lisible par machine (snake_case). Basez votre logique sur ce champ, jamais sur
message.messagestringobligatoirestringOuiExplication en anglais.
request_idstringobligatoirestringOuiIdentique à l'en-tête X-Request-Id. Indiquez-le lorsque vous contactez le support.
detailsErrorDetail[]ErrorDetail[]NonProblèmes par champ (
validation_failed).pathstringstringNonChemin JSON du champ en cause, par ex. items[3].length.
codestringstringNonrequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNonExplication en anglais.
503Service unavailable
api_disabledapi_disabledL'API est temporairement désactivée (maintenance) ou désactivée pour l'organisation.
Tous les codes d'erreurNomTypeObligatoireDescriptionerrorErrorBodyobligatoireErrorBodyOuicodestringobligatoirestringOuiCode lisible par machine (snake_case). Basez votre logique sur ce champ, jamais sur
message.messagestringobligatoirestringOuiExplication en anglais.
request_idstringobligatoirestringOuiIdentique à l'en-tête X-Request-Id. Indiquez-le lorsque vous contactez le support.
detailsErrorDetail[]ErrorDetail[]NonProblèmes par champ (
validation_failed).pathstringstringNonChemin JSON du champ en cause, par ex. items[3].length.
codestringstringNonrequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNonExplication en anglais.