List data sources

get/v1/datasets/{datasetId}/sources

Returns the data sources attached to a dataset, newest first.

Each source is decorated with sync.lastStats — the counters from its most recent completed or failed sync run — so you can render a status table without fetching logs. A source that has never finished a sync reports all zeros.

An unknown datasetId returns 404. A dataset with no sources returns an empty list.

Private keyapi.v1.datasets.sources.listNo demo

Path parameters

1
datasetIdstring (uuid)required

The dataset whose sources to list.

Query parameters

2
pageinteger

1-based page number. Values below 1 or non-numeric values fall back to 1.

default: 1min: 1
limitinteger

Sources per page. Clamped to the range 1–100; non-numeric values fall back to 20.

default: 20min: 1max: 100

Response

200The requested page of sources.
successbooleanrequired

Always true on a 2xx response.

array<DataSource>required

Sources on this page, newest first. Each carries sync.lastStats.

sourceIdstring (uuid)required

Unique identifier of the source. Generated on create.

e.g. "8a4d2f1e-3c5b-4e6a-9d7f-2b1c3d4e5f6a"
datasetIdstring (uuid)required

The dataset this source feeds.

e.g. "3f1c2a9e-6b7d-4c1e-9a2b-1d4e5f6a7b8c"
organizationIdstring (uuid)required

The organization that owns the source.

e.g. "5b7e9c1a-2d4f-4a6b-8c1d-9e2f3a4b5c6d"
typestringrequired

Connector type. shopify-api reads a Shopify storefront's public products.json.

One ofshopify-api
statusstringrequired

active sources are picked up by the scheduler and accept manual sync jobs. inactive sources are ignored by the scheduler and reject manual jobs.

One ofactiveinactive
objectrequired

Scheduling state.

objectrequired

Connector configuration.

createdAtstring (date-time)required

When the source was created.

e.g. "2026-08-01T14:22:09.101Z"
updatedAtstring (date-time)required

When the source was last modified, including scheduler updates to sync.previous.

e.g. "2026-09-11T03:00:12.420Z"
totalintegerrequired

Total number of sources on the dataset.

pageintegerrequired

The page that was returned (1-based).

limitintegerrequired

Page size that was applied after clamping.

Errors

19

Every error is JSON with a single error string unless noted. Match on the status code; the message is for humans.

401
Organization not found. Please check the organizationId.

The organization that owns the key no longer exists.

404
Dataset not found for this organization.

No dataset with that datasetId belongs to the organization that owns the key.

curl -X GET "https://stylor.ai/api/v1/datasets/YOUR_DATASET_ID/sources" \
  -H "Authorization: Bearer $STYLOR_API_KEY"
Response · 200
{
  "success": true,
  "sources": [
    {
      "sourceId": "8a4d2f1e-3c5b-4e6a-9d7f-2b1c3d4e5f6a",
      "datasetId": "3f1c2a9e-6b7d-4c1e-9a2b-1d4e5f6a7b8c",
      "organizationId": "5b7e9c1a-2d4f-4a6b-8c1d-9e2f3a4b5c6d",
      "type": "shopify-api",
      "status": "active",
      "sync": {
        "period": 1440,
        "previous": "2026-09-11T03:00:12.418Z",
        "lastStats": {
          "retrieved": 1284,
          "added": 12,
          "updated": 37,
          "archived": 3,
          "failed": 0
        }
      },
      "config": {
        "endpoint": "https://example-store.myshopify.com/products.json",
        "disableGenerativeAssets": true
      },
      "createdAt": "2026-08-01T14:22:09.101Z",
      "updatedAt": "2026-09-11T03:00:12.420Z"
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 20
}