Consulter les limites
Les limites applicables à votre organisation et la grille tarifaire appliquée aux nouvelles tâches.
Authentification
Exemple de requête
curl -X GET "https://runner.cargoduo.com/v1/limits" \
-H "Authorization: Bearer $CARGODUO_API_KEY"const res = await fetch("https://runner.cargoduo.com/v1/limits", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.CARGODUO_API_KEY}`,
},
});
const data = await res.json();
console.log(res.status, data);import os
import requests
response = requests.get(
"https://runner.cargoduo.com/v1/limits",
headers={"Authorization": f"Bearer {os.environ['CARGODUO_API_KEY']}"},
)
print(response.status_code, response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://runner.cargoduo.com/v1/limits", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("CARGODUO_API_KEY"))
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 {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://runner.cargoduo.com/v1/limits"))
.header("Authorization", "Bearer " + System.getenv("CARGODUO_API_KEY"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.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 request = new HttpRequestMessage(HttpMethod.Get, "https://runner.cargoduo.com/v1/limits");
var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");<?php
$ch = curl_init('https://runner.cargoduo.com/v1/limits');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CARGODUO_API_KEY'),
],
]);
$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/limits")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch("CARGODUO_API_KEY")}"
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
{
"max_items_per_request": 2000,
"max_vehicles_per_request": 20,
"max_time_limit_seconds": 90,
"allowed_vehicle_types": [
"truck",
"trailer",
"container",
"pallet"
],
"concurrency": 1,
"max_queued_jobs": 20,
"rate_limits": {
"per_minute": 60,
"per_hour": 1000,
"per_day": 5000
},
"retention_days": 14,
"rate_card": {
"version": 1,
"per_job": 0.06,
"per_vehicle": 0.2,
"per_compute_second": 0.005,
"large_load_threshold": 500,
"per_hundred_items_over": 0.02
}
}Réponses
200OKLimites et grille tarifaire.
NomTypeObligatoireDescriptionmax_items_per_requestintegerintegerNonNombre maximal d'unités d'articles (somme des quantités) par tâche.
max_vehicles_per_requestintegerintegerNonNombre maximal de véhicules qu'une tâche peut lister et charger (y compris ceux ajoutés automatiquement).
max_time_limit_secondsintegerintegerNonPlafond du budget de calcul par tâche.
allowed_vehicle_typesstring[]string[]NonTypes de véhicules acceptés par l'API.
concurrencyintegerintegerNonTâches de votre organisation calculées simultanément ; les autres attendent dans la file.
max_queued_jobsintegerintegerNonTâches en file d'attente + en cours par organisation.
rate_limitsRateLimitsRateLimitsNonRequêtes par fenêtre, par clé et par organisation.
per_minuteintegerintegerNonper_hourintegerintegerNonper_dayintegerintegerNonretention_daysintegerintegerNonDurée de conservation, en jours, des corps de requête et de résultat et des liens PDF.
rate_cardRateCardRateCardNonPrix en crédits (1 crédit = 1 USD).
versionintegerintegerNonper_jobnumber · creditsnumber · creditsNonper_vehiclenumber · creditsnumber · creditsNonPar véhicule effectivement chargé.
per_compute_secondnumber · creditsnumber · creditsNonAu prorata à la milliseconde près.
large_load_thresholdintegerintegerNonUnités d'articles incluses avant application du supplément.
per_hundred_items_overnumber · creditsnumber · creditsNonPar tranche de 100 unités entamée au-delà du seuil.
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
ip_not_allowedsubscription_inactiveaccount_inactivescope_missingip_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.
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.