- To get a list of available workflows, use the
UnstructuredClientobject’sworkflows.list_workflowsfunction (for the Python SDK) or theGETmethod to call the/workflowsendpoint (forcurlor Postman). Learn more. - To get information about a workflow, use the
UnstructuredClientobject’sworkflows.get_workflowfunction (for the Python SDK) or theGETmethod to call the/workflows/<workflow-id>endpoint (forcurlor Postman)use theGETmethod to call the/workflows/<workflow-id>endpoint. Learn more. - To create a workflow, use the
UnstructuredClientobject’sworkflows.create_workflowfunction (for the Python SDK) or thePOSTmethod to call the/workflowsendpoint (forcurlor Postman). Learn more. - To run a workflow manually, use the
UnstructuredClientobject’sworkflows.run_workflowfunction (for the Python SDK) or thePOSTmethod to call the/workflows/<workflow-id>/runendpoint (forcurlor Postman). Learn more. - To update a workflow, use the
UnstructuredClientobject’sworkflows.update_workflowfunction (for the Python SDK) or thePUTmethod to call the/workflows/<workflow-id>endpoint (forcurlor Postman). Learn more. - To delete a workflow, use the
UnstructuredClientobject’sworkflows.delete_workflowfunction (for the Python SDK) or theDELETEmethod to call the/workflows/<workflow-id>endpoint (forcurlor Postman). Learn more.
Create a workflow
To create a workflow, use theUnstructuredClient object’s workflows.create_workflow function (for the Python SDK) or
the POST method to call the /workflows endpoint (for curl or Postman).
In the CreateWorkflow object (for the Python SDK) or
the request body (for curl or Postman),
specify the settings for the workflow, as follows:
Python SDK
Python SDK
Python SDK (async)
Python SDK (async)
curl (remote source and remote destination)
curl (remote source and remote destination)
curl (local source and local destination)
curl (local source and local destination)
To use a local source and a local destination, do not specify a
source_id or destination_id value. Also, the workflow_type must be set to custom.The source and destination must both be local. You cannot specify a local source and a remote destination, nor can you specify a remote source
and a local destination.The Unstructured user interface (UI) and the Unstructured Python SDK currently do not support creating a workflow with a local source
and a local destination.Postman (remote source and remote destination)
Postman (remote source and remote destination)
- In the method drop-down list, select POST.
-
In the address box, enter the following URL:
-
On the Headers tab, enter the following headers:
- Key:
unstructured-api-key, Value:{{UNSTRUCTURED_API_KEY}} - Key:
accept, Value:application/json
- Key:
-
On the Body tab, select raw and JSON, and specify the settings for the workflow:
- Click Send.
Postman (local source and local destination)
Postman (local source and local destination)
To use a local source and a local destination do not specify a
source_id or destination_id value. Also, the workflow_type must be set to custom.The source and destination must both be local. You cannot specify a local source and a remote destination, nor can you specify a remote source
and a local destination.The Unstructured user interface (UI) and the Unstructured Python SDK currently do not support creating a workflow with a local source
and a local destination.- In the method drop-down list, select POST.
-
In the address box, enter the following URL:
-
On the Headers tab, enter the following headers:
- Key:
unstructured-api-key, Value:{{UNSTRUCTURED_API_KEY}} - Key:
accept, Value:application/json
- Key:
-
On the Body tab, select raw and JSON, and specify the settings for the workflow:
- Click Send.
-
<name>(required) - A unique name for this workflow. -
<source-connector-id>(required) - The ID of the target source connector. To get the ID, use theUnstructuredClientobject’ssources.list_sourcesfunction (for the Python SDK) or theGETmethod to call the/sourcesendpoint (forcurlor Postman). Learn more. -
<destination-connector-id>(required) - The ID of the target destination connector. To get the ID, use theUnstructuredClientobject’sdestinations.list_destinationsfunction (for the Python SDK) or theGETmethod to call the/destinationsendpoint (forcurlor Postman). Learn more. -
<TYPE>(for the Python SDK) or<type>(forcurlor Postman) (required) - The workflow type. Available values includeCUSTOM(for the Python SDK) andcustom(forcurlor Postman). If<TYPE>is set toCUSTOM(for the Python SDK), or if<type>is set tocustom(forcurlor Postman), you must add aworkflow_nodesarray. For instructions, see Custom workflow DAG nodes.The previously-available workflow optimization typesADVANCED,BASIC, andPLATINUM(for the Python SDK) andadvanced,basic, andplatinum(forcurlor Postman) are non-operational and planned to be fully removed in a future release.The ability to create an automatic workflow type is currently not available but is planned to be added in a future release. -
<schedule-timeframe>- The repeating automatic run schedule, specified as a predefined phrase. The available predefined phrases are:every 15 minutes(forcurlor Postman): Every 15 minutes (cron expression:*/15 * * * *).every hour: At the first minute of every hour (cron expression:0 * * * *).every 2 hours: At the first minute of every second hour (cron expression:0 */2 * * *).every 4 hours: At the first minute of every fourth hour (cron expression:0 */4 * * *).every 6 hours: At the first minute of every sixth hour (cron expression:0 */6 * * *).every 8 hours: At the first minute of every eighth hour (cron expression:0 */8 * * *).every 10 hours: At the first minute of every tenth hour (cron expression:0 */10 * * *).every 12 hours: At the first minute of every twelfth hour (cron expression:0 */12 * * *).daily: At the first minute of every day (cron expression:0 0 * * *).weekly: At the first minute of every Sunday (cron expression:0 0 * * 0).monthly: At the first minute of the first day of every month (cron expression:0 0 1 * *).
scheduleis not specified, the workflow does not automatically run on a repeating schedule.
Update a workflow
To update information about a workflow, use theUnstructuredClient object’s workflows.update_workflow function (for the Python SDK) or
the PUT method to call the /workflows/<workflow-id> endpoint (for curl or Postman), replacing
<workflow-id> with the workflow’s unique ID. To get this ID, see List workflows.
In the request body, specify the settings for the workflow. For the specific settings to include, see
Create a workflow.
Python SDK
Python SDK
Python SDK (async)
Python SDK (async)
curl
curl
Postman
Postman
- In the method drop-down list, select PUT.
-
In the address box, enter the following URL:
-
On the Headers tab, enter the following headers:
- Key:
unstructured-api-key, Value:{{UNSTRUCTURED_API_KEY}} - Key:
accept, Value:application/json
- Key:
- On the Body tab, select raw and JSON, and specify the settings for the workflow.
- Click Send.
Custom workflow DAG nodes
IfWorkflowType is set to CUSTOM (for the Python SDK), or if workflow_type is set to custom (for curl or Postman), you must also specify the settings for the workflow’s
directed acyclic graph (DAG) nodes. These nodes’ settings are specified in the workflow_nodes array.
- A Source node is automatically created when you specify the
source_idvalue outside of the
workflow_nodesarray. - A Destination node is automatically created when you specify the
destination_idvalue outside of theworkflow_nodesarray. - You can specify Partitioner, Chunker, Enrichment, and Embedder nodes.
- The order of the nodes in the
workflow_nodesarray will be the same order that these nodes appear in the DAG, with the first node in the array added directly after the Source node. The Destination node follows the last node in the array. - Be sure to specify nodes in the allowed order. The following DAG placements are all allowed:
Partitioner node
A Partitioner node has atype of WorkflowNodeType.PARTITION (for the Python SDK) or partition (for curl and Postman).
Learn about the available partitioning strategies.
Auto strategy
Python SDK
Python SDK
curl, Postman
curl, Postman
VLM strategy
Python SDK
Python SDK
curl, Postman
curl, Postman
provider and model include:
-
"provider": "anthropic""model": "claude-3-5-sonnet-20241022"
-
"provider": "openai""model": "gpt-4o"
-
"provider": "bedrock""model": "us.anthropic.claude-3-5-sonnet-20241022-v2:0""model": "us.anthropic.claude-3-opus-20240229-v1:0""model": "us.anthropic.claude-3-haiku-20240307-v1:0""model": "us.anthropic.claude-3-sonnet-20240229-v1:0""model": "us.amazon.nova-pro-v1:0""model": "us.amazon.nova-lite-v1:0""model": "us.meta.llama3-2-90b-instruct-v1:0""model": "us.meta.llama3-2-11b-instruct-v1:0"
-
"provider": "vertexai""model": "gemini-2.0-flash-001"
High Res strategy
Python SDK
Python SDK
curl, Postman
curl, Postman
Fast strategy
Python SDK
Python SDK
curl, Postman
curl, Postman
Chunker node
A Chunker node has atype of WorkflowNodeType.CHUNK (for the Python SDK) or chunk (for curl and Postman).
Learn about the available chunking strategies.
Chunk by Character strategy
Python SDK
Python SDK
curl, Postman
curl, Postman
Chunk by Title strategy
Python SDK
Python SDK
curl, Postman
curl, Postman
Chunk by Page strategy
Python SDK
Python SDK
curl, Postman
curl, Postman
Chunk by Similarity strategy
Python SDK
Python SDK
curl, Postman
curl, Postman
Enrichment node
An Enrichment node has atype of WorkflowNodeType.PROMPTER (for the Python SDK) or prompter (for curl and Postman).
Learn about the available enrichments.
Image Description task
Python SDK
Python SDK
curl, Postman
curl, Postman
<subtype> include:
openai_image_descriptionanthropic_image_descriptionbedrock_image_descriptionvertexai_image_description
Table Description task
Python SDK
Python SDK
curl, Postman
curl, Postman
<subtype> include:
openai_table_descriptionanthropic_table_descriptionbedrock_table_descriptionvertexai_table_description
Table to HTML task
Python SDK
Python SDK
curl, Postman
curl, Postman
Named Entity Recognition (NER) task
Python SDK
Python SDK
curl, Postman
curl, Postman
Embedder node
An Embedder node has atype of WorkflowNodeType.EMBED (for the Python SDK) or embed (for curl and Postman).
Learn about the available embedding providers and models.
Python SDK
Python SDK
curl, Postman
curl, Postman
subtype and model_name include:
-
"subtype": "azure_openai""model_name": "text-embedding-3-small""model_name": "text-embedding-3-large""model_name": "text-embedding-ada-002"
-
"subtype": "bedrock""model_name": "amazon.titan-embed-text-v2:0""model_name": "amazon.titan-embed-text-v1""model_name": "amazon.titan-embed-image-v1""model_name": "cohere.embed-english-v3""model_name": "cohere.embed-multilingual-v3"
-
"subtype": "togetherai""model_name": "togethercomputer/m2-bert-80M-2k-retrieval""model_name": "togethercomputer/m2-bert-80M-8k-retrieval""model_name": "togethercomputer/m2-bert-80M-32k-retrieval"

