Developer API - Data pipelines
Use the following endpoints to manage data pipelines programmatically. You can create and configure pipelines, start and stop them, re-sync objects, and monitor object runs. These endpoints are available in workspaces with data pipelines enabled. Data pipelines and connections are environment-scoped, so an API client can only access pipelines and connections in the environment it belongs to.
Endpoint access
Your API client must have the appropriate privileges to access these endpoints. Configure the Data Pipelines section when you create or edit a client role to control these privileges. Refer to Data Pipelines privileges for the available options.
Data Pipelines privileges
The Data Pipelines privilege group includes the following options:
| Privilege | Endpoint |
|---|---|
| List data pipelines | GET /api/data_pipelines |
| Get data pipeline details | GET /api/data_pipelines/:data_pipeline_id |
| Create data pipeline | POST /api/data_pipelines |
| Update data pipeline | PUT /api/data_pipelines/:data_pipeline_id |
| Delete data pipeline | DELETE /api/data_pipelines/:data_pipeline_id |
| Start data pipeline | PUT /api/data_pipelines/:data_pipeline_id/start |
| Stop data pipeline | PUT /api/data_pipelines/:data_pipeline_id/stop |
| Clone data pipeline | POST /api/data_pipelines/:data_pipeline_id/clone |
| Trigger resync for data pipeline | POST /api/data_pipelines/:data_pipeline_id/resync |
| List objects in data pipeline | GET /api/data_pipelines/:data_pipeline_id/objects |
| List runs for data pipeline | GET /api/data_pipelines/:data_pipeline_id/runs |
| Get run details | GET /api/data_pipelines/:data_pipeline_id/runs/:run_id |
| List source providers | GET /api/data_pipelines/sources |
| List destination providers | GET /api/data_pipelines/destinations |
| List source objects | POST /api/data_pipelines/source_objects |
| List source object fields | POST /api/data_pipelines/source_object_fields |
| Get configuration schema | POST /api/data_pipelines/:data_pipeline_id/configuration |
Rate limits
Data pipeline resources have the following rate limits:
| Type | Resource | Quota |
|---|---|---|
| All | All Data pipelines endpoints | 60 requests per minute |
Quick reference
Create and run a pipeline
The Get configuration schema and Update a data pipeline endpoints require a pipeline ID, so you must create a pipeline before you configure it. Complete the following steps to create and start a pipeline with the API:
Call List source providers and List destination providers to retrieve the provider names available in your workspace.
Call List source objects and List source object fields to review the data available from your source connection. You can retrieve connection IDs with the List connections endpoint.
Call Create a data pipeline with the source and destination providers and connection IDs.
Call Get configuration schema to retrieve the configuration fields and default values for the source, destination, or an object. Include your configuration values in the input field to validate them.
Call Update a data pipeline to save your source_config and destination_config values.
Call Start a data pipeline to begin syncing.
Call List pipeline objects and List pipeline runs to monitor sync activity. Call Re-sync objects to reload data for specific objects outside the regular schedule.
Error responses
The data pipelines API returns errors in the following formats.
Error format
Most errors return an errors array. Each error includes a code and a title that describes the error, and can include detail and reason fields:
{
"errors": [
{
"code": 404,
"title": "Not found"
}
]
}Unauthorized and parameter errors
401 errors and requests with a missing or invalid parameter return a message field that describes the error instead of an errors array. The response uses the errors array instead if several required parameters are missing. These responses can also include details and reason fields:
{
"message": "Unauthorized"
}Error codes
The data pipelines API returns the following error codes:
| Code | Description |
|---|---|
| 400 | Bad request. The request is invalid or the operation failed, such as when a pipeline can't be started or a run doesn't exist. |
| 401 | Unauthorized. The API token is invalid or missing, the API client doesn't have the required privileges, or the API client can't access the folder that contains the resource. |
| 404 | The data pipeline, connection, or source object doesn't exist. |
| 422 | Validation error. Returned by the create and update endpoints. |
| 429 | Too many requests. The rate limit is exceeded. The Retry-After response header indicates when you can retry. |
| 500 | Internal server error. The title includes an error ID. |
The delete, start, stop, and re-sync endpoints return {"success": true} when the operation succeeds and a 400 error when it fails.
Refer to HTTP response codes for more information.
Pipelines
Use the following endpoints to create, update, and control data pipelines.
List data pipelines
Returns a list of data pipelines in the environment your API client belongs to, sorted by ID in ascending order. The response includes only pipelines in folders your API client can access.
GET https://YOUR_DATA_CENTER/api/data_pipelinesQuery parameters
| Name | Type | Description |
|---|---|---|
| folder_id | integer optional | Returns pipelines in the folder you specify. |
| since_id | integer optional | Returns pipelines with an ID greater than the value you specify. To fetch the next page, set this value to the highest id in the previous response. This differs from since_id in the Recipes API, which returns IDs lower than the value you provide. |
| per_page | integer optional | Number of pipelines to return per page. Defaults to 100. Maximum is 100. |
Sample request
curl -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines?folder_id=:folder_id' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"items": [
{
"id": 4821,
"name": "Salesforce to Snowflake",
"handle": "dpr-BcHkTq2x-x7Lp9Q-SM",
"folder_id": 27180380,
"user_id": 81234,
"created_at": "2026-10-01T09:00:00Z",
"updated_at": "2026-10-01T09:20:00Z",
"source_provider": "salesforce",
"source_shared_account_id": 10452,
"source_config": {},
"destination_provider": "snowflake",
"destination_shared_account_id": 10453,
"destination_config": {},
"running": true,
"last_run_at": "2026-10-14T10:00:05Z",
"stopped_at": null,
"last_synced_at": "2026-10-14T09:50:12Z",
"next_sync_at": "2026-10-14T10:15:00Z",
"successful_object_runs_count": 1248,
"failed_object_runs_count": 3,
"current_sync": {
"started_at": "2026-10-14T10:00:05Z",
"successful_object_runs_count": 4,
"failed_object_runs_count": 0,
"total_object_runs_count": 6
},
"last_sync": {
"started_at": "2026-10-14T09:45:03Z",
"completed_at": "2026-10-14T09:50:12Z",
"successful_object_runs_count": 6,
"failed_object_runs_count": 0,
"total_object_runs_count": 6
}
},
{
"id": 4822,
"name": "Salesforce to PostgreSQL",
"handle": "dpr-BcJm4Wn8-q3Zr8T-SM",
"folder_id": 27180380,
"user_id": 81234,
"created_at": "2026-10-02T14:30:00Z",
"updated_at": "2026-10-03T08:15:00Z",
"source_provider": "salesforce",
"source_shared_account_id": 10452,
"source_config": {},
"destination_provider": "postgresql",
"destination_shared_account_id": 10460,
"destination_config": {},
"running": false,
"last_run_at": "2026-10-03T08:00:04Z",
"stopped_at": "2026-10-03T08:15:00Z",
"last_synced_at": "2026-10-03T08:04:51Z",
"next_sync_at": null,
"successful_object_runs_count": 212,
"failed_object_runs_count": 0,
"last_sync": {
"started_at": "2026-10-03T08:00:04Z",
"completed_at": "2026-10-03T08:04:51Z",
"successful_object_runs_count": 4,
"failed_object_runs_count": 0,
"total_object_runs_count": 4
}
}
]
}Get a data pipeline
Returns the configuration and status of the data pipeline you specify.
GET https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_idURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline. You can retrieve a list of pipeline IDs by calling the List data pipelines endpoint. |
Sample request
curl -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"id": 4821,
"name": "Salesforce to Snowflake",
"handle": "dpr-BcHkTq2x-x7Lp9Q-SM",
"folder_id": 27180380,
"user_id": 81234,
"created_at": "2026-10-01T09:00:00Z",
"updated_at": "2026-10-01T09:20:00Z",
"source_provider": "salesforce",
"source_shared_account_id": 10452,
"source_config": {},
"destination_provider": "snowflake",
"destination_shared_account_id": 10453,
"destination_config": {},
"running": true,
"last_run_at": "2026-10-14T10:00:05Z",
"stopped_at": null,
"last_synced_at": "2026-10-14T09:50:12Z",
"next_sync_at": "2026-10-14T10:15:00Z",
"successful_object_runs_count": 1248,
"failed_object_runs_count": 3,
"current_sync": {
"started_at": "2026-10-14T10:00:05Z",
"successful_object_runs_count": 4,
"failed_object_runs_count": 0,
"total_object_runs_count": 6
},
"last_sync": {
"started_at": "2026-10-14T09:45:03Z",
"completed_at": "2026-10-14T09:50:12Z",
"successful_object_runs_count": 6,
"failed_object_runs_count": 0,
"total_object_runs_count": 6
}
}Response fields
The list, get, create, update, and clone endpoints return data pipeline objects with the following fields. Timestamps use ISO 8601 format. Some fields, such as timestamps and counts, can return null.
The list, get, and update endpoints also return the sync status fields (last_synced_at, next_sync_at, successful_object_runs_count, failed_object_runs_count, current_sync, and last_sync) when sync information is available. The create and clone endpoints don't return these fields.
| Name | Type | Description |
|---|---|---|
| id | integer | Data pipeline ID. |
| name | string | Pipeline name. |
| handle | string | Unique string identifier for the pipeline. |
| folder_id | integer | ID of the folder that contains the pipeline. |
| user_id | integer | ID of the user who owns the pipeline. |
| created_at | string | Time the pipeline was created. |
| updated_at | string | Time the pipeline was last updated. |
| source_provider | string | Source provider name, such as salesforce. |
| source_shared_account_id | integer | Source connection ID. |
| source_config | object | Source configuration. |
| destination_provider | string | Destination provider name, such as snowflake. |
| destination_shared_account_id | integer | Destination connection ID. |
| destination_config | object | Destination configuration. |
| running | boolean | Whether the pipeline is running. |
| last_run_at | string | Time of the most recent run. |
| stopped_at | string | Time the pipeline was last stopped. |
| last_synced_at | string | Time of the most recent successful sync. |
| next_sync_at | string | Time of the next scheduled sync. |
| successful_object_runs_count | integer | Number of successful object runs. |
| failed_object_runs_count | integer | Number of failed object runs. |
| current_sync | object | Statistics for the sync in progress. Returned only while a sync is running. Refer to Sync statistics. |
| last_sync | object | Statistics for the previous sync. Returned only if the pipeline has a previous sync. Refer to Sync statistics. |
Sync statistics
The current_sync and last_sync objects contain the following fields:
| Name | Type | Description |
|---|---|---|
| started_at | string | Time the sync started. |
| completed_at | string | Time the sync completed. Returned in last_sync only. |
| successful_object_runs_count | integer | Number of successful object runs in the sync. |
| failed_object_runs_count | integer | Number of failed object runs in the sync. |
| total_object_runs_count | integer | Total number of object runs in the sync. |
Refer to Pipeline runs for more information about syncs and object runs.
Create a data pipeline
Creates a data pipeline with the source and destination you specify.
POST https://YOUR_DATA_CENTER/api/data_pipelinesPayload
| Name | Type | Description |
|---|---|---|
| name | string required | Pipeline name. |
| source_provider | string required | Source provider name, such as salesforce. Call List source providers to retrieve the available names. |
| source_shared_account_id | integer required | Source connection ID. |
| destination_provider | string required | Destination provider name, such as snowflake. Call List destination providers to retrieve the available names. |
| destination_shared_account_id | integer required | Destination connection ID. |
| folder_id | integer optional | ID of the folder where Workato stores the pipeline. Defaults to the Home folder. |
| source_config | object optional | Source configuration. Call Get configuration schema to retrieve the available fields. |
| destination_config | object optional | Destination configuration. Call Get configuration schema to retrieve the available fields. |
You can retrieve connection IDs with the List connections endpoint.
Sample request
curl -X POST 'https://YOUR_DATA_CENTER/api/data_pipelines' \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"name": ":name",
"folder_id": :folder_id,
"source_provider": ":source_provider",
"source_shared_account_id": :source_connection_id,
"destination_provider": ":destination_provider",
"destination_shared_account_id": :destination_connection_id
}'Sample response
Workato returns a 201 Created status and the new data pipeline object. The response doesn't include sync status fields.
{
"id": 4821,
"name": "Salesforce to Snowflake",
"handle": "dpr-BcHkTq2x-x7Lp9Q-SM",
"folder_id": 27180380,
"user_id": 81234,
"created_at": "2026-10-01T09:00:00Z",
"updated_at": "2026-10-01T09:00:00Z",
"source_provider": "salesforce",
"source_shared_account_id": 10452,
"source_config": {},
"destination_provider": "snowflake",
"destination_shared_account_id": 10453,
"destination_config": {},
"running": false,
"last_run_at": null,
"stopped_at": null
}Update a data pipeline
Updates the name, folder, or configuration of the data pipeline you specify.
PUT https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_idURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline to update. |
Payload
| Name | Type | Description |
|---|---|---|
| name | string optional | Pipeline name. |
| folder_id | integer optional | ID of the folder where Workato stores the pipeline. |
| source_config | object optional | Source configuration. Call Get configuration schema to retrieve the available fields. |
| destination_config | object optional | Destination configuration. Call Get configuration schema to retrieve the available fields. |
Sample request
curl -X PUT 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id' \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"name": ":name",
"folder_id": :folder_id
}'Sample response
Workato returns the updated data pipeline object.
{
"id": 4821,
"name": "Salesforce to Snowflake (production)",
"handle": "dpr-BcHkTq2x-x7Lp9Q-SM",
"folder_id": 27180395,
"user_id": 81234,
"created_at": "2026-10-01T09:00:00Z",
"updated_at": "2026-10-14T11:30:00Z",
"source_provider": "salesforce",
"source_shared_account_id": 10452,
"source_config": {},
"destination_provider": "snowflake",
"destination_shared_account_id": 10453,
"destination_config": {},
"running": false,
"last_run_at": "2026-10-14T10:00:05Z",
"stopped_at": "2026-10-14T11:00:00Z",
"last_synced_at": "2026-10-14T10:05:40Z",
"next_sync_at": null,
"successful_object_runs_count": 1254,
"failed_object_runs_count": 3,
"last_sync": {
"started_at": "2026-10-14T10:00:05Z",
"completed_at": "2026-10-14T10:05:40Z",
"successful_object_runs_count": 6,
"failed_object_runs_count": 0,
"total_object_runs_count": 6
}
}Delete a data pipeline
Permanently deletes the data pipeline you specify. You can't undo this action.
DELETE https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_idURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline to delete. |
Sample request
curl -X DELETE 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"success": true
}Clone a data pipeline
Creates a copy of the data pipeline you specify.
POST https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/cloneURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline to clone. |
Sample request
curl -X POST 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/clone' \
-H 'Authorization: Bearer <api_token>'Response
Workato returns a 201 Created status and the cloned data pipeline object. The response doesn't include sync status fields and uses the same format as Create a data pipeline.
Start a data pipeline
Starts the data pipeline you specify so it begins processing data. Returns a 400 error if the pipeline can't be started.
PUT https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/startURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline to start. |
Sample request
curl -X PUT 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/start' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"success": true
}Stop a data pipeline
Stops the data pipeline you specify from processing data.
PUT https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/stopURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline to stop. |
Sample request
curl -X PUT 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/stop' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"success": true
}Pipeline configuration
Use the following endpoints to discover providers, objects, and fields, and to retrieve and validate pipeline configuration.
List source providers
Returns the source providers available for data pipelines.
GET https://YOUR_DATA_CENTER/api/data_pipelines/sourcesSample request
curl -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/sources' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"items": [
{
"name": "snowflake",
"connectionless": false
},
{
"name": "salesforce",
"connectionless": false
}
]
}Response fields
The list source providers and list destination providers endpoints return an items array. Each item contains the following fields:
| Name | Type | Description |
|---|---|---|
| name | string | Provider name. Use this value as the source_provider or destination_provider when you create a data pipeline. |
| connectionless | boolean | Whether the provider doesn't require a connection. |
List destination providers
Returns the destination providers available for data pipelines. The response uses the same fields as List source providers.
GET https://YOUR_DATA_CENTER/api/data_pipelines/destinationsSample request
curl -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/destinations' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"items": [
{
"name": "snowflake",
"connectionless": false
},
{
"name": "postgresql",
"connectionless": false
}
]
}List source objects
Returns the objects available from the source connection you specify. Returns a 404 error if the connection doesn't exist.
POST https://YOUR_DATA_CENTER/api/data_pipelines/source_objectsPayload
| Name | Type | Description |
|---|---|---|
| shared_account_id | integer required | Source connection ID. |
| extension | object optional | Provider-specific extension parameters. |
| filter | string optional | Filter expression that limits the objects returned. |
Sample request
curl -X POST 'https://YOUR_DATA_CENTER/api/data_pipelines/source_objects' \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"shared_account_id": :source_connection_id
}'Sample response
{
"items": [
{
"name": "Account",
"namespace": null,
"label": "Account",
"workato_type": "OBJECT"
},
{
"name": "Contact",
"namespace": null,
"label": "Contact",
"workato_type": "OBJECT"
}
]
}Response fields
The response contains an items array of objects available from the source connection. Each item contains the following fields:
| Name | Type | Description |
|---|---|---|
| name | string | Object name. Pass this value as object_name to List source object fields. |
| namespace | string | Object namespace, such as a database schema. Pass this value as object_namespace to List source object fields. Can be null. |
| label | string | Object display label. |
| workato_type | string | Workato type of the object, such as OBJECT. |
| extension | object | Provider-specific object extension. |
| supported_sync_modes | array of strings | Sync modes the object supports. |
List source object fields
Returns the field schema for an object in the source connection you specify. Returns a 404 error if the connection or object doesn't exist.
POST https://YOUR_DATA_CENTER/api/data_pipelines/source_object_fieldsPayload
| Name | Type | Description |
|---|---|---|
| shared_account_id | integer required | Source connection ID. |
| object_name | string required | Object name, such as Account. |
| object_namespace | string optional | Object namespace. Omit or set to null to use the default namespace. |
| extension | object optional | Provider-specific extension parameters. |
Sample request
curl -X POST 'https://YOUR_DATA_CENTER/api/data_pipelines/source_object_fields' \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"shared_account_id": :source_connection_id,
"object_name": ":object_name"
}'Sample response
{
"fields": [
{
"name": "Id",
"label": "Account ID",
"type": "STRING",
"workato_type": "STRING",
"primary_key": true,
"cursor_field": false,
"is_deleted_field": false,
"masking_available": false,
"must_sync": true,
"eligible_for": ["PK"]
},
{
"name": "Name",
"label": "Account Name",
"type": "STRING",
"workato_type": "STRING",
"primary_key": false,
"cursor_field": false,
"is_deleted_field": false,
"masking_available": true,
"must_sync": false,
"eligible_for": []
}
],
"supported_sync_modes": ["FULL", "INCREMENTAL"]
}Response fields
| Name | Type | Description |
|---|---|---|
| fields | array of objects | Field descriptors for the object. Refer to Field descriptors. |
| supported_sync_modes | array of strings | Sync modes the object supports. Can be null. |
| supported_sync_strategies | object | Sync strategies for each supported sync mode, keyed by mode. Each strategy includes a name and a label. Can be null. |
Field descriptors
Each item in the fields array contains the following fields:
| Name | Type | Description |
|---|---|---|
| name | string | Field name. |
| label | string | Field display label. |
| type | string | Field type. |
| workato_type | string | Workato type of the field. |
| primary_key | boolean | Whether the field is part of the primary key. |
| cursor_field | boolean | Whether the field is a cursor field. |
| is_deleted_field | boolean | Whether the field marks deleted records. |
| masking_available | boolean | Whether the field can be masked. |
| must_sync | boolean | Whether the field is always synced. |
| eligible_for | array of strings | Roles the field can play. Empty if the source doesn't report any. |
Get configuration schema
Returns the configuration schema, default values, and validation errors for the source, destination, or object settings of a data pipeline. Include your configuration values in the input field to validate them before you update or start the pipeline. Returns a 404 error if the pipeline or connection doesn't exist.
POST https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/configurationURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline. |
Payload
| Name | Type | Description |
|---|---|---|
| type | string required | The configuration to evaluate. Accepted values: sources, destinations, object_settings. |
| shared_account_id | integer required | ID of the connection to evaluate the schema against. |
| object_name | string optional | Object name for object-level schema evaluation. |
| object_namespace | string optional | Object namespace. |
| object_extension | object optional | Provider-specific extension parameters for the object. |
| supported_sync_modes | array of strings optional | Sync modes the object supports. |
| input | object optional | Current configuration values. Workato evaluates dynamic fields against these values and returns any validation errors in the errors field. |
Sample request
curl -X POST 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/configuration' \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"type": "sources",
"shared_account_id": :source_connection_id,
"object_name": ":object_name"
}'Sample response
The available configuration fields vary by provider. The following example shows a source with one required field that's missing from input:
{
"schema": [
{
"item_type": "schema-field",
"name": "mode",
"label": "Mode",
"type": "string",
"control_type": "select",
"default": "simple",
"options": [
["Simple", "simple"],
["Advanced", "advanced"]
],
"extends_schema": true
},
{
"item_type": "schema-field",
"name": "required_field",
"label": "Required field",
"type": "string",
"validation_problems": [
{
"type": "error",
"message": "can't be blank"
}
]
}
],
"default_input": {
"mode": "simple"
},
"errors": {
"source_config": [
{
"field": "required_field",
"message": "can't be blank",
"severity": "error"
}
]
}
}Response fields
| Name | Type | Description |
|---|---|---|
| schema | array of objects | Configuration items. Use item_type to tell them apart. A schema-field item is a configuration field. Other values, such as object-field, message, help, and separator, are structural or display items with different attributes. A schema-field includes name, label, and type, and can include attributes such as control_type, default, options, hint, optional, read_only, and validation_problems. |
| default_input | object | Default value for each configuration field, keyed by field name. |
| errors | object | Validation errors for the values in input. Keyed by destination_config when type is destinations, and by source_config when type is sources or object_settings. Each key contains an array of errors. Each error includes a field with the path of the configuration field, or objects for object-level problems, a message, and a severity of error or warning. Field-level errors also include object_name when the request includes object_name. |
Objects and runs
Use the following endpoints to monitor object sync status and run history, and to re-sync objects. Refer to Monitor and manage data pipelines for more information about objects and runs.
List pipeline objects
Returns the objects configured in the data pipeline you specify and their sync status.
GET https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/objectsURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline. |
Query parameters
| Name | Type | Description |
|---|---|---|
| limit | integer optional | Number of objects to return per page. Defaults to 50. Workato adjusts values outside the range of 1 to 1000 to the nearest limit. |
| offset | integer optional | Number of objects to skip before Workato returns results. |
| sort_by | string optional | Field to sort results by, such as object_label or run_last_state. |
| object_label | string optional | Returns objects with the display label you specify. |
| run_last_state | string optional | Returns objects whose most recent run has the state you specify. Refer to the run_last_state response field for possible values. |
Sample request
curl -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/objects?limit=:limit&offset=:offset' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"items": [
{
"object_namespace": null,
"object_name": "Account",
"object_label": "Accounts",
"run_last_state": "synced",
"updated_at": "2026-10-14T10:02:31Z",
"resync_requested": false
},
{
"object_namespace": null,
"object_name": "Contact",
"object_label": "Contacts",
"run_last_state": "failed",
"updated_at": "2026-10-14T10:03:12Z",
"resync_requested": true
}
]
}Response fields
| Name | Type | Description |
|---|---|---|
| object_namespace | string | Object namespace. Returns null if the object has no namespace. |
| object_name | string | Object name. |
| object_label | string | Object display label. |
| run_last_state | string | State of the most recent run for the object. Possible values: synced, failed, initial_syncing, syncing, resyncing, queued, not_synced_yet, cancelled, unknown. |
| updated_at | string | Time the object was last updated, in ISO 8601 format. |
| resync_requested | boolean | Whether a re-sync is requested for the object. |
Re-sync objects
Triggers a complete re-sync of data from the source for the objects you specify. Returns a 400 error if Workato can't start the re-sync. Refer to Object syncs for more information.
POST https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/resyncURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline. |
Payload
| Name | Type | Description |
|---|---|---|
| objects | array of objects required | The objects to re-sync. Use the object_name and object_namespace values from List pipeline objects. Each object contains the following fields:name (string, required): Object name.namespace (string, optional): Object namespace. Set to null to use the default namespace. |
Sample request
curl -X POST 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/resync' \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"objects": [
{
"name": ":object_name",
"namespace": ":object_namespace"
}
]
}'Sample response
{
"success": true
}List pipeline runs
Returns the object runs for the data pipeline you specify. Each sync contains one run per object. The response includes only runs from the last 30 days.
GET https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/runsURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline. |
Query parameters
| Name | Type | Description |
|---|---|---|
| object_name | string optional | Returns runs for the object you specify. |
| object_namespace | string optional | Returns runs for objects in the namespace you specify. Omit to return runs for all namespaces. |
| limit | integer optional | Number of runs to return per page. Defaults to 25. Maximum is 100. |
| offset_object_run_id | string optional | Pagination cursor. Set this value to the next_page_cursor from the previous response to fetch the next page. |
Sample request
curl -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/runs?object_name=:object_name&limit=:limit' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"items": [
{
"id": "run-124",
"object_namespace": null,
"object_name": "Account",
"state": "SUCCEEDED",
"created_at": "2026-10-14T10:00:00Z",
"started_at": "2026-10-14T10:00:05Z",
"completed_at": "2026-10-14T10:02:31Z",
"updated_at": "2026-10-14T10:02:31Z",
"loaded_count": 120,
"updated_count": 95,
"inserted_count": 25,
"extracted_count": 120,
"run_type": "INCREMENTAL",
"sync_type2": "REGULAR"
},
{
"id": "run-123",
"object_namespace": null,
"object_name": "Account",
"state": "SUCCEEDED",
"created_at": "2026-10-14T09:45:00Z",
"started_at": "2026-10-14T09:45:03Z",
"completed_at": "2026-10-14T09:47:40Z",
"updated_at": "2026-10-14T09:47:40Z",
"loaded_count": 500,
"updated_count": 100,
"inserted_count": 400,
"extracted_count": 500,
"run_type": "INCREMENTAL",
"sync_type2": "REGULAR"
}
],
"next_page_cursor": "run-123",
"has_more_pages": true
}Response fields
| Name | Type | Description |
|---|---|---|
| items | array of objects | Object runs. Refer to Run fields for field descriptions. |
| next_page_cursor | string | ID of the last run in the response. Pass this value as offset_object_run_id to fetch the next page. Returns null when there are no more pages. |
| has_more_pages | boolean | Whether more pages are available. |
Get a pipeline run
Returns the details of the object run you specify. Workato retrieves runs from the last 30 days only. Returns a 400 error if the run doesn't exist or is older than that.
GET https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/runs/:run_idURL parameters
| Name | Type | Description |
|---|---|---|
| data_pipeline_id | integer required | The ID of the data pipeline. |
| run_id | string required | The ID of the run. You can retrieve run IDs with the List pipeline runs endpoint. |
Sample request
curl -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/runs/:run_id' \
-H 'Authorization: Bearer <api_token>'Sample response
{
"id": "run-124",
"object_namespace": null,
"object_name": "Account",
"state": "SUCCEEDED",
"created_at": "2026-10-14T10:00:00Z",
"started_at": "2026-10-14T10:00:05Z",
"completed_at": "2026-10-14T10:02:31Z",
"updated_at": "2026-10-14T10:02:31Z",
"loaded_count": 120,
"updated_count": 95,
"inserted_count": 25,
"extracted_count": 120,
"run_type": "INCREMENTAL",
"sync_type2": "REGULAR"
}Run fields
Timestamps use ISO 8601 format. object_namespace, started_at, completed_at, and updated_at can return null. Use run_type and sync_type2 together to determine the sync type of a run. Refer to Sync types for more information.
| Name | Type | Description |
|---|---|---|
| id | string | Run ID. |
| object_namespace | string | Namespace of the object the run processed. |
| object_name | string | Name of the object the run processed. |
| state | string | Run state, such as STARTED, SUCCEEDED, FAILED, or CANCELLED. |
| created_at | string | Time the run was created. |
| started_at | string | Time the run started. |
| completed_at | string | Time the run completed. |
| updated_at | string | Time the run was last updated. |
| loaded_count | integer | Number of records loaded into the destination. |
| updated_count | integer | Number of records updated. |
| inserted_count | integer | Number of records inserted. |
| extracted_count | integer | Number of records extracted from the source. |
| run_type | string | Run type, such as FULL for a full sync or INCREMENTAL for an incremental sync. |
| sync_type2 | string | Sync type of the run, such as REGULAR for a run in a scheduled sync or RESYNC for an object re-sync. |
| run_error | object | Error details for a failed run. Returned only when the run has an error. Contains a message string and a code string that identifies the error type. |
Last updated: