- are visually rich annotations on flow and task runs
- are human-readable visual metadata produced in code
- come in standardized formats such as tables, progress indicators, images, Markdown, or links
- are stored on Prefect Cloud or a Prefect server instance and rendered in the Prefect UI
- make it easy to visualize outputs or side effects that your runs produce, and capture updates over time

- Progress indicators: Publish progress indicators for long-running tasks. This helps monitor the progress of your tasks and flows and ensure they are running as expected.
- Debugging: By publishing data that you care about in the UI, you can easily see when and where your results were written. If an artifact doesn’t look the way you expect, you can find out which flow run last updated it, and you can click through a link in the artifact to a storage location (such as an S3 bucket).
- Data quality checks: Publish data quality checks from in-progress tasks. This helps ensure that data quality is maintained throughout the pipeline. Artifacts make for great performance graphs, such as for long-running tasks like ML model training. You can also track artifact versions, making it easier to identify changes in your data.
- Documentation: Publish documentation and sample data to help you keep track of your work and share information. For example, add a description to signify why a piece of data is important.
Create artifacts
Creating artifacts allows you to publish data from task and flow runs or outside of a flow run context. There are five artifact types:- links
- Markdown
- progress
- images
- tables
Each artifact created within a task is displayed individually in the Prefect UI.
This means that each call to
create_link_artifact()
or create_markdown_artifact()
generates a distinct artifact.Unlike the print()
command (where you can concatenate multiple calls to include additional items in a report),
these commands must be used multiple times if necessary within a task.To create artifacts like reports or summaries using create_markdown_artifact()
, compile your message string
separately and then pass it to create_markdown_artifact()
to create the complete artifact.Create link artifacts
To create a link artifact, use thecreate_link_artifact()
function.
To create multiple versions of the same artifact and/or view them on the Artifacts page of the Prefect UI,
provide a key
argument to the create_link_artifact()
function to track an artifact’s history over time.
Without a key
, the artifact is only visible in the Artifacts tab of the associated flow run or task run.
Specify multiple artifacts with the same key for artifact lineage

- its associated flow run or task run id
- previous and future versions of the artifact (multiple artifacts can have the same key in order to show lineage)
- the data you’ve stored (in this case a Markdown-rendered link)
- an optional Markdown description
- when the artifact was created or updated
link_text
argument for your
link artifacts:
create_link_artifact
method is used within a flow to create a link artifact with a
key of my-important-link
.
The link
parameter specifies the external resource to link to, and link_text
specifies
the text to display for the link.
You can also add an optional description
for context.
Create progress artifacts
Progress artifacts render dynamically on the flow run graph in the Prefect UI, indicating the progress of long-running tasks. To create a progress artifact, use thecreate_progress_artifact()
function. To update a progress artifact,
use the update_progress_artifact()
function.

update_progress_artifact()
function. Prefect updates a
progress artifact in place, rather than versioning it.
Create Markdown artifacts
To create a Markdown artifact, you can use thecreate_markdown_artifact()
function.
To create multiple versions of the same artifact and/or view them on the Artifacts page of the Prefect UI,
provide a key
argument to the create_markdown_artifact()
function to track an artifact’s history over time.
Without a key
, the artifact is only visible in the Artifacts tab of the associated flow run or task run.
Don’t indent MarkdownDon’t indent Markdown in mult-line strings. Otherwise it will be interpreted incorrectly.

Create table artifacts
Create a table artifact by callingcreate_table_artifact()
.
To create multiple versions of the same artifact and/or view them on the Artifacts page of the Prefect UI,
provide a key
argument to the create_table_artifact()
function to track an artifact’s history over time.
Without a key
, the artifact is only visible in the artifacts tab of the associated flow run or task run.
The
create_table_artifact()
function accepts a table
argument. Pass this as a
list of lists, a list of dictionaries, or a dictionary of lists.
Create image artifacts
Image artifacts render publicly available images in the Prefect UI. To create an image artifact, use thecreate_image_artifact()
function.

create_link_artifact()
function instead.
Manage artifacts
Reading artifacts
In the Prefect UI, you can view all of the latest versions of your artifacts and click into a specific artifact to see its lineage over time. Additionally, you can inspect all versions of an artifact with a given key from the CLI by running:Fetching artifacts
In Python code, you can retrieve an existing artifact with theArtifact.get
class method: