Listings

Remove listing

Removes local data or explicitly requests remote removal.

DELETE
/v1/listings/{listingId}

Remove listing

  • MockDevelopment only
  • Mercado LivreNot supported
  • MagaluPlanned
  • AmazonPlanned
  • TikTok ShopPlanned
  • ShopeePlanned

This DELETE has two independent decisions: what to do with the local record and whether to make a remote order. Choose publication=keep to remove only the local Listing; it never touches the marketplace. It is the right choice when you want to stop managing an external offer without unpublishing it.

With publication=auto (the default), an offer that already has externalMarketplaceId receives a remote removal only when outbound is enabled. With publication=delete, you explicitly request remote removal whenever an external identity exists. In both remote cases, the response is 202 with a Job; the local record is removed only after the worker confirms the operation.

A deletion or closure made in the marketplace never triggers a local DELETE by itself. The Listing remains for audit with the received external status, and your application is notified by webhook. Product and Variant are not removed by any of these choices.

Authorization

api_key
headerAuthorizationBearer <token>

API key (mk_...)

Path Parameters

listingId*string
Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid

Query Parameters

publication?string

Whether deletion stays local, follows sync policy, or must remove remotely.

Default"auto"
Value in"auto""delete""keep"

Response Body

A remote removal job when publication=delete, or when auto finds an outbound-enabled published listing.

application/json
  1. response

A job: an operation that runs in the background, tracked by id.

id*string

Opaque unique identifier of the job, generated by the API. Use it in the /v1/jobs/{id} routes.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
sellerId*|

The seller the job works for. null for a job of the whole account.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
type*string

What the job does. connection.sync: first sync of a new connection. listing.publish and listing.remove: publish a listing to the marketplace or remove it there. listing.import and listing.reconcile: read the listings of a connection from the marketplace into their observed state. inventory.publish: send stock quantities to the marketplace. marketplace_product.publish: publish the content of a marketplace product alone, without any offer field. order.import and order.reconcile: read the orders of a connection from the marketplace into marketapi.

Value in"connection.sync""listing.publish""listing.remove""listing.import""listing.reconcile""inventory.publish""marketplace_product.publish""order.import""order.reconcile"
status*string

State of the job. queued: waiting. running: in progress. completed: every item succeeded. partial: some items failed. failed: no item succeeded.

Value in"queued""running""completed""partial""failed"
total*integer

Items in the job.

Range0 <= value <= 9007199254740991
processed*integer

Items already processed, succeeded or failed.

Range0 <= value <= 9007199254740991
succeeded*integer

Items that succeeded.

Range0 <= value <= 9007199254740991
failed*integer

Items that failed.

Range0 <= value <= 9007199254740991
input*

What the job was asked to do, by type. connection.sync, listing.import and listing.reconcile: { connectionId }. listing.publish: { listingId, mode }. listing.remove: { listingId, publication }. inventory.publish: { source }. marketplace_product.publish: { marketplaceProductId, mode }. order.import: { connectionId, placedFrom, placedTo }, with the period resolved to instants even when the request gave none. order.reconcile: { connectionId }.

result*|

Summary of the outcome, when the type has one. null otherwise.

error*|

Why the job failed, when it failed as a whole. null otherwise; the error of each item is in its items.

startedAt*|

When it started running, in ISO-8601 (UTC). null while queued.

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
finishedAt*|

When it finished, in ISO-8601 (UTC). null while queued or running.

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
createdAt*string

When the job was created, in ISO-8601 (UTC).

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
updatedAt*string

When the job last changed, in ISO-8601 (UTC).

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
curl -X DELETE "https://example.com/v1/listings/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "id": "7c6b5a49-3827-4615-a0b9-c8d7e6f5a4b3",  "sellerId": "3d1c8a52-7f0e-4b0a-8a65-9c1b2f6d7e01",  "type": "connection.sync",  "status": "completed",  "total": 1,  "processed": 1,  "succeeded": 1,  "failed": 0,  "input": {    "connectionId": "9a1b2c3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d"  },  "result": null,  "error": null,  "startedAt": "2026-10-06T14:32:01.000Z",  "finishedAt": "2026-10-06T14:32:01.500Z",  "createdAt": "2026-10-06T14:32:00.000Z",  "updatedAt": "2026-10-06T14:32:01.500Z"}