Estimar un trabajo de carga
Aplica la misma validación que POST /v1/pack y devuelve el rango de precios, sin crear ningún trabajo ni reservar créditos.
Gratis. Una solicitud no válida responde 200 con valid: false y todos los problemas en errors[].
Autenticación
Parámetros del cuerpo
application/jsonreferencestringTu propia referencia (número de pedido, ID de envío…). Se devuelve en el trabajo.
vehiclesVehicle[]obligatorioDefiniciones de vehículos. Cada una puede tener quantity > 1. Al menos una.
idstringTu identificador, único dentro de la solicitud. Los resultados se refieren a él como vehicle_id. Por defecto, vehicle_id.
vehicle_idstringUn ID de vehículo de GET /v1/vehicles: uno predefinido o uno de los vehículos de tu organización (veh_…). Aporta el tipo, el nombre, las dimensiones, la carga útil y todos los demás valores guardados.
typestringTipo de vehículo. Obligatorio salvo que se indique vehicle_id. Solo se aceptan los tipos indicados en GET /v1/limits (allowed_vehicle_types).
trucktrailerflatbedcontainerpalletaircraftshipnamestringNombre visible (por defecto, el nombre del vehículo guardado o el ID).
lengthnumber · cmLargo interior del espacio de carga, a lo largo de x (desde la pared frontal hacia la puerta). Obligatorio salvo que se indique vehicle_id.
widthnumber · cmAncho interior del espacio de carga, a lo largo de z. Obligatorio salvo que se indique vehicle_id.
heightnumber · cmAlto interior del espacio de carga, a lo largo de y. Obligatorio salvo que se indique vehicle_id.
max_weightnumber · kgCarga útil máxima. Obligatorio salvo que se indique vehicle_id.
quantityintegerCuántos vehículos idénticos de esta definición hay disponibles.
11–100floor_load_capacitynumber · kg/m²Capacidad de carga del suelo: 0 o más (0 = sin límite).
aux_deckbooleanEl vehículo tiene un segundo piso (doble piso).
falseaux_deck_heightnumber · cmAltura del segundo piso sobre el suelo. Obligatorio cuando aux_deck es true.
aux_deck_max_weightnumber · kgLímite de carga del segundo piso. Obligatorio cuando aux_deck es true.
blocked_areasRect[]Zonas del suelo en las que no se puede colocar nada (pasos de rueda, daños, espacio reservado). Cada una debe estar dentro del suelo del vehículo.
xnumber · cmobligatorioDistancia desde la pared frontal hasta el borde más cercano del rectángulo.
znumber · cmobligatorioDistancia desde la pared derecha (z = 0; la derecha vista desde la puerta, mirando hacia dentro) hasta el borde más cercano del rectángulo.
lengthnumber · cmobligatorioExtensión a lo largo de x.
widthnumber · cmobligatorioExtensión a lo largo de z.
axle_positionsRequiere accesonumber[] · cmPosiciones de los ejes (puntos de apoyo) medidas desde la parte delantera de la zona de carga; negativo = por delante de ella. Mismo número de elementos que axle_max_loads. Cada una entre −300 (un eje por delante de la zona de carga, p. ej., el eje delantero de un camión rígido, bajo la cabina) y el largo del vehículo.
axle_max_loadsRequiere accesonumber[] · kgCarga máxima por eje, en el orden de axle_positions. Cada valor debe ser mayor que 0 y no superar 100000.
cog_range_xRequiere accesonumber · cmDesviación permitida del centro de gravedad respecto a la mitad del largo: de 0 a length / 2.
cog_range_yRequiere accesonumber · cmDesviación permitida del centro de gravedad respecto a la mitad del ancho: de 0 a width / 2.
tractor_weightRequiere accesonumber · kgModelo de ejes de semirremolque: masa de la tractora.
empty_trailer_weightRequiere accesonumber · kgModelo de ejes de semirremolque: masa en vacío del remolque.
front_axle_to_middle_axleRequiere accesonumber · cmModelo de ejes de semirremolque: del eje delantero de la tractora al eje motriz (central).
front_axle_to_tractor_cogRequiere accesonumber · cmModelo de ejes de semirremolque: del eje delantero al centro de gravedad de la tractora.
front_axle_to_kingpinRequiere accesonumber · cmModelo de ejes de semirremolque: del eje delantero al pivote de enganche (quinta rueda).
kingpin_to_rear_axleRequiere accesonumber · cmModelo de ejes de semirremolque: del pivote de enganche al grupo de ejes traseros del remolque.
trailer_cog_to_rear_axleRequiere accesonumber · cmModelo de ejes de semirremolque: del centro de gravedad del remolque al grupo de ejes traseros.
trailer_start_to_kingpinRequiere accesonumber · cmModelo de ejes de semirremolque: de la parte delantera del remolque al pivote de enganche.
max_middle_axle_weightRequiere accesonumber · kgModelo de ejes de semirremolque: límite legal del eje motriz (central).
max_rear_axle_weightRequiere accesonumber · kgModelo de ejes de semirremolque: límite legal del grupo de ejes traseros.
itemsItem[]obligatorioDefiniciones de artículos. Cada una puede tener quantity > 1. Al menos una.
idstringTu identificador, único dentro de la solicitud. Los resultados se refieren a él como item_id. Por defecto, template_id.
template_idstringUn ID de plantilla (tpl_…) de GET /v1/templates. Aporta todos los campos del artículo; los campos enviados junto a él los sustituyen.
labelstringEtiqueta visible (por defecto, el ID).
shapestringForma del artículo. cylinder y drum usan radius + height en lugar de length + width; pallet y drum siempre se mantienen en vertical.
boxcylinderpalletbagdrumPredeterminado "box"lengthnumber · cmLargo. Obligatorio salvo que shape sea cylinder o drum.
widthnumber · cmAncho. Obligatorio salvo que shape sea cylinder o drum.
heightnumber · cmobligatorioAlto (el lado vertical cuando el artículo está colocado tal como se definió).
radiusnumber · cmRadio. Obligatorio cuando shape es cylinder o drum.
weightnumber · kgobligatorioPeso de UNA unidad.
quantityintegerNúmero de unidades idénticas.
11–10000stackablebooleanSe pueden colocar otros artículos encima.
truemax_stack_weightnumber · kgPeso máximo que puede soportar una unidad. 0 = ilimitado.
0rotationstringall = cualquiera de las seis orientaciones; upright = solo puede girar sobre el eje vertical (este lado arriba); fixed = nunca se gira.
alluprightfixedPredeterminado "all"hazardousbooleanMercancía peligrosa: se mantiene cerca del suelo y separada de otros artículos peligrosos.
falsepriorityintegerPrioridad de carga. Mayor = se carga antes y se mantiene cuando falta espacio. 0 = ninguna.
0groupstringNombre del grupo al que pertenece este artículo (consulta groups y options.group_routing).
colorstringColor de visualización en formato #rrggbb (solo visor y PDF).
nesting_heightnumber · cmSolapamiento telescópico cuando se apilan unidades idénticas (cajas o cubos encajables).
0groupsGroup[]Grupos opcionales (clientes, paradas, pedidos). Obligatorios para cada grupo que indique un artículo cuando options.group_routing no es "none"; si no, los grupos se crean a partir de los nombres de grupo de los artículos, por orden de aparición.
namestringobligatorioNombre del grupo, al que hace referencia Item.group.
orderintegerOrden de carga (menor = se carga antes). Por defecto, su posición en la lista.
colorstringColor de visualización en formato #rrggbb.
optionsOptionsOpciones de carga. Todos los campos son opcionales.
packing_modestringauto = cuando los vehículos indicados se llenan, se añaden más copias del vehículo más adecuado (hasta el límite de vehículos del trabajo); fleet_only = solo se usan los vehículos indicados y lo que no cabe aparece como sin colocar.
autofleet_onlyPredeterminado "auto"group_routingstringnone = los grupos son solo informativos; wall = cada grupo tiene su propia sección del vehículo; routing = los grupos se cargan en orden y un grupo posterior puede ir encima o al lado de uno anterior, pero nunca debajo (entregas con varias paradas); no_stack = los grupos se cargan en orden, uno al lado del otro, nunca uno encima de otro.
nonewallroutingno_stackPredeterminado "none"allow_overweightbooleanIgnora los límites de carga útil de los vehículos.
falsemax_stack_itemsintegerNúmero máximo de artículos por pila. 0 = ilimitado.
0max_stack_density_kg_m2number · kg/m²Peso máximo de una pila por superficie de suelo. 0 = ilimitado.
0lock_rotationsbooleanMantiene la primera orientación que cabe en la altura del vehículo.
falsegroup_identical_binsbooleanTrata los vehículos idénticos como un único conjunto.
falsetime_limitnumber · sLímite superior del tiempo de cómputo para todo el trabajo. 0 = automático (con el tope de max_time_limit_seconds de GET /v1/limits). Al alcanzar el límite, se devuelve el mejor plan encontrado hasta ese momento. Solo pagas el tiempo de cómputo realmente usado.
0enforce_axleRequiere accesobooleanRechaza las colocaciones que sobrecargan un grupo de ejes, en los vehículos que incluyen los diez campos del modelo de ejes.
falseEjemplo de solicitud
curl -X POST "https://runner.cargoduo.com/v1/estimate" \
-H "Authorization: Bearer $CARGODUO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}'const res = await fetch("https://runner.cargoduo.com/v1/estimate", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CARGODUO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}),
});
const data = await res.json();
console.log(res.status, data);import os
import requests
response = requests.post(
"https://runner.cargoduo.com/v1/estimate",
headers={"Authorization": f"Bearer {os.environ['CARGODUO_API_KEY']}"},
json={
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000,
},
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": False,
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright",
},
],
"options": {
"packing_mode": "auto",
},
},
)
print(response.status_code, response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}`)
req, err := http.NewRequest("POST", "https://runner.cargoduo.com/v1/estimate", 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 = """
{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://runner.cargoduo.com/v1/estimate"))
.header("Authorization", "Bearer " + System.getenv("CARGODUO_API_KEY"))
.header("Content-Type", "application/json")
.method("POST", 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 = """
{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}
""";
var request = new HttpRequestMessage(HttpMethod.Post, "https://runner.cargoduo.com/v1/estimate")
{
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'
{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}
JSON;
$ch = curl_init('https://runner.cargoduo.com/v1/estimate');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
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/estimate")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch("CARGODUO_API_KEY")}"
request["Content-Type"] = "application/json"
request.body = <<~'JSON'
{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}
JSON
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts response.code, response.bodyEjemplo de respuesta
{
"valid": true,
"errors": [],
"warnings": [],
"items": 58,
"max_vehicles": 3,
"estimated_cost": {
"min_credits": 0.26,
"max_credits": 1.11
},
"estimated_seconds": 90,
"balance": {
"available_credits": 147.75
}
}Respuestas
200OKResultado de la validación y rango de precios.
NombreTipoObligatorioDescripciónvalidbooleanbooleanNoLa solicitud se aceptaría en POST /v1/pack.
errorsErrorDetail[]ErrorDetail[]NoErrores de validación (vacío si la solicitud es válida).
pathstringstringNoRuta JSON del campo erróneo, p. ej., items[3].length.
codestringstringNorequired,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.messagestringstringNoExplicación en inglés.
warningsWarning[]Warning[]NoObservaciones no bloqueantes.
codestringstringNoCódigo legible por máquina.
messagestringstringNoExplicación en inglés.
itemsintegerintegerNoTotal de unidades de artículos.
max_vehiclesintegerintegerNoNúmero máximo de vehículos que puede cargar el trabajo.
estimated_costCostRangeCostRangeNoRango de precios en créditos.
min_creditsnumber · creditsnumber · creditsNoPrecio mínimo previsible (el menor número de vehículos, sin cómputo).
max_creditsnumber · creditsnumber · creditsNoPeor caso: max_vehicles cargados y todo el presupuesto de cómputo usado. POST /v1/pack reserva este importe.
estimated_secondsnumber · snumber · sNoPresupuesto de cómputo que tendría el trabajo (un límite superior; la mayoría terminan antes).
balanceEstimateBalanceEstimateBalanceNoTus créditos disponibles.
available_creditsnumber · creditsnumber · creditsNo400Bad request
invalid_jsoninvalid_jsonEl cuerpo no es JSON válido o un campo tiene un tipo incorrecto.
Todos los códigos de errorNombreTipoObligatorioDescripciónerrorErrorBodyobligatorioErrorBodySícodestringobligatoriostringSíCódigo legible por máquina (snake_case). Basa tu lógica en este campo, nunca en
message.messagestringobligatoriostringSíExplicación en inglés.
request_idstringobligatoriostringSíIgual que la cabecera X-Request-Id. Indícalo al contactar con el soporte.
detailsErrorDetail[]ErrorDetail[]NoProblemas por campo (
validation_failed).pathstringstringNoRuta JSON del campo erróneo, p. ej., items[3].length.
codestringstringNorequired,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.messagestringstringNoExplicación en inglés.
401Unauthorized
unauthorizedkey_revokedkey_expiredunauthorizedClave de API ausente, mal formada o desconocida.key_revokedLa clave se ha revocado.key_expiredLa clave ha superado su fecha de caducidad.
Todos los códigos de errorNombreTipoObligatorioDescripciónerrorErrorBodyobligatorioErrorBodySícodestringobligatoriostringSíCódigo legible por máquina (snake_case). Basa tu lógica en este campo, nunca en
message.messagestringobligatoriostringSíExplicación en inglés.
request_idstringobligatoriostringSíIgual que la cabecera X-Request-Id. Indícalo al contactar con el soporte.
detailsErrorDetail[]ErrorDetail[]NoProblemas por campo (
validation_failed).pathstringstringNoRuta JSON del campo erróneo, p. ej., items[3].length.
codestringstringNorequired,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.messagestringstringNoExplicación en inglés.
403Forbidden
ip_not_allowedsubscription_inactiveaccount_inactivescope_missingip_not_allowedLa IP de origen no está en la lista de IP permitidas de la clave.subscription_inactiveLa organización no tiene ninguna suscripción activa que incluya la API.account_inactiveLa organización está suspendida o no tiene ningún propietario con la cuenta activa.scope_missingA la clave le falta un permiso que requiere este endpoint.
Todos los códigos de errorNombreTipoObligatorioDescripciónerrorErrorBodyobligatorioErrorBodySícodestringobligatoriostringSíCódigo legible por máquina (snake_case). Basa tu lógica en este campo, nunca en
message.messagestringobligatoriostringSíExplicación en inglés.
request_idstringobligatoriostringSíIgual que la cabecera X-Request-Id. Indícalo al contactar con el soporte.
detailsErrorDetail[]ErrorDetail[]NoProblemas por campo (
validation_failed).pathstringstringNoRuta JSON del campo erróneo, p. ej., items[3].length.
codestringstringNorequired,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.messagestringstringNoExplicación en inglés.
413Payload too large
payload_too_largepayload_too_largeEl cuerpo de la solicitud supera los 10 MB.
Todos los códigos de errorNombreTipoObligatorioDescripciónerrorErrorBodyobligatorioErrorBodySícodestringobligatoriostringSíCódigo legible por máquina (snake_case). Basa tu lógica en este campo, nunca en
message.messagestringobligatoriostringSíExplicación en inglés.
request_idstringobligatoriostringSíIgual que la cabecera X-Request-Id. Indícalo al contactar con el soporte.
detailsErrorDetail[]ErrorDetail[]NoProblemas por campo (
validation_failed).pathstringstringNoRuta JSON del campo erróneo, p. ej., items[3].length.
codestringstringNorequired,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.messagestringstringNoExplicación en inglés.
429Too many requests
rate_limitedrate_limitedDemasiadas solicitudes en el minuto, la hora o el día en curso (por clave o por organización), o más de 60 autenticaciones fallidas por minuto desde tu dirección IP.
Todos los códigos de errorNombreTipoObligatorioDescripciónerrorErrorBodyobligatorioErrorBodySícodestringobligatoriostringSíCódigo legible por máquina (snake_case). Basa tu lógica en este campo, nunca en
message.messagestringobligatoriostringSíExplicación en inglés.
request_idstringobligatoriostringSíIgual que la cabecera X-Request-Id. Indícalo al contactar con el soporte.
detailsErrorDetail[]ErrorDetail[]NoProblemas por campo (
validation_failed).pathstringstringNoRuta JSON del campo erróneo, p. ej., items[3].length.
codestringstringNorequired,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.messagestringstringNoExplicación en inglés.
500Internal server error
internal_errorinternal_errorAlgo ha fallado por nuestra parte.
Todos los códigos de errorNombreTipoObligatorioDescripciónerrorErrorBodyobligatorioErrorBodySícodestringobligatoriostringSíCódigo legible por máquina (snake_case). Basa tu lógica en este campo, nunca en
message.messagestringobligatoriostringSíExplicación en inglés.
request_idstringobligatoriostringSíIgual que la cabecera X-Request-Id. Indícalo al contactar con el soporte.
detailsErrorDetail[]ErrorDetail[]NoProblemas por campo (
validation_failed).pathstringstringNoRuta JSON del campo erróneo, p. ej., items[3].length.
codestringstringNorequired,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.messagestringstringNoExplicación en inglés.
503Service unavailable
api_disabledapi_disabledLa API está desactivada temporalmente (mantenimiento) o deshabilitada para la organización.
Todos los códigos de errorNombreTipoObligatorioDescripciónerrorErrorBodyobligatorioErrorBodySícodestringobligatoriostringSíCódigo legible por máquina (snake_case). Basa tu lógica en este campo, nunca en
message.messagestringobligatoriostringSíExplicación en inglés.
request_idstringobligatoriostringSíIgual que la cabecera X-Request-Id. Indícalo al contactar con el soporte.
detailsErrorDetail[]ErrorDetail[]NoProblemas por campo (
validation_failed).pathstringstringNoRuta JSON del campo erróneo, p. ej., items[3].length.
codestringstringNorequired,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.messagestringstringNoExplicación en inglés.