# List Asset workflow actions

> List retained Workflow actions for an Asset, newest first. Direct output requests are excluded.

```json
{
  "path": "/assets/{assetId}/workflow/actions",
  "method": "get",
  "schema": {
    "description": "List retained Workflow actions for an Asset, newest first. Direct output requests are excluded.",
    "operationId": "getAssetWorkflowActionList",
    "parameters": [
      {
        "description": "ID of the Asset.",
        "in": "path",
        "name": "assetId",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      {
        "description": "Limit specifies the maximum number of results to return.\nAccepts 1 to 100. Defaults to 100.",
        "in": "query",
        "name": "limit",
        "required": false,
        "schema": {
          "default": 100,
          "maximum": 100,
          "minimum": 1,
          "type": "integer"
        }
      },
      {
        "description": "Offset specifies the number of matching results to skip.\nMust be at least 0. Defaults to 0.",
        "in": "query",
        "name": "offset",
        "required": false,
        "schema": {
          "default": 0,
          "minimum": 0,
          "type": "integer"
        }
      },
      {
        "description": "LatestPerAction specifies whether to return only the latest execution of each rule and action on the Asset. Defaults to false. Pagination and total count apply after this selection.",
        "in": "query",
        "name": "latest_per_action",
        "required": false,
        "schema": {
          "default": false,
          "type": "boolean"
        }
      },
      {
        "description": "Revision specifies the Workflow revision to filter by. Omit it to include all revisions.",
        "in": "query",
        "name": "revision",
        "required": false,
        "schema": {
          "minimum": 1,
          "type": "integer"
        }
      },
      {
        "description": "Status specifies the action status to filter by. Omit it to include all statuses.",
        "in": "query",
        "name": "status",
        "required": false,
        "schema": {
          "enum": [
            "pending",
            "running",
            "waiting",
            "completed",
            "failed",
            "skipped",
            "cancelled"
          ],
          "type": "string"
        }
      },
      {
        "description": "Created at or after this Unix timestamp in seconds.",
        "in": "query",
        "name": "created.gte",
        "required": false,
        "schema": {
          "type": "integer"
        }
      },
      {
        "description": "Created at or before this Unix timestamp in seconds.",
        "in": "query",
        "name": "created.lte",
        "required": false,
        "schema": {
          "type": "integer"
        }
      },
      {
        "description": "Type specifies the action type to filter by. Omit it to include all action types.",
        "in": "query",
        "name": "type",
        "required": false,
        "schema": {
          "enum": [
            "create_static_rendition",
            "create_caption",
            "create_transcript",
            "translate_caption"
          ],
          "type": "string"
        }
      }
    ],
    "responses": {
      "200": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/AssetActionRunListResponse",
              "examples": [
                {
                  "data": [
                    {
                      "action_id": "caption",
                      "asset_id": "ast_example",
                      "completed_at": null,
                      "created_at": "2026-10-02T10:00:00Z",
                      "id": "acr_example",
                      "input": {},
                      "reason": "output_ready",
                      "rule_id": "asset_ready",
                      "status": "waiting",
                      "type": "create_caption",
                      "updated_at": "2026-10-02T10:00:00Z",
                      "workflow_run_id": "wfr_example"
                    }
                  ],
                  "limit": 100,
                  "offset": 0,
                  "status": "success",
                  "total": 1
                }
              ]
            }
          }
        },
        "description": "List Asset workflow actions"
      },
      "400": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorValidation"
            }
          }
        },
        "description": "Validation error"
      },
      "401": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorAuthentication"
            }
          }
        },
        "description": "Authentication error"
      },
      "403": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorForbidden"
            }
          }
        },
        "description": "Forbidden error"
      },
      "404": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorNotFound"
            }
          }
        },
        "description": "NotFound error"
      },
      "409": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorConflict"
            }
          }
        },
        "description": "Conflict error"
      },
      "429": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorTooManyRequests"
            }
          }
        },
        "description": "TooManyRequests error"
      },
      "503": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorServiceUnavailable"
            }
          }
        },
        "description": "ServiceUnavailable error"
      }
    },
    "security": [
      {
        "ProjectAccessToken": []
      }
    ],
    "summary": "List Asset workflow actions",
    "tags": [
      "Assets"
    ],
    "x-codeSamples": [
      {
        "lang": "typescript",
        "source": "import Chunkify from '@chunkify/chunkify';\n\nconst client = new Chunkify({\n  projectAccessToken: 'My Project Access Token',\n});\n\nconst result = await client.assets.workflow.actions.list('ast_example', {\n  latest_per_action: true,\n});\n\nconsole.log(result);"
      },
      {
        "lang": "python",
        "source": "from chunkify import Chunkify\n\nclient = Chunkify(\n    project_access_token=\"My Project Access Token\",\n)\n\nresult = client.assets.workflow.actions.list(\n    \"ast_example\",\n    latest_per_action=True,\n)\n\nprint(result)"
      },
      {
        "lang": "php",
        "source": "\u003c?php\n\nuse Chunkify\\Client;\n\n$client = new Client(\n    projectAccessToken: 'My Project Access Token',\n);\n\n$result = $client-\u003eassets-\u003eworkflow-\u003eactions-\u003elist(\n    'ast_example',\n    latestPerAction: true,\n);\n\nvar_dump($result);"
      },
      {
        "lang": "golang",
        "source": "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/chunkifydev/chunkify-go\"\n\t\"github.com/chunkifydev/chunkify-go/option\"\n)\n\nfunc main() {\n\tclient := chunkify.NewClient(\n\t\toption.WithProjectAccessToken(\"My Project Access Token\"),\n\t)\n\n\tresult, err := client.Assets.Workflow.Actions.List(\n\t\tcontext.TODO(),\n\t\t\"ast_example\",\n\t\tchunkify.AssetWorkflowActionListParams{\n\t\t\tLatestPerAction: chunkify.Bool(true),\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", result)\n}\n"
      }
    ]
  }
}
```



