Skip to content
Menu
All API groups

Imports

CSV / Excel / Google Sheets / feed imports.

5 endpoints.

GET/v1/imports

List imports

Needs a key or a dashboard session

Parameters

NameInTypeRequiredDescription
cursorquerystring | nullnomax length 200
limitqueryintegernodefault 20 · min 1 · max 200

Responses

POST/v1/imports

Start an import from a URL (Google Sheets, Google Merchant feed)

Needs a key or a dashboard session

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstring | nullnoUnique per logical write (8-255 chars). Retries with the same key are safe. · pattern ^[A-Za-z0-9_\-:.]{8,255}$

Request body application/json ImportCreate

NameTypeRequiredDescription
source"csv" | "xlsx" | "gsheet" | "feed_google"yes
urlstring | nullnoGoogle Sheets or feed URL.max length 2048
mappingmap<string, string>noColumn -> product field, e.g. {"Product name": "name.ar", "Price": "price", "Colour": "attributes.Color", "Notes": "ignore"}. Columns without a mapping are matched by name.
dry_runbooleannodefault false
localestring | nullnoLanguage of untagged text (a plain `name` column, feed titles). Default: the store's default language.pattern ^[a-z]{2}$
repeat"hourly" | "daily" | nullnoURL imports only: run the same import again every hour or every day.

Responses

POST/v1/imports/upload

Start an import from a CSV or Excel file

Needs a key or a dashboard session

Parameters

NameInTypeRequiredDescription
Idempotency-Keyheaderstring | nullnoUnique per logical write (8-255 chars). Retries with the same key are safe. · pattern ^[A-Za-z0-9_\-:.]{8,255}$

Request body multipart/form-data Body_imports_upload

NameTypeRequiredDescription
filestringyes
source"csv" | "xlsx" | "gsheet" | "feed_google"yes
dry_runbooleannodefault false
mappingstring | nullnoJSON object, column -> product field (see ImportCreate).max length 20000
localestring | nullnopattern ^[a-z]{2}$

Responses

GET/v1/imports/{import_id}

Get one import

Needs a key or a dashboard session

Parameters

NameInTypeRequiredDescription
import_idpathstringyes

Responses

PATCH/v1/imports/{import_id}

Change or stop a repeating URL import

Needs a key or a dashboard session

Parameters

NameInTypeRequiredDescription
import_idpathstringyes
Idempotency-Keyheaderstring | nullnoUnique per logical write (8-255 chars). Retries with the same key are safe. · pattern ^[A-Za-z0-9_\-:.]{8,255}$

Request body application/json ImportUpdate

NameTypeRequiredDescription
repeat"hourly" | "daily" | nullno

Responses

Data shapes on this page

Page_ImportOut_

NameTypeRequiredDescription
dataImportOut[]yes
next_cursorstring | nullno
totalinteger | nullnoPresent when cheap to count.

ImportOut

NameTypeRequiredDescription
idstringyes
source"csv" | "xlsx" | "gsheet" | "feed_google" | "connector" | "api"yes
status"queued" | "running" | "succeeded" | "failed" | "canceled"yes
statsmap<string, integer>no
errorsItemError[]no
created_atstring (date-time)yes
finished_atstring (date-time) | nullno
jobJob | nullno
source_urlstring | nullno
filenamestring | nullno
localestring | nullno
dry_runbooleannodefault false
repeat"hourly" | "daily" | nullno
next_run_atstring (date-time) | nullno
parent_idstring | nullnoThe repeating import that started this run.
started_atstring (date-time) | nullno

ItemError

NameTypeRequiredDescription
idstring | nullno
indexintegeryes
codestringyes
messagestringyes

Job

A row of the shared `jobs` table. Poll GET /v1/jobs/{id} until status is terminal.

NameTypeRequiredDescription
idstringyes
kind"reindex" | "import" | "sync" | "translate_backfill" | "translate_writeback" | "export" | "data_export" | "data_delete" | "embed" | "synonym_mining"yes
status"queued" | "running" | "succeeded" | "failed" | "canceled"yes
progressnumbernodefault 0 · min 0 · max 1
created_atstring (date-time)yes
started_atstring (date-time) | nullno
finished_atstring (date-time) | nullno
resultobject | nullno
errorstring | nullno

ImportCreate

For file imports send multipart/form-data with `file` + `source`; for URLs send this JSON.

NameTypeRequiredDescription
source"csv" | "xlsx" | "gsheet" | "feed_google"yes
urlstring | nullnoGoogle Sheets or feed URL.max length 2048
mappingmap<string, string>noColumn -> product field, e.g. {"Product name": "name.ar", "Price": "price", "Colour": "attributes.Color", "Notes": "ignore"}. Columns without a mapping are matched by name.
dry_runbooleannodefault false
localestring | nullnoLanguage of untagged text (a plain `name` column, feed titles). Default: the store's default language.pattern ^[a-z]{2}$
repeat"hourly" | "daily" | nullnoURL imports only: run the same import again every hour or every day.

Body_imports_upload

NameTypeRequiredDescription
filestringyes
source"csv" | "xlsx" | "gsheet" | "feed_google"yes
dry_runbooleannodefault false
mappingstring | nullnoJSON object, column -> product field (see ImportCreate).max length 20000
localestring | nullnopattern ^[a-z]{2}$

ImportUpdate

Change a repeating URL import. `repeat: null` stops it.

NameTypeRequiredDescription
repeat"hourly" | "daily" | nullno