ShopEazydevelopers
API referenceMerchant API BetaProducts

One import, with its status, progress and the rows it refused

Beta
Credentials
  • OAuth access token
Scopes
listings:read
GET
/v1/merchant/stores/{storeId}/product-imports/{runId}

status is queued, running, then applied, previewed or failed (failure says why, in the merchant's words). rowsDone of totalRows is the progress. errors holds the first 200 rows refused (row is the line in the file, not counting the header); errorsTruncated says there were more, and summary.error is the count. An import the console recorded reads the same.

Access: OAuth scope listings:read; not write-gated.

Authorization

merchantOAuth listings:read
headerAuthorizationBearer <token>

OAuth 2.1 (authorization code + PKCE S256, public clients, dynamic registration) for connected AI apps. Effective power is scopes granted AND the person's role today AND the plan. orders:refund, billing:write and team:write are opt-in on the consent screen. Write implies read for marketing:read and messages:read, so a grant holding marketing:write passes a marketing:read check, and messages:send passes messages:read.

Scope: listings:read

Path Parameters

storeId*string

A store the person can reach. Any other id answers 404, never 403.

runId*string

An import id, from startProductImport or listProductImports.

Response Body

OK

application/json
  1. response
data*
Example Request
curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/product-imports/<runId>' \  -H 'Authorization: Bearer <access_token>'
Example Response
{  "data": {    "id": "string",    "status": "queued",    "dryRun": true,    "fileName": "string",    "totalRows": 0,    "rowsDone": 0,    "summary": {      "create": 0,      "update": 0,      "unchanged": 0,      "error": 0,      "newCategories": [        "string"      ]    },    "errors": [      {        "row": 0,        "message": "string"      }    ],    "errorsTruncated": true,    "profileId": "string",    "failure": "string",    "createdAt": 0,    "startedAt": 0,    "finishedAt": 0  }}