dr pipeline command reference
Complete cross-reference of every dr pipeline … subcommand, the
pipelines-api endpoint each one calls, sample invocations, and the
inputs (positional args, flags, request body fields) each command
accepts.
How to read this document
- Method + path is relative to
/api/v2. The CLI prefixes the host fromDATAROBOT_CLI_ENDPOINT(orDATAROBOT_ENDPOINT). - Usage lists the canonical invocation plus common variants.
- Inputs names every positional argument and flag the command
accepts. Flags shared by many commands (
--output-format,--scope,--version,--from-file) are described once at the bottom under "Shared flag semantics".
Pipeline lifecycle
| Command | API endpoint | Usage | Inputs |
|---|---|---|---|
dr pipeline create |
POST /pipelines |
dr pipeline create ./my_pipeline.py dr pipeline create --from-file=./my_pipeline.py dr pipeline create ./my_pipeline.py --name "My Pipeline" --description "First draft" --mode draft dr pipeline create ./my_pipeline.py --image <img-id> dr pipeline create --from-file=./my_pipeline.py --output-format json |
Positional: <file> (Python file; mutually exclusive with --from-file). Flags: --from-file=<path>, --name <text> (optional display name; defaults to title-cased @pipeline function name), --description <text>, --mode draft\|locked, --image <image-id> (optional), --output-format json. |
dr pipeline list |
GET /pipelines |
dr pipeline list dr pipeline list --mode draft dr pipeline list --offset 50 --limit 10 --output-format json |
Flags: --mode draft\|locked, --offset <n>, --limit <n>, --output-format json. |
dr pipeline get |
GET /pipelines/{pipeline_id} |
dr pipeline get <pipeline-id> dr pipeline get <pipeline-id> --output-format json |
Positional: <pipeline-id> (required). Flags: --output-format json. |
dr pipeline update |
PATCH /pipelines/{pipeline_id} |
dr pipeline update <pipeline-id> ./my_pipeline.py dr pipeline update <pipeline-id> --from-file=./my_pipeline.py dr pipeline update <pipeline-id> ./my_pipeline.py --image <img-id> |
Positional: <pipeline-id> (required), <file> (mutually exclusive with --from-file). Flags: --from-file=<path>, --image <image-id> (optional), --output-format json. |
dr pipeline delete |
DELETE /pipelines/{pipeline_id} |
dr pipeline delete <pipeline-id> |
Positional: <pipeline-id> (required). |
dr pipeline lock |
PATCH /pipelines/{pipeline_id}/mode |
dr pipeline lock <pipeline-id> dr pipeline lock <pipeline-id> --output-format json |
Positional: <pipeline-id> (required). Flags: --output-format json. |
Versions
| Command | API endpoint | Usage | Inputs |
|---|---|---|---|
dr pipeline version list |
GET /pipelines/{pipeline_id}/versions |
dr pipeline version list --pipeline <id> dr pipeline version list --pipeline <id> --offset 10 --limit 5 --output-format json |
Flags: --pipeline <id> (required), --offset <n>, --limit <n>, --output-format json. |
dr pipeline version get |
GET /pipelines/{pipeline_id}/versions/{version_id} |
dr pipeline version get --pipeline <id> 2 dr pipeline version get --pipeline <id> 2 --output-format json |
Positional: <version-id> (positive integer, required). Flags: --pipeline <id> (required), --output-format json. |
dr pipeline graph |
GET /pipelines/{pipeline_id}/graph (draft) GET /pipelines/{pipeline_id}/versions/{version_id}/graph (locked) |
dr pipeline graph --pipeline <id> (draft) dr pipeline graph --pipeline <id> --version=2 (locked) dr pipeline graph --pipeline <id> --version=2 --output-format json |
Flags: --pipeline <id> (required), --scope draft\|locked, --version <n>, --output-format json. |
Source (dr pipeline source)
Retrieve the Python source file of a pipeline as originally uploaded.
| Command | API endpoint | Usage | Inputs |
|---|---|---|---|
dr pipeline source |
GET /pipelines/{id}/source (draft) GET /pipelines/{id}/versions/{ver}/source (locked) |
dr pipeline source --pipeline <id> dr pipeline source --pipeline <id> --version=2 dr pipeline source --pipeline <id> --output-format json |
Flags: --pipeline <id> (required), --scope draft\|locked, --version <n>, --output-format json. |
Human output prints the source verbatim. JSON output wraps it: {"source": "..."}.
Shared flag semantics
--scope / --version (inputs, runs, graph)
The CLI mirrors the API's two URL shapes — /pipelines/{id}/… for the
mutable draft and /pipelines/{id}/versions/{ver}/… for a locked
version — through a pair of optional flags:
| Flags supplied | Resolved scope | URL used |
|---|---|---|
| (none) | draft |
/pipelines/{id}/… |
--version=N |
locked (auto) |
/pipelines/{id}/versions/N/… |
--scope=draft |
draft |
/pipelines/{id}/… |
--scope=locked --version=N |
locked |
/pipelines/{id}/versions/N/… |
--scope=draft --version=N |
error | --scope=draft cannot be combined with --version |
--scope=locked (no --version) |
error | --scope=locked requires --version=<n> |
--from-file / positional file (create + update verbs)
pipeline create and pipeline update accept the input file in two
equivalent ways:
Exactly one of the two must be supplied.
--output-format
Every read/write verb that produces a payload accepts --output-format json to
emit the underlying response struct as indented JSON. Any other value is
rejected with invalid output format: <value> (supported: json).
auth / --skip-auth
All verbs run auth.EnsureAuthenticatedE as their PreRunE. Pass the
global --skip-auth flag (or set DATAROBOT_CLI_SKIP_AUTH=true) when
exercising a local API stub that doesn't implement /version/.
Inputs (dr pipeline input …)
Inputs exist in two scopes — draft and locked — selected via --scope / --version.
| Command | API endpoint | Usage | Inputs |
|---|---|---|---|
dr pipeline input create |
POST /pipelines/{id}/inputs (draft) POST /pipelines/{id}/versions/{ver}/inputs (locked) |
dr pipeline input create --pipeline <id> ./payload.json dr pipeline input create --pipeline <id> --version=2 ./payload.json --output-format json |
Positional: <payload-file> (JSON object; mutually exclusive with --from-file). Flags: --pipeline <id> (required), --scope, --version, --from-file=<path>, --output-format json. |
dr pipeline input list |
GET /pipelines/{id}/inputs (draft) GET /pipelines/{id}/versions/{ver}/inputs (locked) |
dr pipeline input list --pipeline <id> |
Flags: --pipeline <id> (required), --scope, --version, --offset <n>, --limit <n>, --output-format json. |
dr pipeline input get |
GET /pipelines/{id}/inputs/{input_id} (draft) GET /pipelines/{id}/versions/{ver}/inputs/{input_id} (locked) |
dr pipeline input get --pipeline <id> <input-id> |
Positional: <input-id> (required). Flags: --pipeline <id> (required), --scope, --version, --output-format json. |
dr pipeline input update |
PATCH /pipelines/{id}/inputs/{input_id} (draft only) |
dr pipeline input update --pipeline <id> <input-id> ./payload.json |
Positional: <input-id> (required), <payload-file>. Flags: --pipeline <id> (required), --from-file=<path>, --output-format json. |
dr pipeline input delete |
DELETE /pipelines/{id}/inputs/{input_id} (draft) DELETE /pipelines/{id}/versions/{ver}/inputs/{input_id} (locked) |
dr pipeline input delete --pipeline <id> <input-id> |
Positional: <input-id> (required). Flags: --pipeline <id> (required), --scope, --version. |
Runs (dr pipeline run …)
Same draft/locked scope rules as graph. The wire-level URLs still use the legacy
term dispatches / dispatch_id, but the CLI's --output-format json remaps these to
run_id / covalent_run_id.
| Command | API endpoint | Usage | Inputs |
|---|---|---|---|
dr pipeline run create |
POST /pipelines/{id}/dispatches (draft) POST /pipelines/{id}/versions/{ver}/dispatches (locked) |
dr pipeline run create --pipeline <id> --input <input-id> --image <img-id> dr pipeline run create --pipeline <id> --version=2 --input <input-id> --image <img-id> dr pipeline run create --pipeline <id> --input <input-id> --image <img-id> --output-format json |
Flags: --pipeline <id> (required), --input <input-id> (required), --image <image-id> (required; the execution image for this run), --scope, --version, --output-format json. |
dr pipeline run list |
GET /pipelines/{id}/dispatches (draft) GET /pipelines/{id}/versions/{ver}/dispatches (locked) |
dr pipeline run list --pipeline <id> dr pipeline run list --pipeline <id> --version=2 --output-format json |
Flags: --pipeline <id> (required), --scope, --version, --offset <n>, --limit <n>, --output-format json. |
dr pipeline run get |
GET /pipelines/{id}/dispatches/{dispatch_id} (draft) GET /pipelines/{id}/versions/{ver}/dispatches/{dispatch_id} (locked) |
dr pipeline run get --pipeline <id> <run-id> |
Positional: <run-id> (required). Flags: --pipeline <id> (required), --scope, --version, --output-format json. |
dr pipeline run status |
GET /pipelines/{id}/dispatches/{dispatch_id}/status (draft) GET /pipelines/{id}/versions/{ver}/dispatches/{dispatch_id}/status (locked) |
dr pipeline run status --pipeline <id> <run-id> |
Positional: <run-id> (required). Flags: --pipeline <id> (required), --scope, --version, --output-format json. |
dr pipeline run cancel |
DELETE /pipelines/{id}/dispatches/{dispatch_id} (draft) DELETE /pipelines/{id}/versions/{ver}/dispatches/{dispatch_id} (locked) |
dr pipeline run cancel --pipeline <id> <run-id> |
Positional: <run-id> (required). Flags: --pipeline <id> (required), --scope, --version. |
Run tasks (dr pipeline run task …)
Per-invocation execution records for a single run. <task-id> is the sequential TASK ID from run task list; when the same @task runs at multiple graph nodes (fan-out), pass --node-id <N> (the NODE ID column) to select one invocation — otherwise get/logs/result return 409 Conflict listing the candidate node ids.
| Command | API endpoint | Usage | Inputs |
|---|---|---|---|
dr pipeline run task list |
GET /pipelines/{id}/dispatches/{dispatch_id}/tasks |
dr pipeline run task list --pipeline <id> --run <run-id> |
Flags: --pipeline <id> (required), --run <run-id> (required), --output-format json. |
dr pipeline run task get |
GET /pipelines/{id}/dispatches/{dispatch_id}/tasks/{task_id} |
dr pipeline run task get --pipeline <id> --run <run-id> <task-id> dr pipeline run task get --pipeline <id> --run <run-id> 3 --node-id 7 |
Positional: <task-id> (required). Flags: --pipeline <id> (required), --run <run-id> (required), --node-id <n> (fan-out selector), --output-format json. |
dr pipeline run task logs |
GET /pipelines/{id}/dispatches/{dispatch_id}/tasks/{task_id}/logs GET …/tasks/{task_id}/logs/{stream} (durable) |
dr pipeline run task logs --pipeline <id> --run <run-id> <task-id> dr pipeline run task logs --pipeline <id> --run <run-id> 3 --node-id 7 --stream stderr |
Positional: <task-id> (required). Flags: --pipeline <id> (required), --run <run-id> (required), --node-id <n>, --stream stdout\|stderr (durable S3 log), --tail <n> (live only), --verbosity user\|all, --output-format json. |
dr pipeline run task result |
GET /pipelines/{id}/dispatches/{dispatch_id}/tasks/{task_id}/result |
dr pipeline run task result --pipeline <id> --run <run-id> <task-id> dr pipeline run task result --pipeline <id> --run <run-id> 3 --node-id 7 |
Positional: <task-id> (required). Flags: --pipeline <id> (required), --run <run-id> (required), --node-id <n>, --output-format json. Returns 409 until the task is COMPLETED, or when a fan-out task is addressed without --node-id. |
Schedules (dr pipeline schedule …)
Schedules hang off the pipeline, not off a version: the routes are
/pipelines/{id}/schedules[/{schedule_id}]. Only create takes --version
(the locked version to run), and it travels in the request body as
pipeline_version_id rather than in the path. list, get, update and
delete take --pipeline only.
| Command | API endpoint | Usage | Inputs |
|---|---|---|---|
dr pipeline schedule create |
POST /pipelines/{id}/schedules |
dr pipeline schedule create --pipeline <id> --version 2 --cron "0 * * * *" --input <input-id> --image <image-id> --image-version 1 |
Flags: --pipeline <id> (required), --version <n> (required), --cron "<expr>" (required), --input <input-id> (required), --image <image-id> (required), --image-version <n> (required), --timezone <iana> (default UTC), --output-format json. |
dr pipeline schedule list |
GET /pipelines/{id}/schedules |
dr pipeline schedule list --pipeline <id> |
Flags: --pipeline <id> (required), --offset <n>, --limit <n> (default 100), --output-format json. |
dr pipeline schedule get |
GET /pipelines/{id}/schedules/{schedule_id} |
dr pipeline schedule get --pipeline <id> <schedule-id> |
Positional: <schedule-id> (required). Flags: --pipeline <id> (required), --output-format json. |
dr pipeline schedule update |
PATCH /pipelines/{id}/schedules/{schedule_id} |
dr pipeline schedule update --pipeline <id> <schedule-id> --cron "*/15 * * * *" |
Positional: <schedule-id> (required). Flags: --pipeline <id> (required), --cron "<expr>", --timezone <iana>. At least one of --cron / --timezone required. |
dr pipeline schedule delete |
DELETE /pipelines/{id}/schedules/{schedule_id} |
dr pipeline schedule delete --pipeline <id> <schedule-id> |
Positional: <schedule-id> (required). Flags: --pipeline <id> (required). |
A schedule still targets a locked version — the version is recorded on the schedule and comes back on reads — but it is not part of the URL.
Tasks (dr pipeline task …)
Task IDs are stable identifiers minted when a pipeline is uploaded. They appear in the
TASK ID column of dr pipeline graph and can be used to inspect individual tasks.
| Command | API endpoint | Usage | Inputs |
|---|---|---|---|
dr pipeline task get |
GET /pipelines/{id}/tasks/{task_id} (draft) GET /pipelines/{id}/versions/{ver}/tasks/{task_id} (locked) |
dr pipeline task get --pipeline <id> <task-id> dr pipeline task get --pipeline <id> --version=2 <task-id> dr pipeline task get --pipeline <id> <task-id> --output-format json |
Positional: <task-id> (required). Flags: --pipeline <id> (required), --scope, --version, --output-format json. |
Images (dr pipeline image …)
| Command | API endpoint | Usage | Inputs |
|---|---|---|---|
dr pipeline image create |
POST /pipelines/images |
dr pipeline image create --name ml-base --package numpy --package pandas dr pipeline image create --name ml-base --conda scipy --conda numpy --python-version 3.11 dr pipeline image create --name gpu-base --package torch --gpu --output-format json |
Flags: --name <name> (required), --package <spec> (repeatable / comma-separated), --conda <spec> (repeatable), --conda-channel <channel> (repeatable; requires --conda), --python-version <ver>, --base-image <uri> (DEPRECATED — use --python-version; mutually exclusive with it), --gpu (--nvidia deprecated alias), --description <text>, --output-format json. At least one of --package or --conda required. |
dr pipeline image get |
GET /pipelines/images/{id} |
dr pipeline image get <img-id> dr pipeline image get <img-id> --output-format json |
Positional: <image-id> (required). Flags: --output-format json. |
dr pipeline image list |
GET /pipelines/images |
dr pipeline image list dr pipeline image list --offset 50 --limit 10 --output-format json |
Flags: --offset <n>, --limit <n>, --output-format json. |
dr pipeline image update |
PATCH /pipelines/images/{id} |
dr pipeline image update <img-id> --package scikit-learn dr pipeline image update <img-id> --conda scipy --python-version 3.11 dr pipeline image update <img-id> --package torch --gpu |
Positional: <image-id> (required). Flags: --package <spec> (repeatable / comma-separated), --conda <spec> (repeatable), --conda-channel <channel> (repeatable; requires --conda), --python-version <ver>, --base-image <uri> (DEPRECATED — use --python-version; mutually exclusive with it), --gpu (--nvidia deprecated alias), --output-format json. At least one of --package or --conda required. All fields must be re-specified on each update (no carry-over from previous version). |
dr pipeline image delete |
DELETE /pipelines/images/{id} |
dr pipeline image delete <img-id> |
Positional: <image-id> (required). |
dr pipeline image version delete |
DELETE /pipelines/images/{id}/versions/{n} |
dr pipeline image version delete --image <img-id> <version> |
Positional: <version> (integer, required). Flags: --image <img-id> (required). |
dr pipeline image version logs |
GET /pipelines/images/{id}/versions/{n}/logs |
dr pipeline image version logs --image <img-id> <version> |
Positional: <version> (integer, required). Flags: --image <img-id> (required). Build logs are available once the version's build has completed (status READY or ERROR). |
Quick endpoint lookup
| API endpoint | CLI command |
|---|---|
POST /pipelines |
dr pipeline create |
GET /pipelines |
dr pipeline list |
GET /pipelines/{id} |
dr pipeline get |
PATCH /pipelines/{id} |
dr pipeline update |
DELETE /pipelines/{id} |
dr pipeline delete |
PATCH /pipelines/{id}/mode |
dr pipeline lock |
GET /pipelines/{id}/versions |
dr pipeline version list |
GET /pipelines/{id}/versions/{ver} |
dr pipeline version get |
GET /pipelines/{id}/graph |
dr pipeline graph (draft) |
GET /pipelines/{id}/versions/{ver}/graph |
dr pipeline graph (locked) |
GET /pipelines/{id}/source |
dr pipeline source (draft) |
GET /pipelines/{id}/versions/{ver}/source |
dr pipeline source (locked) |
POST /pipelines/{id}/dispatches |
dr pipeline run create (draft) |
GET /pipelines/{id}/dispatches |
dr pipeline run list (draft) |
GET /pipelines/{id}/dispatches/{dispatch_id} |
dr pipeline run get (draft) |
DELETE /pipelines/{id}/dispatches/{dispatch_id} |
dr pipeline run cancel (draft) |
GET /pipelines/{id}/dispatches/{dispatch_id}/tasks |
dr pipeline run task list |
GET /pipelines/{id}/dispatches/{dispatch_id}/tasks/{task_id} |
dr pipeline run task get |
GET /pipelines/{id}/dispatches/{dispatch_id}/tasks/{task_id}/logs |
dr pipeline run task logs |
GET /pipelines/{id}/dispatches/{dispatch_id}/tasks/{task_id}/result |
dr pipeline run task result |
POST /pipelines/{id}/inputs |
dr pipeline input create (draft) |
POST /pipelines/{id}/versions/{ver}/inputs |
dr pipeline input create (locked) |
GET /pipelines/{id}/inputs |
dr pipeline input list (draft) |
GET /pipelines/{id}/versions/{ver}/inputs |
dr pipeline input list (locked) |
GET /pipelines/{id}/inputs/{input_id} |
dr pipeline input get (draft) |
GET /pipelines/{id}/versions/{ver}/inputs/{input_id} |
dr pipeline input get (locked) |
PATCH /pipelines/{id}/inputs/{input_id} |
dr pipeline input update (draft) |
DELETE /pipelines/{id}/inputs/{input_id} |
dr pipeline input delete (draft) |
DELETE /pipelines/{id}/versions/{ver}/inputs/{input_id} |
dr pipeline input delete (locked) |
POST /pipelines/{id}/versions/{ver}/schedules |
dr pipeline schedule create |
GET /pipelines/{id}/versions/{ver}/schedules |
dr pipeline schedule list |
GET /pipelines/{id}/versions/{ver}/schedules/{id} |
dr pipeline schedule get |
PATCH /pipelines/{id}/versions/{ver}/schedules/{id} |
dr pipeline schedule update |
DELETE /pipelines/{id}/versions/{ver}/schedules/{id} |
dr pipeline schedule delete |
POST /pipelines/images |
dr pipeline image create |
GET /pipelines/images |
dr pipeline image list |
GET /pipelines/images/{id} |
dr pipeline image get |
PATCH /pipelines/images/{id} |
dr pipeline image update |
DELETE /pipelines/images/{id} |
dr pipeline image delete |
DELETE /pipelines/images/{id}/versions/{n} |
dr pipeline image version delete |
GET /pipelines/images/{id}/versions/{n}/logs |
dr pipeline image version logs |
GET /pipelines/{id}/tasks/{task_id} |
dr pipeline task get (draft) |
GET /pipelines/{id}/versions/{ver}/tasks/{task_id} |
dr pipeline task get (locked) |