Export listings
GET
/listingsOne page of the Seller’s full stored inventory, for audit and reconciliation. Keyset-paginated on `(updated_at, id)` ascending; follow `nextCursor` until it is null.
When to use
Use this operation to export listings.
Endpoint
GET /listings
| Environment | Base URL |
|---|---|
| Sandbox | https://api-sandbox.snapcaster.ca/api/v1/marketplace |
| Production | https://api.snapcaster.ca/api/v1/marketplace |
marketplaceApiKey-http bearer. Seller-scoped Marketplace API key, presented as `Authorization: Bearer mp_{sellerCode}_{hex}`. The `mp_{sellerCode}_` prefix identifies the Seller; the trailing hex is the secret. Generated by the Seller and pasted into its Platform.
Request
| Field | In | Type | Constraints | Meaning | Example |
|---|---|---|---|---|---|
limit | query | integer | exclusive minimum: 0; maximum: 1000 | The maximum number of records requested for this page. | 1 (generated) |
cursor | query | string | minimum length: 1 | The opaque continuation token for the next page. | string (generated) |
updated_since | query | string | format: date-time | Return only records updated after this instant. | 2026-01-01T00:00:00.000Z (generated) |
include_deleted | query | string | allowed values: true, false | Whether soft-deleted records are included in the export. | true (generated) |
No request body.
Example
Sandbox is the default. These requests use the contract's canonical field examples.
curl --request GET \ --url 'https://api-sandbox.snapcaster.ca/api/v1/marketplace/listings' \ --header "Authorization: Bearer $MARKETPLACE_API_KEY"Response
200
A page of listings.
{ "success": true, "data": { "items": [ { "skuId": 0, "productId": 0, "matchStatus": "matched", "quantity": 0, "available": 0, "price": 0, "externalRef": "string", "browsable": true, "deletedAt": "string", "updatedAt": "string" } ], "nextCursor": "string" }}| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: true | Whether the operation completed as requested. | true (generated) |
datarequired | object | None | The operation or event payload. | {
"items": [
{
"skuId": 0,
"productId": 0,
"matchStatus": "matched",
"quantity": 0,
"available": 0,
"price": 0,
"externalRef": "string",
"browsable": true,
"deletedAt": "string",
"updatedAt": "string"
}
],
"nextCursor": "string"
} (generated) |
data.itemsrequired | array of object | None | The records included in this page or batch. | [
{
"skuId": 0,
"productId": 0,
"matchStatus": "matched",
"quantity": 0,
"available": 0,
"price": 0,
"externalRef": "string",
"browsable": true,
"deletedAt": "string",
"updatedAt": "string"
}
] (generated) |
data.items[].skuIdrequired | integer | None | Sku Id for the surrounding items item record. | 0 (generated) |
data.items[].productIdrequired | integer | None | Product Id for the surrounding items item record. | 0 (generated) |
data.items[].matchStatusrequired | string | allowed values: matched, unmatched | Match Status for the surrounding items item record. | matched (generated) |
data.items[].quantityrequired | integer | None | On-hand: the pushed quantity, as stored. | 0 (generated) |
data.items[].availablerequired | integer | None | On-hand minus outstanding committed holds, never negative. Derived at read time; with no holds, equals `quantity`. | 0 (generated) |
data.items[].pricerequired | integer | None | Integer minor units (cents) in the Seller’s currency. | 0 (generated) |
data.items[].externalRefrequired | string or null | None | External Ref for the surrounding items item record. | string (generated) |
data.items[].browsablerequired | boolean | None | Whether this Listing currently passes every Browse gate. | true (generated) |
data.items[].deletedAtrequired | string or null | None | Soft-delete timestamp, or null if live. | string (generated) |
data.items[].updatedAtrequired | string | None | Updated At for the surrounding items item record. | string (generated) |
data.nextCursorrequired | string or null | None | Opaque cursor for the next page; null on the last page. | string (generated) |
Errors
| Status | Code | Meaning | Do this |
|---|---|---|---|
| 400 | INVALID_REQUEST | The request failed validation (`INVALID_REQUEST`). | Correct the fields named in the error details, then retry the request. |
| 401 | UNAUTHORIZED | Missing or invalid Marketplace API key (`UNAUTHORIZED`). | Send the Marketplace API key for this Seller as a Bearer token, then retry. |
Related
Operations
Concepts
Changelog
None.
Schema
Full schema details (28 fields)
Parameters
| Field | In | Type | Constraints | Meaning | Example |
|---|---|---|---|---|---|
limit | query | integer | exclusive minimum: 0; maximum: 1000 | The maximum number of records requested for this page. | 1 (generated) |
cursor | query | string | minimum length: 1 | The opaque continuation token for the next page. | string (generated) |
updated_since | query | string | format: date-time | Return only records updated after this instant. | 2026-01-01T00:00:00.000Z (generated) |
include_deleted | query | string | allowed values: true, false | Whether soft-deleted records are included in the export. | true (generated) |
Request
None.
Response 200 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: true | Whether the operation completed as requested. | true (generated) |
datarequired | object | None | The operation or event payload. | {
"items": [
{
"skuId": 0,
"productId": 0,
"matchStatus": "matched",
"quantity": 0,
"available": 0,
"price": 0,
"externalRef": "string",
"browsable": true,
"deletedAt": "string",
"updatedAt": "string"
}
],
"nextCursor": "string"
} (generated) |
data.itemsrequired | array of object | None | The records included in this page or batch. | [
{
"skuId": 0,
"productId": 0,
"matchStatus": "matched",
"quantity": 0,
"available": 0,
"price": 0,
"externalRef": "string",
"browsable": true,
"deletedAt": "string",
"updatedAt": "string"
}
] (generated) |
data.items[].skuIdrequired | integer | None | Sku Id for the surrounding items item record. | 0 (generated) |
data.items[].productIdrequired | integer | None | Product Id for the surrounding items item record. | 0 (generated) |
data.items[].matchStatusrequired | string | allowed values: matched, unmatched | Match Status for the surrounding items item record. | matched (generated) |
data.items[].quantityrequired | integer | None | On-hand: the pushed quantity, as stored. | 0 (generated) |
data.items[].availablerequired | integer | None | On-hand minus outstanding committed holds, never negative. Derived at read time; with no holds, equals `quantity`. | 0 (generated) |
data.items[].pricerequired | integer | None | Integer minor units (cents) in the Seller’s currency. | 0 (generated) |
data.items[].externalRefrequired | string or null | None | External Ref for the surrounding items item record. | string (generated) |
data.items[].browsablerequired | boolean | None | Whether this Listing currently passes every Browse gate. | true (generated) |
data.items[].deletedAtrequired | string or null | None | Soft-delete timestamp, or null if live. | string (generated) |
data.items[].updatedAtrequired | string | None | Updated At for the surrounding items item record. | string (generated) |
data.nextCursorrequired | string or null | None | Opaque cursor for the next page; null on the last page. | string (generated) |
Error 400 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: false | Whether the operation completed as requested. | false (generated) |
errorrequired | object | None | Structured error information returned when the request cannot be completed. | {
"code": "UNAUTHORIZED",
"message": "string"
} (generated) |
error.coderequired | string | allowed values: UNAUTHORIZED, INVALID_REQUEST, UNSUPPORTED_API_VERSION, SELLER_SOURCE_EXCLUSIVE, BATCH_TOO_LARGE, RATE_LIMITED, ORDER_NOT_FOUND, SELLER_NOT_FOUND, INVALID_TRANSITION, CHECKOUT_IDEMPOTENCY_KEY_REUSED, CHECKOUT_MANUAL_SELLER_UNSUPPORTED, CHECKOUT_SELF_PURCHASE_NOT_ALLOWED, CHECKOUT_SELLER_UNAVAILABLE, CHECKOUT_NOT_FOUND, FEATURE_DISABLED | Stable public error code the Platform can branch on. | UNAUTHORIZED (generated) |
error.messagerequired | string | None | A human-readable explanation of the result. | string (generated) |
error.details | unknown | None | Additional structured context for diagnosing the result. | {} (generated) |
Error 401 (application/json)
| Field | Type | Constraints | Meaning | Example |
|---|---|---|---|---|
successrequired | boolean | allowed values: false | Whether the operation completed as requested. | false (generated) |
errorrequired | object | None | Structured error information returned when the request cannot be completed. | {
"code": "UNAUTHORIZED",
"message": "string"
} (generated) |
error.coderequired | string | allowed values: UNAUTHORIZED, INVALID_REQUEST, UNSUPPORTED_API_VERSION, SELLER_SOURCE_EXCLUSIVE, BATCH_TOO_LARGE, RATE_LIMITED, ORDER_NOT_FOUND, SELLER_NOT_FOUND, INVALID_TRANSITION, CHECKOUT_IDEMPOTENCY_KEY_REUSED, CHECKOUT_MANUAL_SELLER_UNSUPPORTED, CHECKOUT_SELF_PURCHASE_NOT_ALLOWED, CHECKOUT_SELLER_UNAVAILABLE, CHECKOUT_NOT_FOUND, FEATURE_DISABLED | Stable public error code the Platform can branch on. | UNAUTHORIZED (generated) |
error.messagerequired | string | None | A human-readable explanation of the result. | string (generated) |
error.details | unknown | None | Additional structured context for diagnosing the result. | {} (generated) |