Skip to main content
The bulk operations system lets you move large volumes of product data in and out of Synq without writing per-record API loops. A bulk job is a named, asynchronous task — identified by a job_type string — that accepts a JSON payload describing the work to be done (e.g., a list of products to import or a set of updates to apply). Jobs are created synchronously but processed asynchronously; poll the list endpoint to track their status. The export endpoint queues an asynchronous catalog export to Cloud Storage. The validation endpoint surfaces unresolved data quality issues flagged by the system against your products.
All requests require the standard headers: Authorization: Bearer <token>, X-Tenant-ID, and X-Org-ID.

Bulk jobs

Bulk import workflow

1

Prepare your payload

Structure your product data as a JSON array. Each item should contain at minimum a title. Include sku, description, category, and brand fields for better catalog quality scores.
2

Create the bulk job

POST your payload to the bulk jobs endpoint. The API validates that payload is valid JSON, creates the job with status PENDING, and returns the job record immediately.
3

Store the job ID

From the response, save the id field. You need it to poll for status.
4

Poll for completion

List bulk jobs filtered by type=BULK_IMPORT and check the status and processed_items fields. Poll at a reasonable interval (every 5–30 seconds depending on job size).
5

Handle completion or failure

When status reaches COMPLETED, all items have been processed. If status is FAILED, check validation issues at GET /api/v1/pim/validation to identify which records caused errors.

Create a bulk job

Request body
string
required
The type of operation to perform. Supported values: BULK_IMPORT, BULK_UPDATE, BULK_DELETE.
array | object
required
A valid JSON structure describing the work. For imports and updates, pass an array of product objects. For deletions, pass an array of product IDs. The value must be valid JSON.
Response 200 OK
string
Initial status is always PENDING. Transitions to PROCESSING, then COMPLETED or FAILED.
string
The submitted payload stored as a JSON string. This is the raw content you sent in the payload field of the request.
integer | null
Total number of records in the job. Populated once the job starts processing.
integer | null
Number of records successfully processed so far. Use alongside total_items to calculate progress percentage.

List bulk jobs

Retrieve bulk jobs filtered by type, ordered by most recently created first.
Query parameters
string
Filter by job_type. Defaults to BULK_UPDATE if omitted. Pass BULK_IMPORT or BULK_DELETE as needed.
Response 200 OK

Export products

Queue an asynchronous export of your entire product catalog. When the export completes, the file is placed in Cloud Storage and you are notified (via webhook or email, depending on your tenant configuration).
Response 202 Accepted
The export endpoint returns 202 Accepted immediately — the actual file generation happens asynchronously. Do not poll this endpoint; wait for the delivery notification instead.

Validation issues

Synq continuously evaluates your catalog against data quality rules — missing descriptions, duplicate SKUs, invalid barcodes, low data quality scores — and records each finding as a validation issue. Use this endpoint to retrieve all unresolved issues for your tenant so your team can triage and fix them.
Response 200 OK
string
Machine-readable code identifying the class of issue (e.g., MISSING_DESCRIPTION, DUPLICATE_SKU, INVALID_BARCODE).
string
Either WARNING (catalog quality degradation) or ERROR (blocks publishing or export).
boolean
The endpoint returns only issues where resolved = false. Once your team fixes the underlying data, the issue is automatically resolved and disappears from this list.
ERROR-severity issues may block products from being included in exports or published to sales channels. Resolve all ERROR issues before triggering an export job.

PIM audit log

Synq records every create, update, and delete operation performed on PIM resources as an immutable audit event. Retrieve the most recent 100 events for your tenant to track who changed what and when.
Response 200 OK
string
Email address of the user who performed the action.
string
Description of the operation performed (e.g., product.created, variant.updated).
string
The type of resource that was affected (e.g., product, variant, brand).
string
UUID of the specific resource that was affected.