```json #/components/schemas/ResponseErrorValidation
{
  "properties": {
    "error": {
      "properties": {
        "code": {
          "const": 400,
          "description": "Code is the HTTP status code",
          "examples": [
            400
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Invalid request parameters"
          ],
          "type": "string"
        },
        "type": {
          "const": "ValidationError",
          "description": "Type indicates the error category",
          "enum": [
            "ValidationError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ]
}
```



```json #/components/schemas/ResponseErrorAuthentication
{
  "description": "Error response",
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 401,
          "description": "Code is the HTTP status code",
          "examples": [
            401
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Authentication error: invalid token or subscription inactive"
          ],
          "type": "string"
        },
        "type": {
          "const": "AuthenticationError",
          "description": "Type indicates the error category",
          "enum": [
            "AuthenticationError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ],
  "type": "object"
}
```



```json #/components/schemas/ResponseErrorForbidden
{
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 403,
          "description": "Code is the HTTP status code",
          "examples": [
            403
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Unauthorized to perform this action"
          ],
          "type": "string"
        },
        "type": {
          "const": "ForbiddenError",
          "description": "Type indicates the error category",
          "enum": [
            "ForbiddenError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ]
}
```



```json #/components/schemas/ResponseErrorNotFound
{
  "description": "Error response",
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 404,
          "description": "Code is the HTTP status code",
          "examples": [
            404
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Ressource not found"
          ],
          "type": "string"
        },
        "type": {
          "const": "NotFoundError",
          "description": "Type indicates the error category",
          "enum": [
            "NotFoundError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ],
  "type": "object"
}
```



```json #/components/schemas/ResponseErrorConflict
{
  "description": "Error response",
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 409,
          "description": "Code is the HTTP status code",
          "examples": [
            409
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "source_unavailable: the original video is no longer accessible"
          ],
          "type": "string"
        },
        "type": {
          "const": "ConflictError",
          "description": "Type indicates the error category",
          "enum": [
            "ConflictError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ],
  "type": "object"
}
```



```json #/components/schemas/ResponseErrorTooManyRequests
{
  "description": "Error response",
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 429,
          "description": "Code is the HTTP status code",
          "examples": [
            429
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Rate limit exceeded"
          ],
          "type": "string"
        },
        "type": {
          "const": "TooManyRequestsError",
          "description": "Type indicates the error category",
          "enum": [
            "TooManyRequestsError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ],
  "type": "object"
}
```



```json #/components/schemas/ResponseErrorServiceUnavailable
{
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 503,
          "description": "Code is the HTTP status code",
          "examples": [
            503
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "The service is temporarily unavailable; retry the request"
          ],
          "type": "string"
        },
        "type": {
          "const": "ServiceUnavailableError",
          "description": "Type indicates the error category",
          "enum": [
            "ServiceUnavailableError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ]
}
```



