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:

PrivilegeEndpoint
List data pipelinesGET /api/data_pipelines
Get data pipeline detailsGET /api/data_pipelines/:data_pipeline_id
Create data pipelinePOST /api/data_pipelines
Update data pipelinePUT /api/data_pipelines/:data_pipeline_id
Delete data pipelineDELETE /api/data_pipelines/:data_pipeline_id
Start data pipelinePUT /api/data_pipelines/:data_pipeline_id/start
Stop data pipelinePUT /api/data_pipelines/:data_pipeline_id/stop
Clone data pipelinePOST /api/data_pipelines/:data_pipeline_id/clone
Trigger resync for data pipelinePOST /api/data_pipelines/:data_pipeline_id/resync
List objects in data pipelineGET /api/data_pipelines/:data_pipeline_id/objects
List runs for data pipelineGET /api/data_pipelines/:data_pipeline_id/runs
Get run detailsGET /api/data_pipelines/:data_pipeline_id/runs/:run_id
List source providersGET /api/data_pipelines/sources
List destination providersGET /api/data_pipelines/destinations
List source objectsPOST /api/data_pipelines/source_objects
List source object fieldsPOST /api/data_pipelines/source_object_fields
Get configuration schemaPOST /api/data_pipelines/:data_pipeline_id/configuration

Rate limits ​

Data pipeline resources have the following rate limits:

TypeResourceQuota
AllAll Data pipelines endpoints60 requests per minute

Quick reference ​

TypeResourceDescription
GET/api/data_pipelinesList data pipelines.
GET/api/data_pipelines/:data_pipeline_idGet a data pipeline.
POST/api/data_pipelinesCreate a data pipeline.
PUT/api/data_pipelines/:data_pipeline_idUpdate a data pipeline.
DELETE/api/data_pipelines/:data_pipeline_idDelete a data pipeline.
POST/api/data_pipelines/:data_pipeline_id/cloneClone a data pipeline.
PUT/api/data_pipelines/:data_pipeline_id/startStart a data pipeline.
PUT/api/data_pipelines/:data_pipeline_id/stopStop a data pipeline.
GET/api/data_pipelines/sourcesList source providers.
GET/api/data_pipelines/destinationsList destination providers.
POST/api/data_pipelines/source_objectsList the objects available from a source connection.
POST/api/data_pipelines/source_object_fieldsList the fields of a source object.
POST/api/data_pipelines/:data_pipeline_id/configurationGet the configuration schema for a pipeline and validate configuration values.
GET/api/data_pipelines/:data_pipeline_id/objectsList the objects in a data pipeline.
POST/api/data_pipelines/:data_pipeline_id/resyncRe-sync objects in a data pipeline.
GET/api/data_pipelines/:data_pipeline_id/runsList object runs for a data pipeline.
GET/api/data_pipelines/:data_pipeline_id/runs/:run_idGet an object run.

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:

1

Call List source providers and List destination providers to retrieve the provider names available in your workspace.

2

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.

3

Call Create a data pipeline with the source and destination providers and connection IDs.

4

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.

5

Call Update a data pipeline to save your source_config and destination_config values.

6

Call Start a data pipeline to begin syncing.

7

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:

