Skip to content
Developer docsAPI referenceJobs

Get a job

A job's status, progress, summary and cost.

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

Poll it every 1–2 s until status is succeeded, failed or canceled.

Authentication

Bearer API key with scopejobs:readLearn more

Path parameters

NameTypeRequiredDescription
idstringrequired
string
Yes

Job id (job_…).

Query parameters

NameTypeRequiredDescription
includestring
string
No

result inlines the load plan once the job succeeded.

result

Example request

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

Example response

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"
}

Responses

  • 200OKThe job.
    NameTypeRequiredDescription
    idstringrequired
    string
    Yes

    Job id (job_…).

    objectstringrequired
    string
    Yes

    Always job.

    job
    statusstringrequired
    string
    Yes

    queued → running → succeeded | failed | canceled.

    queuedrunningsucceededfailedcanceled
    referencestring
    string
    No

    Your reference from the request.

    sourcestring
    string
    No

    Where the job was created.

    apiplayground
    project_idstring
    string
    No

    The project (prj_…) a POST /v1/projects/{id}/pack job saves its plan into. Absent on other jobs.

    created_atstringrequired
    string
    Yes

    RFC 3339 timestamp.

    started_atstring | null
    string | null
    No

    When computing started (RFC 3339) or null.

    finished_atstring | null
    string | null
    No

    When the job ended (RFC 3339) or null.

    progressJobProgress
    JobProgress
    No

    Live progress while queued/running.

    summaryJobSummary
    JobSummary
    No

    Counts and timings.

    costJobCost
    JobCost
    No

    Credits charged (final once the job ended) and the reservation held while it ran.

    errorJobError | null
    JobError | null
    No

    Why the job failed or was canceled; null otherwise.

    warningsWarning[]
    Warning[]
    No

    Non-blocking remarks about the request (also repeated in the result).

    result_urlstring
    string
    No

    GET this URL for the full result once status is succeeded.

    pdf_urlstring
    string
    No

    A browser link that renders the load plan as a PDF (3D views + loading steps). Valid until expires_at. Empty after expiry.

    expires_atstring
    string
    No

    When the request/result bodies and the PDF link are deleted (RFC 3339). Job metadata and charges are kept.

    resultResult
    Result
    No

    The full result, inlined only when requested (?include=result) or when POST /v1/pack?wait= finished in time.

  • 401Unauthorizedunauthorizedkey_revokedkey_expired
    • unauthorizedMissing, malformed or unknown API key.
    • key_revokedThe key was revoked.
    • key_expiredThe key passed its expiry date.
    NameTypeRequiredDescription
    errorErrorBodyrequired
    ErrorBody
    Yes
    All error codes
  • 403Forbiddenip_not_allowedsubscription_inactiveaccount_inactivescope_missing
    • ip_not_allowedThe calling IP is not on the key's allowlist.
    • subscription_inactiveThe organization has no active subscription that includes the API.
    • account_inactiveThe organization is suspended, or has no owner whose account is active.
    • scope_missingThe key lacks a scope this endpoint needs.
    NameTypeRequiredDescription
    errorErrorBodyrequired
    ErrorBody
    Yes
    All error codes
  • 404Not foundjob_not_found
    • job_not_foundNo job with this id in your organization.
    NameTypeRequiredDescription
    errorErrorBodyrequired
    ErrorBody
    Yes
    All error codes
  • 429Too many requestsrate_limited
    • rate_limitedToo many requests in the current minute, hour or day (per key or per organization), or more than 60 failed authentications per minute from your IP address.
    NameTypeRequiredDescription
    errorErrorBodyrequired
    ErrorBody
    Yes
    All error codes
  • 500Internal server errorinternal_error
    • internal_errorSomething failed on our side.
    NameTypeRequiredDescription
    errorErrorBodyrequired
    ErrorBody
    Yes
    All error codes
  • 503Service unavailableapi_disabled
    • api_disabledThe API is temporarily disabled (maintenance) or switched off for the organization.
    NameTypeRequiredDescription
    errorErrorBodyrequired
    ErrorBody
    Yes
    All error codes