Skip to main content

Removal

Remove one listing with a reason — sold, rented, withdrawn, expired or error — and what each reason does.

Removal is a POST with a JSON body (a DELETE would have to carry its data in the query, and many HTTP stacks drop DELETE bodies):

http
POST /api/partners/v1/connections/9b1d6c2e-4f3a-4c8e-9a71-2d5e8f0b3c44/listings/REAA-12345/remove
json
{ "reason": "sold" }

Answer:

json
200 { "item": { "position": 0, "external_id": "REAA-12345", "result": "removed", "candidate_id": "c7e…", "listing_id": "e19…", "public_url": null, "failure_code": null, "details": null, "warnings": [] } }

With the reference client: node nk-partner.mjs remove <connection> REAA-12345 --reason=sold. Reference: remove.

Reasons#

reason Sale listing Rental listing
sold marked sold —
rented — marked rented
withdrawn archived archived
error archived archived
expired expired expired

Moderation is never touched by a removal.

When it takes effect#

  • Never went live (only staged): removed at once.
  • Otherwise: recorded now, applied by the next worker tick, within a minute. The webhook item.removed carries the final status (sold, rented, deleted or expired).

Errors#

  • An external_id we never staged on this connection → 404 listing_not_found.
  • A paused or revoked connection → 409 connection_not_active.

Coming back#

Removing is not final. Pushing the same external_id again with state: "active" revives the listing — unless staff rejected or removed it in moderation (moderation_blocked). A removed listing never answers unchanged.

To remove many listings at once — everything your export no longer contains — use Reconcile.

Last updated