json
{
  "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:

json
{
  "message": "Unauthorized"
}

Error codes ​

The data pipelines API returns the following error codes:

CodeDescription
400Bad request. The request is invalid or the operation failed, such as when a pipeline can't be started or a run doesn't exist.
401Unauthorized. 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.
404The data pipeline, connection, or source object doesn't exist.
422Validation error. Returned by the create and update endpoints.
429Too many requests. The rate limit is exceeded. The Retry-After response header indicates when you can retry.
500Internal 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_pipelines

Query parameters ​

NameTypeDescription
folder_idinteger
optional
Returns pipelines in the folder you specify.
since_idinteger
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_pageinteger
optional
Number of pipelines to return per page. Defaults to 100. Maximum is 100.

Sample request ​

shell
curl  -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines?folder_id=:folder_id' \
      -H 'Authorization: Bearer <api_token>'

Sample response ​

json
{
  "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_id

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline. You can retrieve a list of pipeline IDs by calling the List data pipelines endpoint.

Sample request ​

shell
curl  -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id' \
      -H 'Authorization: Bearer <api_token>'

Sample response ​

json
{
  "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.

NameTypeDescription
idintegerData pipeline ID.
namestringPipeline name.
handlestringUnique string identifier for the pipeline.
folder_idintegerID of the folder that contains the pipeline.
user_idintegerID of the user who owns the pipeline.
created_atstringTime the pipeline was created.
updated_atstringTime the pipeline was last updated.
source_providerstringSource provider name, such as salesforce.
source_shared_account_idintegerSource connection ID.
source_configobjectSource configuration.
destination_providerstringDestination provider name, such as snowflake.
destination_shared_account_idintegerDestination connection ID.
destination_configobjectDestination configuration.
runningbooleanWhether the pipeline is running.
last_run_atstringTime of the most recent run.
stopped_atstringTime the pipeline was last stopped.
last_synced_atstringTime of the most recent successful sync.
next_sync_atstringTime of the next scheduled sync.
successful_object_runs_countintegerNumber of successful object runs.
failed_object_runs_countintegerNumber of failed object runs.
current_syncobjectStatistics for the sync in progress. Returned only while a sync is running. Refer to Sync statistics.
last_syncobjectStatistics 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:

NameTypeDescription
started_atstringTime the sync started.
completed_atstringTime the sync completed. Returned in last_sync only.
successful_object_runs_countintegerNumber of successful object runs in the sync.
failed_object_runs_countintegerNumber of failed object runs in the sync.
total_object_runs_countintegerTotal 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_pipelines

Payload ​

NameTypeDescription
namestring
required
Pipeline name.
source_providerstring
required
Source provider name, such as salesforce. Call List source providers to retrieve the available names.
source_shared_account_idinteger
required
Source connection ID.
destination_providerstring
required
Destination provider name, such as snowflake. Call List destination providers to retrieve the available names.
destination_shared_account_idinteger
required
Destination connection ID.
folder_idinteger
optional
ID of the folder where Workato stores the pipeline. Defaults to the Home folder.
source_configobject
optional
Source configuration. Call Get configuration schema to retrieve the available fields.
destination_configobject
optional
Destination configuration. Call Get configuration schema to retrieve the available fields.

You can retrieve connection IDs with the List connections endpoint.

Sample request ​

shell
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.

json
{
  "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_id

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline to update.

Payload ​

NameTypeDescription
namestring
optional
Pipeline name.
folder_idinteger
optional
ID of the folder where Workato stores the pipeline.
source_configobject
optional
Source configuration. Call Get configuration schema to retrieve the available fields.
destination_configobject
optional
Destination configuration. Call Get configuration schema to retrieve the available fields.

Sample request ​

shell
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.

json
{
  "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_id

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline to delete.

Sample request ​

shell
curl  -X DELETE 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id' \
      -H 'Authorization: Bearer <api_token>'

Sample response ​

json
{
  "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/clone

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline to clone.

Sample request ​

shell
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/start

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline to start.

Sample request ​

shell
curl  -X PUT 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/start' \
      -H 'Authorization: Bearer <api_token>'

Sample response ​

json
{
  "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/stop

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline to stop.

Sample request ​

shell
curl  -X PUT 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/stop' \
      -H 'Authorization: Bearer <api_token>'

Sample response ​

json
{
  "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/sources

Sample request ​

shell
curl  -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/sources' \
      -H 'Authorization: Bearer <api_token>'

Sample response ​

json
{
  "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:

NameTypeDescription
namestringProvider name. Use this value as the source_provider or destination_provider when you create a data pipeline.
connectionlessbooleanWhether 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/destinations

Sample request ​

shell
curl  -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/destinations' \
      -H 'Authorization: Bearer <api_token>'

Sample response ​

json
{
  "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_objects

Payload ​

NameTypeDescription
shared_account_idinteger
required
Source connection ID.
extensionobject
optional
Provider-specific extension parameters.
filterstring
optional
Filter expression that limits the objects returned.

Sample request ​

shell
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 ​

json
{
  "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:

NameTypeDescription
namestringObject name. Pass this value as object_name to List source object fields.
namespacestringObject namespace, such as a database schema. Pass this value as object_namespace to List source object fields. Can be null.
labelstringObject display label.
workato_typestringWorkato type of the object, such as OBJECT.
extensionobjectProvider-specific object extension.
supported_sync_modesarray of stringsSync 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_fields

Payload ​

NameTypeDescription
shared_account_idinteger
required
Source connection ID.
object_namestring
required
Object name, such as Account.
object_namespacestring
optional
Object namespace. Omit or set to null to use the default namespace.
extensionobject
optional
Provider-specific extension parameters.

Sample request ​

shell
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 ​

json
{
  "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 ​

NameTypeDescription
fieldsarray of objectsField descriptors for the object. Refer to Field descriptors.
supported_sync_modesarray of stringsSync modes the object supports. Can be null.
supported_sync_strategiesobjectSync 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:

NameTypeDescription
namestringField name.
labelstringField display label.
typestringField type.
workato_typestringWorkato type of the field.
primary_keybooleanWhether the field is part of the primary key.
cursor_fieldbooleanWhether the field is a cursor field.
is_deleted_fieldbooleanWhether the field marks deleted records.
masking_availablebooleanWhether the field can be masked.
must_syncbooleanWhether the field is always synced.
eligible_forarray of stringsRoles 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/configuration

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline.

Payload ​

NameTypeDescription
typestring
required
The configuration to evaluate. Accepted values: sources, destinations, object_settings.
shared_account_idinteger
required
ID of the connection to evaluate the schema against.
object_namestring
optional
Object name for object-level schema evaluation.
object_namespacestring
optional
Object namespace.
object_extensionobject
optional
Provider-specific extension parameters for the object.
supported_sync_modesarray of strings
optional
Sync modes the object supports.
inputobject
optional
Current configuration values. Workato evaluates dynamic fields against these values and returns any validation errors in the errors field.

Sample request ​

shell
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:

json
{
  "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 ​

NameTypeDescription
schemaarray of objectsConfiguration 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_inputobjectDefault value for each configuration field, keyed by field name.
errorsobjectValidation 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/objects

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline.

Query parameters ​

NameTypeDescription
limitinteger
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.
offsetinteger
optional
Number of objects to skip before Workato returns results.
sort_bystring
optional
Field to sort results by, such as object_label or run_last_state.
object_labelstring
optional
Returns objects with the display label you specify.
run_last_statestring
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 ​

shell
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 ​

json
{
  "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 ​

NameTypeDescription
object_namespacestringObject namespace. Returns null if the object has no namespace.
object_namestringObject name.
object_labelstringObject display label.
run_last_statestringState of the most recent run for the object. Possible values: synced, failed, initial_syncing, syncing, resyncing, queued, not_synced_yet, cancelled, unknown.
updated_atstringTime the object was last updated, in ISO 8601 format.
resync_requestedbooleanWhether 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/resync

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline.

Payload ​

NameTypeDescription
objectsarray 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 ​

shell
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 ​

json
{
  "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/runs

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline.

Query parameters ​

NameTypeDescription
object_namestring
optional
Returns runs for the object you specify.
object_namespacestring
optional
Returns runs for objects in the namespace you specify. Omit to return runs for all namespaces.
limitinteger
optional
Number of runs to return per page. Defaults to 25. Maximum is 100.
offset_object_run_idstring
optional
Pagination cursor. Set this value to the next_page_cursor from the previous response to fetch the next page.

Sample request ​

shell
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 ​

json
{
  "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 ​

NameTypeDescription
itemsarray of objectsObject runs. Refer to Run fields for field descriptions.
next_page_cursorstringID 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_pagesbooleanWhether 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_id

URL parameters ​

NameTypeDescription
data_pipeline_idinteger
required
The ID of the data pipeline.
run_idstring
required
The ID of the run. You can retrieve run IDs with the List pipeline runs endpoint.

Sample request ​

shell
curl  -X GET 'https://YOUR_DATA_CENTER/api/data_pipelines/:data_pipeline_id/runs/:run_id' \
      -H 'Authorization: Bearer <api_token>'

Sample response ​

json
{
  "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.

NameTypeDescription
idstringRun ID.
object_namespacestringNamespace of the object the run processed.
object_namestringName of the object the run processed.
statestringRun state, such as STARTED, SUCCEEDED, FAILED, or CANCELLED.
created_atstringTime the run was created.
started_atstringTime the run started.
completed_atstringTime the run completed.
updated_atstringTime the run was last updated.
loaded_countintegerNumber of records loaded into the destination.
updated_countintegerNumber of records updated.
inserted_countintegerNumber of records inserted.
extracted_countintegerNumber of records extracted from the source.
run_typestringRun type, such as FULL for a full sync or INCREMENTAL for an incremental sync.
sync_type2stringSync type of the run, such as REGULAR for a run in a scheduled sync or RESYNC for an object re-sync.
run_errorobjectError 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: