List sync jobs

Lists sync jobs for an app with optional filters. Use running=true to only list pending and processing syncs.

GET/v1/apps/{app_id}/syncs
API
Integrations
Updated
Apr 26, 2026

integrations-api:GET:/v1/apps/{app_id}/syncs

Lists sync jobs for an app with optional filters. Use running=true to only list pending and processing syncs.

API ownership

  • API family: Integrations API
  • Best for: Integration records, setup verification, app and integration stats, and sync job operations.
  • Do not use from: Direct catalog, media, order, identity, or storefront reads and writes.
  • Guide route: /integrations

The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation.

Operation

  • Method: GET
  • Path: /v1/apps/\{app_id\}/syncs
  • Summary: List sync jobs
  • Description: Lists sync jobs for an app with optional filters. Use running=true to only list pending and processing syncs.
  • OpenAPI contract: integrations-api
  • Operation ID: Not documented in the OpenAPI contract.

Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID.

Parameters10 parameters
NameInRequiredTypeDescription
app_idpathYesstringApp UUID
statusqueryNostringComma separated statuses: pending,processing,completed,failed,cancelled
runningqueryNobooleanOnly return pending and processing sync jobs
integration_idqueryNostringIntegration UUID
created_afterqueryNostringRFC3339 lower bound for created_at
created_beforequeryNostringRFC3339 upper bound for created_at
pagequeryNointegerPage number, default 1
per_pagequeryNointegerItems per page, default 20, max 50
include_jobqueryNobooleanInclude the Kubernetes job state for each sync
include_progressqueryNobooleanInclude event progress for each sync
Request bodyNo documented body

Not documented in the OpenAPI contract.

Responses3 statuses
StatusDescriptionContent
200Sync jobsapplication/json
400Invalid requestapplication/json (object)
500Internal server errorapplication/json (object)

200 - object

Schema

PropertyTypeRequiredDetails
dataobjectNo-
successbooleanNo-
Sync Job List
PropertyTypeRequiredDetails
has_morebooleanNo-
pageintegerNo-
per_pageintegerNo-
syncsobject[]No-
totalintegerNo-
Sync Job
PropertyTypeRequiredDetails
app_idstringNo-
channel_idstringNo-
completed_atstringNo-
created_atstringNo-
error_messagestringNo-
failed_atstringNo-
idstringNo-
integration_idstringNo-
integration_typeenum("brink", "storyblok", "voyado", "webhooks", "google-retailer", "klaviyo", "klaviyo-catalog", "voyado-catalog", "nosto", "centra", "shopify", "mock-integration", "ai", "invio", "gamifiera", "sitoo")No-
jobobjectNo-
k8s_job_namestringNo-
progressobjectNo-
started_atstringNo-
statusstringNo-
updated_atstringNo-
{
  "data": {
    "has_more": false,
    "page": 0,
    "per_page": 0,
    "syncs": [
      {
        "app_id": "string",
        "channel_id": "string",
        "completed_at": "string",
        "created_at": "string",
        "error_message": "string",
        "failed_at": "string",
        "id": "string",
        "integration_id": "string",
        "integration_type": "brink",
        "job": {
          "active": null,
          "completion_time": null,
          "failed": null,
          "message": null,
          "name": null,
          "namespace": null,
          "pod_name": null,
          "retries": null,
          "start_time": null,
          "status": null,
          "succeeded": null
        },
        "k8s_job_name": "string",
        "progress": {
          "completed": null,
          "failed": null,
          "pending": null,
          "processing": null,
          "toBeRetried": null,
          "total": null
        },
        "started_at": "string",
        "status": "string",
        "updated_at": "string"
      }
    ],
    "total": 0
  },
  "success": false
}

400 - object

Error

PropertyTypeRequiredDetails
detailsstringNo-
errorstringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": "string",
  "error": "string",
  "success": false
}

500 - object

Error

PropertyTypeRequiredDetails
detailsstringNo-
errorstringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": "string",
  "error": "string",
  "success": false
}

Contract identity

Use these fields to confirm you are implementing the intended endpoint contract.

  • API family: Integrations API
  • Method: GET
  • Path: /v1/apps/\{app_id\}/syncs
  • Operation ID: Not documented in the OpenAPI contract.
  • OpenAPI tag: Sync
  • OpenAPI summary: List sync jobs

List sync jobs

