API ReferenceListings

Publish, delist, resync or retry up to 100 listings in one call

POST /rest/v1/listings/batch

POST
/listings/batch

One action on up to 100 (product, channel account) pairs. Mix products and accounts freely. Tracked as ONE operation (listing.batch_<action>) with one result per pair; subscribe to operation.completed instead of polling.

Every pair is decided on its own, with the same rules as the single endpoints. A bad pair never fails the batch:

  • publish: skipped (already_listed) if a live or in-progress listing exists; failed (photo_required_for_channel) without images. On eBay, imported products whose eBay listing has ended are relisted.

  • delist: skipped (already_delisted); failed for imported/linked listings (listing_not_delistable), listings still in progress (listing_operation_in_progress) or missing (listing_not_found). A delist asks for the two-step confirmation, counting only the listings that would really end; when none would, it answers the per-pair outcomes directly.

  • resync: re-pushes the product to the channel (listed, imported or error listings).

  • retry: re-runs listings in error; anything else is skipped (not_in_error). Target the exact failure with GET /listings?error_contains=... first.

Unknown products / accounts fail per pair (product_not_found, channel_not_connected). results come back in the order of items, each one repeating the product_id and channel_account_id you sent, unknown ones included. On a trial store, publish and retry pairs beyond the 10-listings-per-channel-account allowance fail with trial_publish_limit. A job the channel queue could not start fails with not_started instead of hanging. Only malformed requests (bad action, >100 items, duplicate pairs) are rejected with 422. Requires listings:write.

AuthorizationBearer <token>

Authorization: Bearer nbl_live_... (or nbl_test_... for test mode). Test-mode writes are validated and simulated but never persisted and never touch channels; simulated results are marked simulated.

In: header

Header Parameters

Idempotency-Key?string

Unique client-generated key (max 255 chars), stored 24h.

Lengthlength <= 255
Nembol-Confirmation?string

The one-time token from a 409 confirmation_required answer, to confirm an irreversible action (repeat the same request with it, within 10 minutes).

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/listings/batch" \  -H "Content-Type: application/json" \  -d '{    "action": "publish",    "items": [      {        "product_id": "prod_66a1f0",        "channel_account_id": "chac_6aa12cab"      },      {        "product_id": "prod_66a1f1",        "channel_account_id": "chac_6aa12cab"      },      {        "product_id": "prod_66a1f2",        "channel_account_id": "chac_6aa12cab"      }    ]  }'
{  "id": "op_8fd2c1",  "object": "operation",  "type": "string",  "status": "pending",  "resource_type": "string",  "resource_id": "string",  "results": [    {      "channel_account_id": "string",      "product_id": "string",      "listing_id": "string",      "sku": "string",      "variant_id": "string",      "previous_price": "19.90",      "price": "19.90",      "status": "pending",      "error": {        "code": "string",        "message": "string",        "details": {}      }    }  ],  "import": {    "source": "channel",    "channel_account_id": "string",    "filters": {},    "warnings": [      "string"    ],    "processed": 0,    "total": 0,    "created": 0,    "updated": 0,    "unchanged": 0,    "linked": 0,    "not_imported": 0,    "requires_attention": 0,    "error": "string",    "undone_at": "2019-08-24T14:15:22Z",    "undo": {      "removed": 0,      "unlinked": 0,      "kept": {        "live_on_a_channel": 0,        "modified_after_import": 0      }    }  },  "created_at": "2019-08-24T14:15:22Z",  "completed_at": "2019-08-24T14:15:22Z"}

Last updated on October 16, 2026

Need help?

Email us and a human replies, usually within one business day.