Aller au contenu
Documentation développeursRéférence de l'APITâches

Consulter une tâche

Statut, progression, résumé et coût d'une tâche.

GEThttps://runner.cargoduo.com/v1/jobs/{id}

Interrogez-la toutes les 1 à 2 s jusqu'à ce que status vaille succeeded, failed ou canceled.

Authentification

Clé API Bearer avec l'autorisationjobs:readEn savoir plus

Paramètres de chemin

NomTypeObligatoireDescription
idstringobligatoire
string
Oui

ID de la tâche (job_…).

Paramètres de requête

NomTypeObligatoireDescription
includestring
string
Non

result inclut le plan de chargement dans la réponse une fois la tâche réussie.

result

Exemple de requête

curl -X GET "https://runner.cargoduo.com/v1/jobs/job_4bK9mT2xQe7LpW1zRc8VdN3f" \
  -H "Authorization: Bearer $CARGODUO_API_KEY"

Exemple de réponse

200 OK · Job
{
  "id": "job_4bK9mT2xQe7LpW1zRc8VdN3f",
  "object": "job",
  "status": "succeeded",
  "reference": "order-1042",
  "source": "api",
  "created_at": "2026-10-19T09:12:03Z",
  "started_at": "2026-10-19T09:12:03Z",
  "finished_at": "2026-10-19T09:12:07Z",
  "progress": {
    "stage": "done",
    "vehicles_done": 1,
    "placed_items": 58
  },
  "summary": {
    "items_requested": 58,
    "items_placed": 58,
    "items_unplaced": 0,
    "vehicles_used": 1,
    "total_weight": 8580,
    "volume_utilization": 0.3116,
    "queue_ms": 12,
    "compute_ms": 4210
  },
  "cost": {
    "credits": 0.28105,
    "reserved_credits": 1.11,
    "rate_card_version": 1,
    "breakdown": {
      "base": 0.06,
      "vehicles": 0.2,
      "compute": 0.02105,
      "large_load": 0
    }
  },
  "error": null,
  "warnings": [],
  "result_url": "https://runner.cargoduo.com/v1/jobs/job_4bK9mT2xQe7LpW1zRc8VdN3f/result",
  "pdf_url": "https://app.cargoduo.com/r/Xq7Lm2Vt9KbR4cN8wZp1Hs6Yd3Fg5Jk0Ta2Ue7Wn4Ci",
  "expires_at": "2026-11-02T09:12:03Z"
}

Réponses

  • 200OKLa tâche.
    NomTypeObligatoireDescription
    idstringobligatoire
    string
    Oui

    ID de la tâche (job_…).

    objectstringobligatoire
    string
    Oui

    Toujours job.

    job
    statusstringobligatoire
    string
    Oui

    queued → running → succeeded | failed | canceled.

    queuedrunningsucceededfailedcanceled
    referencestring
    string
    Non

    Votre référence, reprise de la requête.

    sourcestring
    string
    Non

    Origine de la tâche.

    apiplayground
    project_idstring
    string
    Non

    Le projet (prj_…) dans lequel une tâche POST /v1/projects/{id}/pack enregistre son plan. Absent pour les autres tâches.

    created_atstringobligatoire
    string
    Oui

    Horodatage RFC 3339.

    started_atstring | null
    string | null
    Non

    Date de début du calcul (RFC 3339) ou null.

    finished_atstring | null
    string | null
    Non

    Date de fin de la tâche (RFC 3339) ou null.

    progressJobProgress
    JobProgress
    Non

    Progression en direct pendant l'attente ou l'exécution.

    summaryJobSummary
    JobSummary
    Non

    Compteurs et durées.

    costJobCost
    JobCost
    Non

    Crédits débités (définitifs une fois la tâche terminée) et réservation bloquée pendant son exécution.

    errorJobError | null
    JobError | null
    Non

    Raison de l'échec ou de l'annulation de la tâche ; null sinon.

    warningsWarning[]
    Warning[]
    Non

    Remarques non bloquantes sur la requête (également reprises dans le résultat).

    result_urlstring
    string
    Non

    Appelez cette URL en GET pour obtenir le résultat complet une fois que status vaut succeeded.

    pdf_urlstring
    string
    Non

    Lien à ouvrir dans un navigateur, qui génère le plan de chargement en PDF (vues 3D + étapes de chargement). Valide jusqu'à expires_at. Vide après expiration.

    expires_atstring
    string
    Non

    Date de suppression des corps de requête et de résultat et du lien PDF (RFC 3339). Les métadonnées et la facturation de la tâche sont conservées.

    resultResult
    Result
    Non

    Le résultat complet, inclus uniquement sur demande (?include=result) ou lorsque POST /v1/pack?wait= s'est terminé à temps.

  • 401Unauthorizedunauthorizedkey_revokedkey_expired
    • unauthorizedClé 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.
    NomTypeObligatoireDescription
    errorErrorBodyobligatoire
    ErrorBody
    Oui
    Tous les codes d'erreur
  • 403Forbiddenip_not_allowedsubscription_inactiveaccount_inactivescope_missing
    • 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.
    NomTypeObligatoireDescription
    errorErrorBodyobligatoire
    ErrorBody
    Oui
    Tous les codes d'erreur
  • 404Not foundjob_not_found
    • job_not_foundAucune tâche avec cet ID dans votre organisation.
    NomTypeObligatoireDescription
    errorErrorBodyobligatoire
    ErrorBody
    Oui
    Tous les codes d'erreur
  • 429Too many requestsrate_limited
    • rate_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.
    NomTypeObligatoireDescription
    errorErrorBodyobligatoire
    ErrorBody
    Oui
    Tous les codes d'erreur
  • 500Internal server errorinternal_error
    • internal_errorUne erreur s'est produite de notre côté.
    NomTypeObligatoireDescription
    errorErrorBodyobligatoire
    ErrorBody
    Oui
    Tous les codes d'erreur
  • 503Service unavailableapi_disabled
    • api_disabledL'API est temporairement désactivée (maintenance) ou désactivée pour l'organisation.
    NomTypeObligatoireDescription
    errorErrorBodyobligatoire
    ErrorBody
    Oui
    Tous les codes d'erreur