Triggering an import kicks off a background job that runs the supplier’s adapter — discovering product references, hydrating each product’s full data, normalizing it into the hub’s canonical schema, and upserting everything into PostgreSQL. The endpoint accepts the request immediately and returns aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/VisualGraphxLLC/API-HUB/llms.txt
Use this file to discover all available pages before exploring further.
sync_job_id to poll for progress.
Trigger an import
UUID of the supplier. Slugs are not accepted on this endpoint — use the UUID.
Discovery mode. Controls which products the adapter fetches:
| Mode | Behavior |
|---|---|
first_n | Fetch the first limit products from the supplier’s catalog. Use for testing. |
delta | Fetch only products changed since the last last_delta_sync or last_full_sync timestamp. Falls back to 2000-01-01 if no prior sync exists. |
full_sellable | Fetch the complete sellable catalog. May take hours for large suppliers. Used by the weekly cron. |
explicit_list | Fetch specific products by supplier SKU. Requires explicit_list to be provided. |
closeouts | Fetch products marked as closeout by the supplier. Used by the monthly cron. |
Maximum number of products to fetch. Only used by
first_n mode. Accepted range: 1–10000.List of supplier SKUs to import. Required when
mode is explicit_list.202 Accepted
ID of the created sync job. Use this to poll
GET /api/sync-jobs/{id} for status.Echoes the supplier UUID from the path.
Discovery mode that was accepted.
UTC timestamp when the job was accepted. The actual import starts asynchronously.
| Status | Detail |
|---|---|
404 Not Found | Supplier not found |
409 Conflict | "supplier 'SanMar' has no adapter_class set; configure one before importing" — adapter_class is null |
409 Conflict | "import already running for supplier 'SanMar' mode 'first_n' (job ...)" — a pending or running job already exists for this supplier + mode combination |
422 Unprocessable Entity | mode=explicit_list with no explicit_list provided |
Only one import per supplier + mode combination can run at a time. Starting a
delta import while full_sellable is running is allowed — they are different modes. Starting two delta imports for the same supplier will return 409.List sync jobs for a supplier
Returns recent sync jobs for a specific supplier, ordered bystarted_at descending.
UUID of the supplier.
Maximum number of jobs to return.
200 OK — array of SyncJobRead
Unique job identifier.
Format:
import:{mode} — e.g., import:first_n, import:delta, import:full_sellable.Job lifecycle status:
pending, running, success, partial_success, or failed.Total products discovered by the adapter’s
discover() call.Products successfully normalized and upserted.
Products that errored during hydration or normalization.
Running count updated during the import. Equal to
success_count + failed_count when complete.JSONB array of per-product error details. Populated when individual products fail.
The discovery mode string echoed from the import request.
Polling pattern
After triggering an import, poll the global sync-job endpoint until the status reaches a terminal state:success, partial_success, and failed. The n8n cron workflows use this same pattern internally.