```json #/components/schemas/AssetActionRunListResponse
{
  "description": "A page of Asset action runs.",
  "properties": {
    "data": {
      "description": "Asset action runs in this page.",
      "items": {
        "$ref": "#/components/schemas/AssetActionRun"
      },
      "type": "array"
    },
    "limit": {
      "description": "Maximum number of results requested per page.",
      "type": "integer"
    },
    "offset": {
      "description": "Number of matching results skipped.",
      "type": "integer"
    },
    "status": {
      "const": "success",
      "description": "Status of the API request. Always success for this response.",
      "type": "string"
    },
    "total": {
      "description": "Total number of results matching the filters before pagination.",
      "type": "integer"
    }
  },
  "required": [
    "status",
    "data",
    "total",
    "offset",
    "limit"
  ],
  "type": "object"
}
```



```json #/components/schemas/AssetActionRun
{
  "description": "One execution of an Asset action, started by a Workflow or a direct output request.",
  "properties": {
    "action_id": {
      "description": "Action key within the rule. Omitted for direct output requests.",
      "type": "string"
    },
    "asset_id": {
      "description": "ID of the Asset processed by this action.",
      "type": "string"
    },
    "completed_at": {
      "description": "When the action completed, failed, was skipped, or was cancelled. Null while work remains.",
      "format": "date-time",
      "type": [
        "string",
        "null"
      ]
    },
    "created_at": {
      "description": "When the action was accepted.",
      "format": "date-time",
      "type": "string"
    },
    "error": {
      "description": "Reason the action failed. Omitted when no failure message is available.",
      "type": "string"
    },
    "id": {
      "description": "Unique action execution ID, prefixed with acr_.",
      "type": "string"
    },
    "input": {
      "$ref": "#/components/schemas/AssetActionInput",
      "description": "Resolved parameters and input references for this execution."
    },
    "reason": {
      "description": "Machine-readable reason for waiting, skipping, failure, or cancellation. Omitted when no reason applies.",
      "type": "string"
    },
    "result": {
      "$ref": "#/components/schemas/AssetActionResult",
      "description": "Output reference and reuse flag. Included when the action completes successfully."
    },
    "rule_id": {
      "description": "Rule key from the Workflow definition. Omitted for direct output requests.",
      "type": "string"
    },
    "status": {
      "$ref": "#/components/schemas/AssetActionStatus",
      "description": "Current execution status of the action."
    },
    "type": {
      "$ref": "#/components/schemas/AssetActionType",
      "description": "Type of action performed."
    },
    "updated_at": {
      "description": "When the action was last updated.",
      "format": "date-time",
      "type": "string"
    },
    "workflow_run_id": {
      "description": "ID of the Workflow run that started the action. Null for direct output requests.",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "id",
    "asset_id",
    "workflow_run_id",
    "type",
    "status",
    "input",
    "created_at",
    "updated_at",
    "completed_at"
  ],
  "type": "object"
}
```



```json #/components/schemas/AssetActionInput
{
  "description": "Resolved action inputs. Only fields relevant to the action type are included.",
  "properties": {
    "language_code": {
      "description": "LanguageCode specifies the target language for the translated subtitle track, such as en or fr. The same code appears in the caption and HLS manifest.",
      "enum": [
        "en",
        "fr",
        "es",
        "de",
        "it",
        "pt",
        "nl",
        "ja",
        "ko",
        "zh",
        "ar",
        "hi",
        "ru",
        "tr",
        "pl",
        "sv"
      ],
      "type": "string"
    },
    "resolution": {
      "description": "Resolution specifies the H.264 MP4 output resolution. highest selects the largest supported output without upscaling.\nHobby supports up to 1080p; other plans support up to 2160p. Streaming resolution limits do not apply.",
      "enum": [
        "highest",
        "240p",
        "360p",
        "480p",
        "540p",
        "720p",
        "1080p",
        "1440p",
        "2160p"
      ],
      "type": "string"
    },
    "source_caption_id": {
      "description": "ID of the original caption to translate. Included only for translation actions.",
      "type": "string"
    },
    "thumbnails": {
      "$ref": "#/components/schemas/WorkflowThumbnailParams",
      "description": "Thumbnail settings. Included only for create_thumbnails actions."
    },
    "transcript_id": {
      "description": "TranscriptId specifies the original transcript consumed by caption publication. Omitted for actions without a transcript input.",
      "type": "string"
    }
  },
  "type": "object"
}
```



