# Pipeline dispatches

> Pipeline dispatches - Run pipelines, track and cancel runs, and inspect each task's status, logs,
> and result.

This Markdown file sits beside the HTML page at the same path (with a `.md` suffix). It summarizes the topic and lists links for tools and LLM context.

Companion generated at `2026-10-23T15:34:27.659903+00:00` (UTC).

## Primary page

- [Pipeline dispatches](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md): Full documentation for this topic (Markdown sidecar).

## Sections on this page

- [List draft pipeline dispatches by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#list-draft-pipeline-dispatches-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#listdraftpipelinedispatches-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses): In-page section heading.
- [Run draft pipeline by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#run-draft-pipeline-by-pipeline_-id): In-page section heading.
- [Body parameter](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#body-parameter): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#createdraftpipelinedispatch-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_1): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_1): In-page section heading.
- [cancel draft pipeline dispatch by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#cancel-draft-pipeline-dispatch-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#canceldraftpipelinedispatch-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_2): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_2): In-page section heading.
- [Get draft pipeline dispatch by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#get-draft-pipeline-dispatch-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#getdraftpipelinedispatch-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_3): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_3): In-page section heading.
- [Get draft pipeline dispatch status by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#get-draft-pipeline-dispatch-status-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#getdraftpipelinedispatchstatus-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_4): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_4): In-page section heading.
- [List dispatch tasks by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#list-dispatch-tasks-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#listpipelinedispatchtasks-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_5): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_5): In-page section heading.
- [Response Schema](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#response-schema): In-page section heading.
- [Get dispatch task by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#get-dispatch-task-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#getpipelinedispatchtask-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_6): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_6): In-page section heading.
- [Get dispatch task logs by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#get-dispatch-task-logs-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#getpipelinedispatchtasklogs-parameters): In-page section heading.
- [Enumerated Values](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#enumerated-values): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_7): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_7): In-page section heading.
- [Get dispatch task log stream by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#get-dispatch-task-log-stream-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#getpipelinedispatchtasklogstream-parameters): In-page section heading.
- [Enumerated Values](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#enumerated-values_1): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_8): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_8): In-page section heading.
- [Get dispatch task result by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#get-dispatch-task-result-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#getpipelinedispatchtaskresult-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_9): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_9): In-page section heading.
- [List pipeline version dispatches by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#list-pipeline-version-dispatches-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#listpipelineversiondispatches-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_10): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_10): In-page section heading.
- [Run pipeline version by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#run-pipeline-version-by-pipeline_-id): In-page section heading.
- [Body parameter](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#body-parameter_1): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#createpipelineversiondispatch-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_11): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_11): In-page section heading.
- [cancel pipeline version dispatch by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#cancel-pipeline-version-dispatch-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#cancelpipelineversiondispatch-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_12): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_12): In-page section heading.
- [Get pipeline version dispatch by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#get-pipeline-version-dispatch-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#getpipelineversiondispatch-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_13): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_13): In-page section heading.
- [Get pipeline version dispatch status by pipeline_ ID](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#get-pipeline-version-dispatch-status-by-pipeline_-id): In-page section heading.
- [Parameters](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#getpipelineversiondispatchstatus-parameters): In-page section heading.
- [Example responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#example-responses_14): In-page section heading.
- [Responses](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#responses_14): In-page section heading.
- [DataPage_PipelineDispatchResponse_](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_DataPage_PipelineDispatchResponse_): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties): In-page section heading.
- [HTTPValidationError](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_HTTPValidationError): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_1): In-page section heading.
- [PipelineDispatchCreateRequest](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_PipelineDispatchCreateRequest): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_2): In-page section heading.
- [PipelineDispatchResponse](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_PipelineDispatchResponse): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_3): In-page section heading.
- [PipelineDispatchStatus](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_PipelineDispatchStatus): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_4): In-page section heading.
- [Enumerated Values](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#enumerated-values_2): In-page section heading.
- [PipelineDispatchStatusResponse](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_PipelineDispatchStatusResponse): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_5): In-page section heading.
- [PipelineDispatchTrigger](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_PipelineDispatchTrigger): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_6): In-page section heading.
- [Enumerated Values](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#enumerated-values_3): In-page section heading.
- [TaskExecutionDurableLogResponse](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_TaskExecutionDurableLogResponse): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_7): In-page section heading.
- [TaskExecutionLogsResponse](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_TaskExecutionLogsResponse): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_8): In-page section heading.
- [TaskExecutionResponse](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_TaskExecutionResponse): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_9): In-page section heading.
- [TaskExecutionResultResponse](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_TaskExecutionResultResponse): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_10): In-page section heading.
- [ValidationError](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#tocS_ValidationError): In-page section heading.
- [Properties](https://docs.datarobot.com/ja/docs/api/reference/public-api/pipeline_dispatches.html.md#properties_11): In-page section heading.

## Documentation content

Run pipelines, track and cancel runs, and inspect each task's status, logs, and result.

## List draft pipeline dispatches by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/dispatches`

List the runs (dispatches) of a draft pipeline.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| offset | query | integer | false | none |
| limit | query | integer | false | none |

### Example responses

> 200 Response

```
{
  "properties": {
    "count": {
      "readOnly": true,
      "title": "Count",
      "type": "integer"
    },
    "data": {
      "items": {
        "description": "Response schema for a pipeline dispatch.",
        "properties": {
          "covalentDispatchId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Covalentdispatchid"
          },
          "createdAt": {
            "format": "date-time",
            "title": "Createdat",
            "type": "string"
          },
          "errorDetail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Errordetail"
          },
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "Id",
            "type": "string"
          },
          "imageId": {
            "anyOf": [
              {
                "maxLength": 24,
                "minLength": 24,
                "pattern": "^[0-9a-fA-F]{24}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Imageid"
          },
          "imageVersion": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Imageversion"
          },
          "inputId": {
            "maxLength": 24,
            "minLength": 24,
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "Inputid",
            "type": "string"
          },
          "pipelineId": {
            "maxLength": 24,
            "minLength": 24,
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "Pipelineid",
            "type": "string"
          },
          "status": {
            "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
            "enum": [
              "PENDING",
              "PREPARING",
              "RUNNING",
              "COMPLETED",
              "FAILED",
              "CANCELLED",
              "ERRORED"
            ],
            "title": "PipelineDispatchStatus",
            "type": "string"
          },
          "triggeredBy": {
            "description": "How a pipeline dispatch was triggered.",
            "enum": [
              "api",
              "schedule"
            ],
            "title": "PipelineDispatchTrigger",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "title": "Updatedat",
            "type": "string"
          },
          "versionId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Versionid"
          }
        },
        "required": [
          "id",
          "pipelineId",
          "inputId",
          "triggeredBy",
          "status",
          "createdAt",
          "updatedAt"
        ],
        "title": "PipelineDispatchResponse",
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    },
    "next": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next"
    },
    "previous": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Previous"
    },
    "totalCount": {
      "title": "Totalcount",
      "type": "integer"
    }
  },
  "required": [
    "data",
    "totalCount",
    "count"
  ],
  "title": "DataPage[PipelineDispatchResponse]",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | DataPage_PipelineDispatchResponse_ |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## Run draft pipeline by pipeline_ ID

Operation path: `POST /api/v2/pipelines/{pipeline_id}/dispatches`

Run a draft pipeline with an input payload. Returns the new dispatch.

### Body parameter

```
{
  "description": "Request body for creating a pipeline dispatch. under the prep-pod flow (see ``specs/dispatch_prep_pod_implementation_plan.md`` c.1), ``image_id`` is required — the prep pod runs the user's chosen image and can't be launched without one. pipeline creation still leaves ``image_id`` optional (drafts have no image); it's resolved at dispatch time here.",
  "properties": {
    "imageId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Imageid",
      "type": "string"
    },
    "inputId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Inputid",
      "type": "string"
    }
  },
  "required": [
    "inputId",
    "imageId"
  ],
  "title": "PipelineDispatchCreateRequest",
  "type": "object"
}
```

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| body | body | PipelineDispatchCreateRequest | true | none |

### Example responses

> 202 Response

```
{
  "description": "Response schema for a pipeline dispatch.",
  "properties": {
    "covalentDispatchId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Covalentdispatchid"
    },
    "createdAt": {
      "format": "date-time",
      "title": "Createdat",
      "type": "string"
    },
    "errorDetail": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Errordetail"
    },
    "id": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Id",
      "type": "string"
    },
    "imageId": {
      "anyOf": [
        {
          "maxLength": 24,
          "minLength": 24,
          "pattern": "^[0-9a-fA-F]{24}$",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageid"
    },
    "imageVersion": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageversion"
    },
    "inputId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Inputid",
      "type": "string"
    },
    "pipelineId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Pipelineid",
      "type": "string"
    },
    "status": {
      "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
      "enum": [
        "PENDING",
        "PREPARING",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "CANCELLED",
        "ERRORED"
      ],
      "title": "PipelineDispatchStatus",
      "type": "string"
    },
    "triggeredBy": {
      "description": "How a pipeline dispatch was triggered.",
      "enum": [
        "api",
        "schedule"
      ],
      "title": "PipelineDispatchTrigger",
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "title": "Updatedat",
      "type": "string"
    },
    "versionId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Versionid"
    }
  },
  "required": [
    "id",
    "pipelineId",
    "inputId",
    "triggeredBy",
    "status",
    "createdAt",
    "updatedAt"
  ],
  "title": "PipelineDispatchResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 202 | Accepted | Successful Response | PipelineDispatchResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## cancel draft pipeline dispatch by pipeline_ ID

Operation path: `DELETE /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}`

Cancel a run (dispatch) of a draft pipeline.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |

### Example responses

> 422 Response

```
{
  "properties": {
    "detail": {
      "items": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      },
      "title": "Detail",
      "type": "array"
    }
  },
  "title": "HTTPValidationError",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 204 | No Content | Successful Response | None |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## Get draft pipeline dispatch by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}`

Retrieve a run (dispatch) of a draft pipeline.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |

### Example responses

> 200 Response

```
{
  "description": "Response schema for a pipeline dispatch.",
  "properties": {
    "covalentDispatchId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Covalentdispatchid"
    },
    "createdAt": {
      "format": "date-time",
      "title": "Createdat",
      "type": "string"
    },
    "errorDetail": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Errordetail"
    },
    "id": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Id",
      "type": "string"
    },
    "imageId": {
      "anyOf": [
        {
          "maxLength": 24,
          "minLength": 24,
          "pattern": "^[0-9a-fA-F]{24}$",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageid"
    },
    "imageVersion": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageversion"
    },
    "inputId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Inputid",
      "type": "string"
    },
    "pipelineId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Pipelineid",
      "type": "string"
    },
    "status": {
      "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
      "enum": [
        "PENDING",
        "PREPARING",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "CANCELLED",
        "ERRORED"
      ],
      "title": "PipelineDispatchStatus",
      "type": "string"
    },
    "triggeredBy": {
      "description": "How a pipeline dispatch was triggered.",
      "enum": [
        "api",
        "schedule"
      ],
      "title": "PipelineDispatchTrigger",
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "title": "Updatedat",
      "type": "string"
    },
    "versionId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Versionid"
    }
  },
  "required": [
    "id",
    "pipelineId",
    "inputId",
    "triggeredBy",
    "status",
    "createdAt",
    "updatedAt"
  ],
  "title": "PipelineDispatchResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | PipelineDispatchResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## Get draft pipeline dispatch status by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/status`

Retrieve the current status of a draft pipeline run. Use this endpoint to poll for completion.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |

### Example responses

> 200 Response

```
{
  "description": "Lightweight status polling response.",
  "properties": {
    "covalentDispatchId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Covalentdispatchid"
    },
    "id": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Id",
      "type": "string"
    },
    "status": {
      "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
      "enum": [
        "PENDING",
        "PREPARING",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "CANCELLED",
        "ERRORED"
      ],
      "title": "PipelineDispatchStatus",
      "type": "string"
    }
  },
  "required": [
    "id",
    "status"
  ],
  "title": "PipelineDispatchStatusResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | PipelineDispatchStatusResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## List dispatch tasks by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks`

List the tasks of a pipeline run (dispatch) and their status.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |

### Example responses

> 200 Response

```
{
  "items": {
    "description": "Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. ``1``, ``2``, ``3``. use this as the ``{task_id}`` path parameter for per-task endpoints. ``none`` for internal utility nodes with no user ``@task`` backing. node_id: per-dispatch execution node id. pass as ``?nodeid=`` to per-task endpoints to address a specific invocation when the same ``@task`` function runs more than once in a single dispatch (fan-out). each invocation has a distinct ``nodeid`` even when they share the same ``taskid``. ``none`` for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node ``id`` (from ``get .../graph``) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. ``none`` when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the ``@task`` function name. status: current ``taskexecutionstatus`` value. started_at: when execution began, or ``none`` if not yet started. completed_at: when execution finished, or ``none`` if still running. error_detail: failure message when ``status == failed``. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). ``none`` only for legacy rows.",
    "properties": {
      "completedAt": {
        "anyOf": [
          {
            "format": "date-time",
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "title": "Completedat"
      },
      "errorDetail": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "title": "Errordetail"
      },
      "graphNodeId": {
        "anyOf": [
          {
            "type": "integer"
          },
          {
            "type": "null"
          }
        ],
        "title": "Graphnodeid"
      },
      "name": {
        "title": "Name",
        "type": "string"
      },
      "nodeId": {
        "anyOf": [
          {
            "type": "integer"
          },
          {
            "type": "null"
          }
        ],
        "title": "Nodeid"
      },
      "resourceBundleId": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "title": "Resourcebundleid"
      },
      "startedAt": {
        "anyOf": [
          {
            "format": "date-time",
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "title": "Startedat"
      },
      "status": {
        "title": "Status",
        "type": "string"
      },
      "taskId": {
        "anyOf": [
          {
            "type": "integer"
          },
          {
            "type": "null"
          }
        ],
        "title": "Taskid"
      }
    },
    "required": [
      "name",
      "status"
    ],
    "title": "TaskExecutionResponse",
    "type": "object"
  },
  "title": "Response Listpipelinedispatchtasks",
  "type": "array"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | Inline |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

### Response Schema

Status Code 200

Response Listpipelinedispatchtasks

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| Response Listpipelinedispatchtasks | [TaskExecutionResponse] | false |  | [Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. 1, 2, 3. use this as the {task_id} path parameter for per-task endpoints. none for internal utility nodes with no user @task backing. node_id: per-dispatch execution node id. pass as ?nodeid= to per-task endpoints to address a specific invocation when the same @task function runs more than once in a single dispatch (fan-out). each invocation has a distinct nodeid even when they share the same taskid. none for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node id (from get .../graph) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. none when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the @task function name. status: current taskexecutionstatus value. started_at: when execution began, or none if not yet started. completed_at: when execution finished, or none if still running. error_detail: failure message when status == failed. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). none only for legacy rows.] |
| » TaskExecutionResponse | TaskExecutionResponse | false |  | Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. 1, 2, 3. use this as the {task_id} path parameter for per-task endpoints. none for internal utility nodes with no user @task backing. node_id: per-dispatch execution node id. pass as ?nodeid= to per-task endpoints to address a specific invocation when the same @task function runs more than once in a single dispatch (fan-out). each invocation has a distinct nodeid even when they share the same taskid. none for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node id (from get .../graph) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. none when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the @task function name. status: current taskexecutionstatus value. started_at: when execution began, or none if not yet started. completed_at: when execution finished, or none if still running. error_detail: failure message when status == failed. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). none only for legacy rows. |
| »» completedAt | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | string(date-time) | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »» errorDetail | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »» graphNodeId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | integer | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »» name | string | true |  | none |
| »» nodeId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | integer | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »» resourceBundleId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »» startedAt | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | string(date-time) | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »» status | string | true |  | none |
| »» taskId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | integer | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| »»» anonymous | null | false |  | none |

## Get dispatch task by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks/{task_id}`

Retrieve a task of a pipeline run (dispatch), including its status.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
| task_id | path | integer | true | Task ID |
| nodeId | query | any | false | Node id of a specific fan-out invocation (the nodeId field on the task list response). Required when the same @task ran at multiple graph nodes — omitting it then returns 409 with the candidate node ids. May be omitted for tasks with a single execution. |

### Example responses

> 200 Response

```
{
  "description": "Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. ``1``, ``2``, ``3``. use this as the ``{task_id}`` path parameter for per-task endpoints. ``none`` for internal utility nodes with no user ``@task`` backing. node_id: per-dispatch execution node id. pass as ``?nodeid=`` to per-task endpoints to address a specific invocation when the same ``@task`` function runs more than once in a single dispatch (fan-out). each invocation has a distinct ``nodeid`` even when they share the same ``taskid``. ``none`` for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node ``id`` (from ``get .../graph``) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. ``none`` when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the ``@task`` function name. status: current ``taskexecutionstatus`` value. started_at: when execution began, or ``none`` if not yet started. completed_at: when execution finished, or ``none`` if still running. error_detail: failure message when ``status == failed``. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). ``none`` only for legacy rows.",
  "properties": {
    "completedAt": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completedat"
    },
    "errorDetail": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Errordetail"
    },
    "graphNodeId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Graphnodeid"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "nodeId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Nodeid"
    },
    "resourceBundleId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Resourcebundleid"
    },
    "startedAt": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Startedat"
    },
    "status": {
      "title": "Status",
      "type": "string"
    },
    "taskId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Taskid"
    }
  },
  "required": [
    "name",
    "status"
  ],
  "title": "TaskExecutionResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | TaskExecutionResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## Get dispatch task logs by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks/{task_id}/logs`

Retrieve the live container logs of a task. After the task finishes, use the log stream endpoint.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
| task_id | path | integer | true | Task ID |
| nodeId | query | any | false | Node id of a specific fan-out invocation (the nodeId field on the task list response). Required when the same @task ran at multiple graph nodes — omitting it then returns 409 with the candidate node ids. May be omitted for tasks with a single execution. |
| tail_lines | query | any | false | Optional cap on the number of trailing log lines returned. |
| verbosity | query | string | false | 'user' (default): hide the task runner's own structured JSON log lines, showing only the task function's own output (plus any uncaught-exception traceback). 'all': return every line, unfiltered — the behavior every caller got before this parameter existed. |

### Enumerated Values

| Parameter | Value |
| --- | --- |
| verbosity | [user, all] |

### Example responses

> 200 Response

```
{
  "description": "Response schema for per-task pod logs. populated only when standalone dispatch is on — under the legacy covalent path, pipelines-api does not own the pod and the endpoint returns an empty string. attributes: logs: pod stdout+stderr as a utf-8 decoded string, subject to the ``verbosity`` query param (see ``specs/task_log_verbosity_filter.md``): by default the task runner's own structured JSON log lines are removed, leaving only the task function's own output (plus any uncaught-exception traceback, which is always kept). empty when the pod has been gc'd, hasn't started yet, or when the dispatch predates standalone mode. filtered_line_count: number of lines the verbosity filter removed. always ``0`` when ``verbosity=all`` was requested.",
  "properties": {
    "filteredLineCount": {
      "default": 0,
      "description": "Number of lines removed by the verbosity filter. always 0 when verbosity=all.",
      "minimum": 0,
      "title": "Filteredlinecount",
      "type": "integer"
    },
    "logs": {
      "title": "Logs",
      "type": "string"
    }
  },
  "required": [
    "logs"
  ],
  "title": "TaskExecutionLogsResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | TaskExecutionLogsResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## Get dispatch task log stream by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks/{task_id}/logs/{stream}`

Retrieve the stored `stdout` or `stderr` output of a task. Available after the task finishes.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
| task_id | path | integer | true | Task ID |
| stream | path | string | true | Log stream to read: stdout or stderr |
| nodeId | query | any | false | Node id of a specific fan-out invocation (the nodeId field on the task list response). Required when the same @task ran at multiple graph nodes — omitting it then returns 409 with the candidate node ids. May be omitted for tasks with a single execution. |
| verbosity | query | string | false | 'user' (default): hide the task runner's own structured JSON log lines, showing only the task function's own output (plus any uncaught-exception traceback). 'all': return every line, unfiltered — the behavior every caller got before this parameter existed. |

### Enumerated Values

| Parameter | Value |
| --- | --- |
| verbosity | [user, all] |

### Example responses

> 200 Response

```
{
  "description": "Inline content of a task's s3-uploaded stdout/stderr log. the task runner tees its own stdout + stderr into in-memory buffers and uploads them to ``dispatches/<did>/outputs/<node_id>/{stdout,stderr}.log`` on process exit (see action 186's ``pod_logs.logcapture``). this endpoint reads that blob itself, utf-8 decodes it, and hands the content back directly — no presigned url, no second unauthenticated request to S3 required from the caller. callers use it for post-mortem debugging after the pod has been ttl-gc'd (kubelet drops it 60 s after job terminal, so the live-pod-log endpoint stops working past that window; the S3 upload is the durable copy). see ``specs/task_durable_log_inline_content.md`` and ``specs/task_log_verbosity_filter.md``. attributes: content: utf-8 decoded log content, subject to the ``verbosity`` query param: by default the task runner's own structured JSON log lines are removed (uncaught-exception tracebacks are always kept — they're plain text on the runner side, never json). invalid byte sequences are replaced, never raised on. when ``truncated`` is ``true`` this is a head+tail excerpt of the (already-filtered) content, not the full blob. content_type: mime type of the payload. fixed to ``text/plain`` because the log blob is utf-8 encoded plain text. total_bytes: size in bytes of the full S3 object, independent of any inline truncation applied to ``content`` **and** independent of ``verbosity`` — this always reflects the raw blob size, not the filtered content's size. truncated: ``true`` iff ``content`` is a head+tail excerpt because the *filtered* content exceeded the inline response cap (``settings.task_log_inline_max_bytes``). filtered_line_count: number of lines the verbosity filter removed. always ``0`` when ``verbosity=all`` was requested.",
  "properties": {
    "content": {
      "description": "Utf-8 decoded log content (invalid byte sequences replaced, never raises). when `truncated` is true, this is a head+tail excerpt, not the full blob.",
      "title": "Content",
      "type": "string"
    },
    "contentType": {
      "default": "text/plain",
      "description": "Mime type of the log payload.",
      "title": "Contenttype",
      "type": "string"
    },
    "filteredLineCount": {
      "default": 0,
      "description": "Number of lines removed by the verbosity filter. always 0 when verbosity=all.",
      "minimum": 0,
      "title": "Filteredlinecount",
      "type": "integer"
    },
    "totalBytes": {
      "description": "Size in bytes of the full S3 object, independent of any inline truncation.",
      "minimum": 0,
      "title": "Totalbytes",
      "type": "integer"
    },
    "truncated": {
      "default": false,
      "description": "True iff `content` is a head+tail excerpt because the verbosity-filtered content exceeded the inline response cap. not directly comparable to `total_bytes`, which reflects the raw (unfiltered) blob size.",
      "title": "Truncated",
      "type": "boolean"
    }
  },
  "required": [
    "content",
    "totalBytes"
  ],
  "title": "TaskExecutionDurableLogResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | TaskExecutionDurableLogResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## Get dispatch task result by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks/{task_id}/result`

Retrieve a short-lived download URL for the result of a completed task. The result is a cloudpickle payload; load it with `cloudpickle.loads`.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
| task_id | path | integer | true | Task ID |
| nodeId | query | any | false | Node id of a specific fan-out invocation (the nodeId field on the task list response). Required when the same @task ran at multiple graph nodes — omitting it then returns 409 with the candidate node ids. May be omitted for tasks with a single execution. |

### Example responses

> 200 Response

```
{
  "description": "Presigned-url response for a completed task's cloudpickled result. handed back by ``get .../dispatches/{dispatch_id}/tasks/{task_id}/result`` once a task reaches ``completed`` state and its ``result.tobj`` blob is present in s3. the caller gets ``url`` directly from S3 to stream the payload — pipelines-api never proxies the bytes, which keeps the response independent of result size and side-steps the rce risk of cloudpickle-loading untrusted user output on the server. ``value`` / ``value_available`` / ``value_unavailable_reason`` are an additive, optional json-safe preview of the same result — populated from a small manifest the task runner writes alongside ``result.tobj`` (see ``specs/task_result_preview.md``). unlike ``result.tobj``, decoding this manifest is safe to do server-side: ``json.loads`` cannot execute arbitrary code the way ``cloudpickle.loads`` can. ``url`` / ``expires_in`` / ``content_type`` are always populated once the task is ``completed``, independent of whether a preview is available. ``value_text`` / ``value_text_truncated`` add a human-readable ``str(result)`` preview the runner emits for *every* result — even non-json-serializable or oversized ones the JSON ``value`` can't represent — so a UI always has something to display. unlike json, the text repr is truncatable, closing the ``not_json_serializable`` / ``too_large`` gaps. attributes: url: presigned ``https://`` url granting ``getobject`` on the task's ``result.tobj`` blob. time-limited by ``expires_in``; treat as one-shot. expires_in: validity window in seconds from the signing moment. default 900 (15 min). content_type: mime type the caller should expect on the downloaded body. fixed to ``application/octet-stream`` because the payload is a raw cloudpickle blob; callers decode with ``cloudpickle.loads(response.content)``. value: json-decoded preview of the task's return value, when available. ``none`` both when no preview exists and when the task legitimately returned ``none`` — use ``value_available`` to disambiguate. value_available: ``true`` iff ``value`` reflects an actual preview. value_unavailable_reason: set iff ``value_available`` is ``false``, explaining why no preview could be produced. one of ``\"not_json_serializable\"`` (the return value isn't json-safe), ``\"too_large\"`` (exceeded the preview size cap), or ``\"unavailable\"`` (no preview was ever recorded — a pre-feature task, or the preview upload itself failed). ``none`` when ``value_available`` is ``true``. value_text: human-readable ``str(result)`` preview the runner embeds in *every* manifest branch — present even when the JSON ``value`` is unavailable, so a UI always has something to render for non-json-serializable or oversized results. possibly truncated (see ``value_text_truncated``); the full object is always available via ``url``. ``none`` only for tasks whose manifest predates this field. value_text_truncated: ``true`` iff ``value_text`` was cut to the configured character cap — download the full object via ``url`` for the complete value.",
  "properties": {
    "contentType": {
      "default": "application/octet-stream",
      "description": "Mime type of the payload the url serves.",
      "title": "Contenttype",
      "type": "string"
    },
    "expiresIn": {
      "description": "Url validity window in seconds from the moment it was signed.",
      "exclusiveMinimum": 0,
      "title": "Expiresin",
      "type": "integer"
    },
    "url": {
      "description": "Presigned S3 url for the result blob.",
      "title": "Url",
      "type": "string"
    },
    "value": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ],
      "description": "Json-decoded preview of the task's return value, when available.",
      "title": "Value"
    },
    "valueAvailable": {
      "default": false,
      "description": "True iff `value` reflects an actual preview. needed because a task can legitimately return none/null, which is otherwise indistinguishable from no preview being available.",
      "title": "Valueavailable",
      "type": "boolean"
    },
    "valueText": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Human-readable `str()` preview of the task's return value, present even when the JSON `value` is unavailable (non-json-serializable or oversized results). possibly truncated (see `value_text_truncated`). the full object is always available via `url`. `none` only for pre-feature tasks whose manifest predates this field, or when no preview was recorded at all.",
      "title": "Valuetext"
    },
    "valueTextTruncated": {
      "default": false,
      "description": "True iff `value_text` was cut to the configured character cap. when true, download the full object via `url` to see the complete value.",
      "title": "Valuetexttruncated",
      "type": "boolean"
    },
    "valueUnavailableReason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Set iff `value_available` is false, explaining why no preview could be produced. one of: `not_json_serializable`, `too_large`, or `unavailable`. `none` when `value_available` is true.",
      "title": "Valueunavailablereason"
    }
  },
  "required": [
    "url",
    "expiresIn"
  ],
  "title": "TaskExecutionResultResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | TaskExecutionResultResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## List pipeline version dispatches by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches`

List the runs (dispatches) of a locked pipeline version.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| offset | query | integer | false | none |
| limit | query | integer | false | none |

### Example responses

> 200 Response

```
{
  "properties": {
    "count": {
      "readOnly": true,
      "title": "Count",
      "type": "integer"
    },
    "data": {
      "items": {
        "description": "Response schema for a pipeline dispatch.",
        "properties": {
          "covalentDispatchId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Covalentdispatchid"
          },
          "createdAt": {
            "format": "date-time",
            "title": "Createdat",
            "type": "string"
          },
          "errorDetail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Errordetail"
          },
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "Id",
            "type": "string"
          },
          "imageId": {
            "anyOf": [
              {
                "maxLength": 24,
                "minLength": 24,
                "pattern": "^[0-9a-fA-F]{24}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Imageid"
          },
          "imageVersion": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Imageversion"
          },
          "inputId": {
            "maxLength": 24,
            "minLength": 24,
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "Inputid",
            "type": "string"
          },
          "pipelineId": {
            "maxLength": 24,
            "minLength": 24,
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "Pipelineid",
            "type": "string"
          },
          "status": {
            "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
            "enum": [
              "PENDING",
              "PREPARING",
              "RUNNING",
              "COMPLETED",
              "FAILED",
              "CANCELLED",
              "ERRORED"
            ],
            "title": "PipelineDispatchStatus",
            "type": "string"
          },
          "triggeredBy": {
            "description": "How a pipeline dispatch was triggered.",
            "enum": [
              "api",
              "schedule"
            ],
            "title": "PipelineDispatchTrigger",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "title": "Updatedat",
            "type": "string"
          },
          "versionId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Versionid"
          }
        },
        "required": [
          "id",
          "pipelineId",
          "inputId",
          "triggeredBy",
          "status",
          "createdAt",
          "updatedAt"
        ],
        "title": "PipelineDispatchResponse",
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    },
    "next": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next"
    },
    "previous": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Previous"
    },
    "totalCount": {
      "title": "Totalcount",
      "type": "integer"
    }
  },
  "required": [
    "data",
    "totalCount",
    "count"
  ],
  "title": "DataPage[PipelineDispatchResponse]",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | DataPage_PipelineDispatchResponse_ |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## Run pipeline version by pipeline_ ID

Operation path: `POST /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches`

Run a locked pipeline version with an input payload. Returns the new dispatch.

### Body parameter

```
{
  "description": "Request body for creating a pipeline dispatch. under the prep-pod flow (see ``specs/dispatch_prep_pod_implementation_plan.md`` c.1), ``image_id`` is required — the prep pod runs the user's chosen image and can't be launched without one. pipeline creation still leaves ``image_id`` optional (drafts have no image); it's resolved at dispatch time here.",
  "properties": {
    "imageId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Imageid",
      "type": "string"
    },
    "inputId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Inputid",
      "type": "string"
    }
  },
  "required": [
    "inputId",
    "imageId"
  ],
  "title": "PipelineDispatchCreateRequest",
  "type": "object"
}
```

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| body | body | PipelineDispatchCreateRequest | true | none |

### Example responses

> 202 Response

```
{
  "description": "Response schema for a pipeline dispatch.",
  "properties": {
    "covalentDispatchId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Covalentdispatchid"
    },
    "createdAt": {
      "format": "date-time",
      "title": "Createdat",
      "type": "string"
    },
    "errorDetail": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Errordetail"
    },
    "id": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Id",
      "type": "string"
    },
    "imageId": {
      "anyOf": [
        {
          "maxLength": 24,
          "minLength": 24,
          "pattern": "^[0-9a-fA-F]{24}$",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageid"
    },
    "imageVersion": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageversion"
    },
    "inputId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Inputid",
      "type": "string"
    },
    "pipelineId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Pipelineid",
      "type": "string"
    },
    "status": {
      "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
      "enum": [
        "PENDING",
        "PREPARING",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "CANCELLED",
        "ERRORED"
      ],
      "title": "PipelineDispatchStatus",
      "type": "string"
    },
    "triggeredBy": {
      "description": "How a pipeline dispatch was triggered.",
      "enum": [
        "api",
        "schedule"
      ],
      "title": "PipelineDispatchTrigger",
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "title": "Updatedat",
      "type": "string"
    },
    "versionId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Versionid"
    }
  },
  "required": [
    "id",
    "pipelineId",
    "inputId",
    "triggeredBy",
    "status",
    "createdAt",
    "updatedAt"
  ],
  "title": "PipelineDispatchResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 202 | Accepted | Successful Response | PipelineDispatchResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## cancel pipeline version dispatch by pipeline_ ID

Operation path: `DELETE /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches/{dispatch_id}`

Cancel a run (dispatch) of a locked pipeline version.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| dispatch_id | path | string | true | Dispatch ID |

### Example responses

> 422 Response

```
{
  "properties": {
    "detail": {
      "items": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      },
      "title": "Detail",
      "type": "array"
    }
  },
  "title": "HTTPValidationError",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 204 | No Content | Successful Response | None |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## Get pipeline version dispatch by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches/{dispatch_id}`

Retrieve a run (dispatch) of a locked pipeline version.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| dispatch_id | path | string | true | Dispatch ID |

### Example responses

> 200 Response

```
{
  "description": "Response schema for a pipeline dispatch.",
  "properties": {
    "covalentDispatchId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Covalentdispatchid"
    },
    "createdAt": {
      "format": "date-time",
      "title": "Createdat",
      "type": "string"
    },
    "errorDetail": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Errordetail"
    },
    "id": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Id",
      "type": "string"
    },
    "imageId": {
      "anyOf": [
        {
          "maxLength": 24,
          "minLength": 24,
          "pattern": "^[0-9a-fA-F]{24}$",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageid"
    },
    "imageVersion": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageversion"
    },
    "inputId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Inputid",
      "type": "string"
    },
    "pipelineId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Pipelineid",
      "type": "string"
    },
    "status": {
      "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
      "enum": [
        "PENDING",
        "PREPARING",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "CANCELLED",
        "ERRORED"
      ],
      "title": "PipelineDispatchStatus",
      "type": "string"
    },
    "triggeredBy": {
      "description": "How a pipeline dispatch was triggered.",
      "enum": [
        "api",
        "schedule"
      ],
      "title": "PipelineDispatchTrigger",
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "title": "Updatedat",
      "type": "string"
    },
    "versionId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Versionid"
    }
  },
  "required": [
    "id",
    "pipelineId",
    "inputId",
    "triggeredBy",
    "status",
    "createdAt",
    "updatedAt"
  ],
  "title": "PipelineDispatchResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | PipelineDispatchResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

## Get pipeline version dispatch status by pipeline_ ID

Operation path: `GET /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches/{dispatch_id}/status`

Retrieve the current status of a locked pipeline version run. Use this endpoint to poll for completion.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| dispatch_id | path | string | true | Dispatch ID |

### Example responses

> 200 Response

```
{
  "description": "Lightweight status polling response.",
  "properties": {
    "covalentDispatchId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Covalentdispatchid"
    },
    "id": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Id",
      "type": "string"
    },
    "status": {
      "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
      "enum": [
        "PENDING",
        "PREPARING",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "CANCELLED",
        "ERRORED"
      ],
      "title": "PipelineDispatchStatus",
      "type": "string"
    }
  },
  "required": [
    "id",
    "status"
  ],
  "title": "PipelineDispatchStatusResponse",
  "type": "object"
}
```

### Responses

| Status | Meaning | Description | Schema |
| --- | --- | --- | --- |
| 200 | OK | Successful Response | PipelineDispatchStatusResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |

# Schemas

## DataPage_PipelineDispatchResponse_

```
{
  "properties": {
    "count": {
      "readOnly": true,
      "title": "Count",
      "type": "integer"
    },
    "data": {
      "items": {
        "description": "Response schema for a pipeline dispatch.",
        "properties": {
          "covalentDispatchId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Covalentdispatchid"
          },
          "createdAt": {
            "format": "date-time",
            "title": "Createdat",
            "type": "string"
          },
          "errorDetail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Errordetail"
          },
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "Id",
            "type": "string"
          },
          "imageId": {
            "anyOf": [
              {
                "maxLength": 24,
                "minLength": 24,
                "pattern": "^[0-9a-fA-F]{24}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Imageid"
          },
          "imageVersion": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Imageversion"
          },
          "inputId": {
            "maxLength": 24,
            "minLength": 24,
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "Inputid",
            "type": "string"
          },
          "pipelineId": {
            "maxLength": 24,
            "minLength": 24,
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "Pipelineid",
            "type": "string"
          },
          "status": {
            "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
            "enum": [
              "PENDING",
              "PREPARING",
              "RUNNING",
              "COMPLETED",
              "FAILED",
              "CANCELLED",
              "ERRORED"
            ],
            "title": "PipelineDispatchStatus",
            "type": "string"
          },
          "triggeredBy": {
            "description": "How a pipeline dispatch was triggered.",
            "enum": [
              "api",
              "schedule"
            ],
            "title": "PipelineDispatchTrigger",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "title": "Updatedat",
            "type": "string"
          },
          "versionId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Versionid"
          }
        },
        "required": [
          "id",
          "pipelineId",
          "inputId",
          "triggeredBy",
          "status",
          "createdAt",
          "updatedAt"
        ],
        "title": "PipelineDispatchResponse",
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    },
    "next": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next"
    },
    "previous": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Previous"
    },
    "totalCount": {
      "title": "Totalcount",
      "type": "integer"
    }
  },
  "required": [
    "data",
    "totalCount",
    "count"
  ],
  "title": "DataPage[PipelineDispatchResponse]",
  "type": "object"
}
```

DataPage[PipelineDispatchResponse]

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| count | integer | true |  | none |
| data | [PipelineDispatchResponse] | true |  | [Response schema for a pipeline dispatch.] |
| next | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| previous | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| totalCount | integer | true |  | none |

## HTTPValidationError

```
{
  "properties": {
    "detail": {
      "items": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      },
      "title": "Detail",
      "type": "array"
    }
  },
  "title": "HTTPValidationError",
  "type": "object"
}
```

HTTPValidationError

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| detail | [ValidationError] | false |  | none |

## PipelineDispatchCreateRequest

```
{
  "description": "Request body for creating a pipeline dispatch. under the prep-pod flow (see ``specs/dispatch_prep_pod_implementation_plan.md`` c.1), ``image_id`` is required — the prep pod runs the user's chosen image and can't be launched without one. pipeline creation still leaves ``image_id`` optional (drafts have no image); it's resolved at dispatch time here.",
  "properties": {
    "imageId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Imageid",
      "type": "string"
    },
    "inputId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Inputid",
      "type": "string"
    }
  },
  "required": [
    "inputId",
    "imageId"
  ],
  "title": "PipelineDispatchCreateRequest",
  "type": "object"
}
```

PipelineDispatchCreateRequest

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| imageId | string | true | maxLength: 24minLength: 24minLength: 24 | none |
| inputId | string | true | maxLength: 24minLength: 24minLength: 24 | none |

## PipelineDispatchResponse

```
{
  "description": "Response schema for a pipeline dispatch.",
  "properties": {
    "covalentDispatchId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Covalentdispatchid"
    },
    "createdAt": {
      "format": "date-time",
      "title": "Createdat",
      "type": "string"
    },
    "errorDetail": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Errordetail"
    },
    "id": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Id",
      "type": "string"
    },
    "imageId": {
      "anyOf": [
        {
          "maxLength": 24,
          "minLength": 24,
          "pattern": "^[0-9a-fA-F]{24}$",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageid"
    },
    "imageVersion": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Imageversion"
    },
    "inputId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Inputid",
      "type": "string"
    },
    "pipelineId": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Pipelineid",
      "type": "string"
    },
    "status": {
      "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
      "enum": [
        "PENDING",
        "PREPARING",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "CANCELLED",
        "ERRORED"
      ],
      "title": "PipelineDispatchStatus",
      "type": "string"
    },
    "triggeredBy": {
      "description": "How a pipeline dispatch was triggered.",
      "enum": [
        "api",
        "schedule"
      ],
      "title": "PipelineDispatchTrigger",
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "title": "Updatedat",
      "type": "string"
    },
    "versionId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Versionid"
    }
  },
  "required": [
    "id",
    "pipelineId",
    "inputId",
    "triggeredBy",
    "status",
    "createdAt",
    "updatedAt"
  ],
  "title": "PipelineDispatchResponse",
  "type": "object"
}
```

PipelineDispatchResponse

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| covalentDispatchId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| createdAt | string(date-time) | true |  | none |
| errorDetail | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| id | string | true | maxLength: 24minLength: 24minLength: 24 | none |
| imageId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false | maxLength: 24minLength: 24minLength: 24 | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| imageVersion | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | integer | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| inputId | string | true | maxLength: 24minLength: 24minLength: 24 | none |
| pipelineId | string | true | maxLength: 24minLength: 24minLength: 24 | none |
| status | PipelineDispatchStatus | true |  | Lifecycle status of a pipeline dispatch. preparing is the transient state a dispatch enters at creation while the prep-pod (see specs/dispatch_prep_pod_implementation_plan.md) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to running and per-task jobs start submitting; on prep failure it flips to failed without any task rows ever having been created. |
| triggeredBy | PipelineDispatchTrigger | true |  | How a pipeline dispatch was triggered. |
| updatedAt | string(date-time) | true |  | none |
| versionId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | integer | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

## PipelineDispatchStatus

```
{
  "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
  "enum": [
    "PENDING",
    "PREPARING",
    "RUNNING",
    "COMPLETED",
    "FAILED",
    "CANCELLED",
    "ERRORED"
  ],
  "title": "PipelineDispatchStatus",
  "type": "string"
}
```

PipelineDispatchStatus

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| PipelineDispatchStatus | string | false |  | Lifecycle status of a pipeline dispatch. preparing is the transient state a dispatch enters at creation while the prep-pod (see specs/dispatch_prep_pod_implementation_plan.md) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to running and per-task jobs start submitting; on prep failure it flips to failed without any task rows ever having been created. |

### Enumerated Values

| Property | Value |
| --- | --- |
| PipelineDispatchStatus | [PENDING, PREPARING, RUNNING, COMPLETED, FAILED, CANCELLED, ERRORED] |

## PipelineDispatchStatusResponse

```
{
  "description": "Lightweight status polling response.",
  "properties": {
    "covalentDispatchId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Covalentdispatchid"
    },
    "id": {
      "maxLength": 24,
      "minLength": 24,
      "pattern": "^[0-9a-fA-F]{24}$",
      "title": "Id",
      "type": "string"
    },
    "status": {
      "description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
      "enum": [
        "PENDING",
        "PREPARING",
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "CANCELLED",
        "ERRORED"
      ],
      "title": "PipelineDispatchStatus",
      "type": "string"
    }
  },
  "required": [
    "id",
    "status"
  ],
  "title": "PipelineDispatchStatusResponse",
  "type": "object"
}
```

PipelineDispatchStatusResponse

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| covalentDispatchId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| id | string | true | maxLength: 24minLength: 24minLength: 24 | none |
| status | PipelineDispatchStatus | true |  | Lifecycle status of a pipeline dispatch. preparing is the transient state a dispatch enters at creation while the prep-pod (see specs/dispatch_prep_pod_implementation_plan.md) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to running and per-task jobs start submitting; on prep failure it flips to failed without any task rows ever having been created. |

## PipelineDispatchTrigger

```
{
  "description": "How a pipeline dispatch was triggered.",
  "enum": [
    "api",
    "schedule"
  ],
  "title": "PipelineDispatchTrigger",
  "type": "string"
}
```

PipelineDispatchTrigger

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| PipelineDispatchTrigger | string | false |  | How a pipeline dispatch was triggered. |

### Enumerated Values

| Property | Value |
| --- | --- |
| PipelineDispatchTrigger | [api, schedule] |

## TaskExecutionDurableLogResponse

```
{
  "description": "Inline content of a task's s3-uploaded stdout/stderr log. the task runner tees its own stdout + stderr into in-memory buffers and uploads them to ``dispatches/<did>/outputs/<node_id>/{stdout,stderr}.log`` on process exit (see action 186's ``pod_logs.logcapture``). this endpoint reads that blob itself, utf-8 decodes it, and hands the content back directly — no presigned url, no second unauthenticated request to S3 required from the caller. callers use it for post-mortem debugging after the pod has been ttl-gc'd (kubelet drops it 60 s after job terminal, so the live-pod-log endpoint stops working past that window; the S3 upload is the durable copy). see ``specs/task_durable_log_inline_content.md`` and ``specs/task_log_verbosity_filter.md``. attributes: content: utf-8 decoded log content, subject to the ``verbosity`` query param: by default the task runner's own structured JSON log lines are removed (uncaught-exception tracebacks are always kept — they're plain text on the runner side, never json). invalid byte sequences are replaced, never raised on. when ``truncated`` is ``true`` this is a head+tail excerpt of the (already-filtered) content, not the full blob. content_type: mime type of the payload. fixed to ``text/plain`` because the log blob is utf-8 encoded plain text. total_bytes: size in bytes of the full S3 object, independent of any inline truncation applied to ``content`` **and** independent of ``verbosity`` — this always reflects the raw blob size, not the filtered content's size. truncated: ``true`` iff ``content`` is a head+tail excerpt because the *filtered* content exceeded the inline response cap (``settings.task_log_inline_max_bytes``). filtered_line_count: number of lines the verbosity filter removed. always ``0`` when ``verbosity=all`` was requested.",
  "properties": {
    "content": {
      "description": "Utf-8 decoded log content (invalid byte sequences replaced, never raises). when `truncated` is true, this is a head+tail excerpt, not the full blob.",
      "title": "Content",
      "type": "string"
    },
    "contentType": {
      "default": "text/plain",
      "description": "Mime type of the log payload.",
      "title": "Contenttype",
      "type": "string"
    },
    "filteredLineCount": {
      "default": 0,
      "description": "Number of lines removed by the verbosity filter. always 0 when verbosity=all.",
      "minimum": 0,
      "title": "Filteredlinecount",
      "type": "integer"
    },
    "totalBytes": {
      "description": "Size in bytes of the full S3 object, independent of any inline truncation.",
      "minimum": 0,
      "title": "Totalbytes",
      "type": "integer"
    },
    "truncated": {
      "default": false,
      "description": "True iff `content` is a head+tail excerpt because the verbosity-filtered content exceeded the inline response cap. not directly comparable to `total_bytes`, which reflects the raw (unfiltered) blob size.",
      "title": "Truncated",
      "type": "boolean"
    }
  },
  "required": [
    "content",
    "totalBytes"
  ],
  "title": "TaskExecutionDurableLogResponse",
  "type": "object"
}
```

TaskExecutionDurableLogResponse

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| content | string | true |  | Utf-8 decoded log content (invalid byte sequences replaced, never raises). when truncated is true, this is a head+tail excerpt, not the full blob. |
| contentType | string | false |  | Mime type of the log payload. |
| filteredLineCount | integer | false | minimum: 0 | Number of lines removed by the verbosity filter. always 0 when verbosity=all. |
| totalBytes | integer | true | minimum: 0 | Size in bytes of the full S3 object, independent of any inline truncation. |
| truncated | boolean | false |  | True iff content is a head+tail excerpt because the verbosity-filtered content exceeded the inline response cap. not directly comparable to total_bytes, which reflects the raw (unfiltered) blob size. |

## TaskExecutionLogsResponse

```
{
  "description": "Response schema for per-task pod logs. populated only when standalone dispatch is on — under the legacy covalent path, pipelines-api does not own the pod and the endpoint returns an empty string. attributes: logs: pod stdout+stderr as a utf-8 decoded string, subject to the ``verbosity`` query param (see ``specs/task_log_verbosity_filter.md``): by default the task runner's own structured JSON log lines are removed, leaving only the task function's own output (plus any uncaught-exception traceback, which is always kept). empty when the pod has been gc'd, hasn't started yet, or when the dispatch predates standalone mode. filtered_line_count: number of lines the verbosity filter removed. always ``0`` when ``verbosity=all`` was requested.",
  "properties": {
    "filteredLineCount": {
      "default": 0,
      "description": "Number of lines removed by the verbosity filter. always 0 when verbosity=all.",
      "minimum": 0,
      "title": "Filteredlinecount",
      "type": "integer"
    },
    "logs": {
      "title": "Logs",
      "type": "string"
    }
  },
  "required": [
    "logs"
  ],
  "title": "TaskExecutionLogsResponse",
  "type": "object"
}
```

TaskExecutionLogsResponse

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| filteredLineCount | integer | false | minimum: 0 | Number of lines removed by the verbosity filter. always 0 when verbosity=all. |
| logs | string | true |  | none |

## TaskExecutionResponse

```
{
  "description": "Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. ``1``, ``2``, ``3``. use this as the ``{task_id}`` path parameter for per-task endpoints. ``none`` for internal utility nodes with no user ``@task`` backing. node_id: per-dispatch execution node id. pass as ``?nodeid=`` to per-task endpoints to address a specific invocation when the same ``@task`` function runs more than once in a single dispatch (fan-out). each invocation has a distinct ``nodeid`` even when they share the same ``taskid``. ``none`` for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node ``id`` (from ``get .../graph``) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. ``none`` when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the ``@task`` function name. status: current ``taskexecutionstatus`` value. started_at: when execution began, or ``none`` if not yet started. completed_at: when execution finished, or ``none`` if still running. error_detail: failure message when ``status == failed``. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). ``none`` only for legacy rows.",
  "properties": {
    "completedAt": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completedat"
    },
    "errorDetail": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Errordetail"
    },
    "graphNodeId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Graphnodeid"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "nodeId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Nodeid"
    },
    "resourceBundleId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Resourcebundleid"
    },
    "startedAt": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Startedat"
    },
    "status": {
      "title": "Status",
      "type": "string"
    },
    "taskId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Taskid"
    }
  },
  "required": [
    "name",
    "status"
  ],
  "title": "TaskExecutionResponse",
  "type": "object"
}
```

TaskExecutionResponse

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| completedAt | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string(date-time) | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| errorDetail | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| graphNodeId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | integer | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| name | string | true |  | none |
| nodeId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | integer | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| resourceBundleId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| startedAt | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string(date-time) | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| status | string | true |  | none |
| taskId | any | false |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | integer | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

## TaskExecutionResultResponse

```
{
  "description": "Presigned-url response for a completed task's cloudpickled result. handed back by ``get .../dispatches/{dispatch_id}/tasks/{task_id}/result`` once a task reaches ``completed`` state and its ``result.tobj`` blob is present in s3. the caller gets ``url`` directly from S3 to stream the payload — pipelines-api never proxies the bytes, which keeps the response independent of result size and side-steps the rce risk of cloudpickle-loading untrusted user output on the server. ``value`` / ``value_available`` / ``value_unavailable_reason`` are an additive, optional json-safe preview of the same result — populated from a small manifest the task runner writes alongside ``result.tobj`` (see ``specs/task_result_preview.md``). unlike ``result.tobj``, decoding this manifest is safe to do server-side: ``json.loads`` cannot execute arbitrary code the way ``cloudpickle.loads`` can. ``url`` / ``expires_in`` / ``content_type`` are always populated once the task is ``completed``, independent of whether a preview is available. ``value_text`` / ``value_text_truncated`` add a human-readable ``str(result)`` preview the runner emits for *every* result — even non-json-serializable or oversized ones the JSON ``value`` can't represent — so a UI always has something to display. unlike json, the text repr is truncatable, closing the ``not_json_serializable`` / ``too_large`` gaps. attributes: url: presigned ``https://`` url granting ``getobject`` on the task's ``result.tobj`` blob. time-limited by ``expires_in``; treat as one-shot. expires_in: validity window in seconds from the signing moment. default 900 (15 min). content_type: mime type the caller should expect on the downloaded body. fixed to ``application/octet-stream`` because the payload is a raw cloudpickle blob; callers decode with ``cloudpickle.loads(response.content)``. value: json-decoded preview of the task's return value, when available. ``none`` both when no preview exists and when the task legitimately returned ``none`` — use ``value_available`` to disambiguate. value_available: ``true`` iff ``value`` reflects an actual preview. value_unavailable_reason: set iff ``value_available`` is ``false``, explaining why no preview could be produced. one of ``\"not_json_serializable\"`` (the return value isn't json-safe), ``\"too_large\"`` (exceeded the preview size cap), or ``\"unavailable\"`` (no preview was ever recorded — a pre-feature task, or the preview upload itself failed). ``none`` when ``value_available`` is ``true``. value_text: human-readable ``str(result)`` preview the runner embeds in *every* manifest branch — present even when the JSON ``value`` is unavailable, so a UI always has something to render for non-json-serializable or oversized results. possibly truncated (see ``value_text_truncated``); the full object is always available via ``url``. ``none`` only for tasks whose manifest predates this field. value_text_truncated: ``true`` iff ``value_text`` was cut to the configured character cap — download the full object via ``url`` for the complete value.",
  "properties": {
    "contentType": {
      "default": "application/octet-stream",
      "description": "Mime type of the payload the url serves.",
      "title": "Contenttype",
      "type": "string"
    },
    "expiresIn": {
      "description": "Url validity window in seconds from the moment it was signed.",
      "exclusiveMinimum": 0,
      "title": "Expiresin",
      "type": "integer"
    },
    "url": {
      "description": "Presigned S3 url for the result blob.",
      "title": "Url",
      "type": "string"
    },
    "value": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ],
      "description": "Json-decoded preview of the task's return value, when available.",
      "title": "Value"
    },
    "valueAvailable": {
      "default": false,
      "description": "True iff `value` reflects an actual preview. needed because a task can legitimately return none/null, which is otherwise indistinguishable from no preview being available.",
      "title": "Valueavailable",
      "type": "boolean"
    },
    "valueText": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Human-readable `str()` preview of the task's return value, present even when the JSON `value` is unavailable (non-json-serializable or oversized results). possibly truncated (see `value_text_truncated`). the full object is always available via `url`. `none` only for pre-feature tasks whose manifest predates this field, or when no preview was recorded at all.",
      "title": "Valuetext"
    },
    "valueTextTruncated": {
      "default": false,
      "description": "True iff `value_text` was cut to the configured character cap. when true, download the full object via `url` to see the complete value.",
      "title": "Valuetexttruncated",
      "type": "boolean"
    },
    "valueUnavailableReason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Set iff `value_available` is false, explaining why no preview could be produced. one of: `not_json_serializable`, `too_large`, or `unavailable`. `none` when `value_available` is true.",
      "title": "Valueunavailablereason"
    }
  },
  "required": [
    "url",
    "expiresIn"
  ],
  "title": "TaskExecutionResultResponse",
  "type": "object"
}
```

TaskExecutionResultResponse

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| contentType | string | false |  | Mime type of the payload the url serves. |
| expiresIn | integer | true |  | Url validity window in seconds from the moment it was signed. |
| url | string | true |  | Presigned S3 url for the result blob. |
| value | any | false |  | Json-decoded preview of the task's return value, when available. |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | any | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| valueAvailable | boolean | false |  | True iff value reflects an actual preview. needed because a task can legitimately return none/null, which is otherwise indistinguishable from no preview being available. |
| valueText | any | false |  | Human-readable str() preview of the task's return value, present even when the JSON value is unavailable (non-json-serializable or oversized results). possibly truncated (see value_text_truncated). the full object is always available via url. none only for pre-feature tasks whose manifest predates this field, or when no preview was recorded at all. |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| valueTextTruncated | boolean | false |  | True iff value_text was cut to the configured character cap. when true, download the full object via url to see the complete value. |
| valueUnavailableReason | any | false |  | Set iff value_available is false, explaining why no preview could be produced. one of: not_json_serializable, too_large, or unavailable. none when value_available is true. |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | null | false |  | none |

## ValidationError

```
{
  "properties": {
    "ctx": {
      "title": "Context",
      "type": "object"
    },
    "input": {
      "title": "Input"
    },
    "loc": {
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "integer"
          }
        ]
      },
      "title": "Location",
      "type": "array"
    },
    "msg": {
      "title": "Message",
      "type": "string"
    },
    "type": {
      "title": "Error Type",
      "type": "string"
    }
  },
  "required": [
    "loc",
    "msg",
    "type"
  ],
  "title": "ValidationError",
  "type": "object"
}
```

ValidationError

### Properties

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| ctx | object | false |  | none |
| input | any | false |  | none |
| loc | [anyOf] | true |  | none |

anyOf

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | string | false |  | none |

or

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| » anonymous | integer | false |  | none |

continued

| Name | Type | Required | Restrictions | Description |
| --- | --- | --- | --- | --- |
| msg | string | true |  | none |
| type | string | true |  | none |