# List sync jobs Lists sync jobs for an app with optional filters. Use running=true to only list pending and processing syncs.
GET /v1/apps/{app_id}/syncs
Purpose

Lists sync jobs for an app with optional filters.

Required inputs

app_id path

Primary response

200 ยท Sync jobs

Operation key

integrations-api:GET:/v1/apps/{app_id}/syncs

## API ownership - API family: Integrations API - Best for: Integration records, setup verification, app and integration stats, and sync job operations. - Do not use from: Direct catalog, media, order, identity, or storefront reads and writes. - Guide route: [/integrations](/integrations) The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation. ## Operation - Method: `GET` - Path: `/v1/apps/{app_id}/syncs` - Summary: List sync jobs - Description: Lists sync jobs for an app with optional filters. Use running=true to only list pending and processing syncs. - OpenAPI contract: integrations-api - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `integrations-api:GET:/v1/apps/{app_id}/syncs` Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID. ## Parameters | Name | In | Required | Type | Description | | --- | --- | --- | --- | --- | | app_id | path | Yes | string | App UUID | | status | query | No | string | Comma separated statuses: pending,processing,completed,failed,cancelled | | running | query | No | boolean | Only return pending and processing sync jobs | | integration_id | query | No | string | Integration UUID | | created_after | query | No | string | RFC3339 lower bound for created_at | | created_before | query | No | string | RFC3339 upper bound for created_at | | page | query | No | integer | Page number, default 1 | | per_page | query | No | integer | Items per page, default 20, max 50 | | include_job | query | No | boolean | Include the Kubernetes job state for each sync | | include_progress | query | No | boolean | Include event progress for each sync | ## Request body Not documented in the OpenAPI contract. ## Responses | Status | Description | Content | | --- | --- | --- | | 200 | Sync jobs | application/json | | 400 | Invalid request | application/json (object) | | 500 | Internal server error | application/json (object) | ### 200 - object #### Schema | Property | Type | Required | Details | | --- | --- | --- | --- | | `data` | object | No | - | | `success` | boolean | No | - | ##### Sync Job List | Property | Type | Required | Details | | --- | --- | --- | --- | | `has_more` | boolean | No | - | | `page` | integer | No | - | | `per_page` | integer | No | - | | `syncs` | object[] | No | - | | `total` | integer | No | - | ##### Sync Job | Property | Type | Required | Details | | --- | --- | --- | --- | | `app_id` | string | No | - | | `channel_id` | string | No | - | | `completed_at` | string | No | - | | `created_at` | string | No | - | | `error_message` | string | No | - | | `failed_at` | string | No | - | | `id` | string | No | - | | `integration_id` | string | No | - | | `integration_type` | enum("brink", "storyblok", "voyado", "webhooks", "google-retailer", "klaviyo", "klaviyo-catalog", "voyado-catalog", "nosto", "centra", "shopify", "mock-integration", "ai", "invio", "gamifiera", "sitoo") | No | - | | `job` | object | No | - | | `k8s_job_name` | string | No | - | | `progress` | object | No | - | | `started_at` | string | No | - | | `status` | string | No | - | | `updated_at` | string | No | - |
Generated example (synthetic) ```json { "data": { "has_more": false, "page": 0, "per_page": 0, "syncs": [ { "app_id": "string", "channel_id": "string", "completed_at": "string", "created_at": "string", "error_message": "string", "failed_at": "string", "id": "string", "integration_id": "string", "integration_type": "brink", "job": { "active": null, "completion_time": null, "failed": null, "message": null, "name": null, "namespace": null, "pod_name": null, "retries": null, "start_time": null, "status": null, "succeeded": null }, "k8s_job_name": "string", "progress": { "completed": null, "failed": null, "pending": null, "processing": null, "toBeRetried": null, "total": null }, "started_at": "string", "status": "string", "updated_at": "string" } ], "total": 0 }, "success": false } ```
### 400 - object #### Error | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string | No | - | | `error` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": "string", "error": "string", "success": false } ``` ### 500 - object #### Error | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string | No | - | | `error` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": "string", "error": "string", "success": false } ``` ## Contract identity Use these fields to confirm you are implementing the intended endpoint contract. - API family: Integrations API - Method: `GET` - Path: `/v1/apps/{app_id}/syncs` - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `integrations-api:GET:/v1/apps/{app_id}/syncs` - OpenAPI tag: Sync - OpenAPI summary: List sync jobs