```json #/components/schemas/WorkflowThumbnailParams
{
  "additionalProperties": false,
  "description": "Generate additional thumbnails in the Asset folder and Storage. Each layout, format and size combination can be requested once. Specify exactly one of timestamps or count.",
  "oneOf": [
    {
      "required": [
        "timestamps"
      ]
    },
    {
      "required": [
        "count"
      ]
    }
  ],
  "properties": {
    "count": {
      "description": "Count specifies 1 to 100 thumbnails at the middle of equal sections of the selected range.",
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    },
    "format": {
      "$ref": "#/components/schemas/ThumbnailFormat",
      "default": "jpeg",
      "description": "Format selects JPEG or WebP. Defaults to JPEG."
    },
    "metadata": {
      "additionalProperties": {
        "type": "string"
      },
      "description": "Metadata attaches string values to this request. The serialized object may contain at most 2048 bytes.",
      "type": "object",
      "x-maxJSONBytes": 2048
    },
    "output": {
      "$ref": "#/components/schemas/ThumbnailOutput",
      "default": "images",
      "description": "Output selects images or sprites. Defaults to images."
    },
    "range": {
      "$ref": "#/components/schemas/ThumbnailRangeParams",
      "description": "Range limits sampling to part of the Source. Defaults to the whole Source duration."
    },
    "size": {
      "default": 320,
      "description": "Size specifies the maximum image or tile edge in pixels, from 64 to 1920. Defaults to 320. Odd sizes are supported. Preserves display aspect ratio without cropping or upscaling.",
      "maximum": 1920,
      "minimum": 64,
      "type": "integer"
    },
    "timestamps": {
      "description": "Timestamps specifies 1 to 100 Source-relative target times in seconds. Times outside the selected range are skipped when the action runs. If none remain, the action is skipped without a charge. Repeated targets produce separate outputs.",
      "items": {
        "description": "A target time in seconds.",
        "minimum": 0,
        "type": "number"
      },
      "maxItems": 100,
      "minItems": 1,
      "type": "array"
    }
  },
  "type": "object",
  "x-reject-null-fields": [
    "timestamps",
    "count",
    "range",
    "output",
    "format",
    "size",
    "metadata"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/ThumbnailFormat
{
  "description": "Format specifies the image encoding.",
  "enum": [
    "jpeg",
    "webp"
  ],
  "type": "string"
}
```



```json #/components/schemas/ThumbnailOutput
{
  "description": "Output specifies individual images or automatically arranged sprite sheets.",
  "enum": [
    "images",
    "sprites"
  ],
  "type": "string"
}
```



```json #/components/schemas/ThumbnailRangeParams
{
  "additionalProperties": false,
  "description": "Optional Source-relative sampling boundaries.",
  "properties": {
    "end": {
      "description": "End specifies the exclusive upper bound in seconds. Defaults to the Source duration.",
      "exclusiveMinimum": 0,
      "type": "number"
    },
    "start": {
      "description": "Start specifies the inclusive lower bound in seconds. Defaults to zero.",
      "minimum": 0,
      "type": "number"
    }
  },
  "type": "object",
  "x-reject-null-fields": [
    "start",
    "end"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/AssetActionResult
{
  "description": "Reference to the output created or reused by a completed action.",
  "properties": {
    "output_id": {
      "description": "ID of the caption, static rendition, or thumbnail request produced by the action.",
      "type": "string"
    },
    "output_type": {
      "description": "Type of output referenced by output_id. Caption generation and translation both produce caption outputs.",
      "enum": [
        "caption",
        "static_rendition",
        "thumbnail",
        "transcript"
      ],
      "type": "string"
    },
    "reused": {
      "description": "Whether the action reused an existing output instead of creating one.",
      "type": "boolean"
    }
  },
  "required": [
    "output_id",
    "output_type",
    "reused"
  ],
  "type": "object"
}
```



```json #/components/schemas/AssetActionStatus
{
  "description": "Current action status. pending means accepted; running means executing; waiting means awaiting Asset readiness or an output. completed, failed, skipped, and cancelled are terminal states.",
  "enum": [
    "pending",
    "running",
    "waiting",
    "completed",
    "failed",
    "skipped",
    "cancelled"
  ],
  "type": "string"
}
```



```json #/components/schemas/AssetActionType
{
  "description": "The action performed: create a static rendition, generate an original transcript or captions, translate a caption, or generate thumbnails.",
  "enum": [
    "create_static_rendition",
    "create_caption",
    "create_transcript",
    "translate_caption",
    "create_thumbnails"
  ],
  "type": "string"
}
```