POST/api/v4/locations/listings/mark-as-not-duplicate

Mark listing as not a duplicate

Dismisses one or more potential duplicates as false positives so they stop appearing in the duplicates list.

Requires an API key. See Authentication for header format and key rotation.

Parameters

Body

NameTypeRequiredDescription
listingItemIdsarrayrequiredArray of base64-encoded listing item IDs to dismiss as not duplicates. Use the `listingItemId` values from the duplicate-listings endpoints.
locationIdstringoptionalLocation that owns the listing items (base64-encoded Relay ID or raw numeric ID). Scopes the operation to a single location.

Sample request

Ready-to-paste body. Replace placeholder IDs and values with yours.

{
  "locationId": "TG9jYXRpb246MTgwMDI4OQ==",
  "listingItemIds": ["TGlzdGluZ0l0ZW06MjM1OTg0NTA="]
}

Responses

200Listing items dismissed as not duplicates. On failure, `success` is `false` and `errors` describes why.
{
  "data": {
    "markAsNotDuplicate": {
      "success": true,
      "errors": null
    }
  }
}
400Validation error — e.g. an unknown or malformed listing item ID. See the `errors` array (`code`, `message`, `path`).
401Unauthenticated — missing or invalid API key.

Dismisses potential duplicates as false positives. Once dismissed, the items are marked as confirmed non-duplicates and no longer surface in Get duplicate listings for a location or the account-wide rollup. Populate listingItemIds with the listingItemId values from those endpoints.

Use case: clear false positives from the queue

Detection is conservative and will flag legitimate listings that merely look similar (a second valid profile, a franchise sibling, a renamed location). When a reviewer confirms an entry is the correct listing, dismiss it so it stops cluttering the duplicates queue:

{
  "locationId": "TG9jYXRpb246MTgwMDI4OQ==",
  "listingItemIds": ["TGlzdGluZ0l0ZW06MjM1OTg0NTA="]
}

listingItemIds is required and accepts multiple IDs — batch all the false positives for a location into one call. A 200 with success: true confirms the dismissal; success: false or a 400 returns a populated errors array to inspect.

Use case: the inverse of suppression

This endpoint is the counterpart to Mark listing as duplicate and takes the identical body shape — use it to reverse an item that was flagged in error. Both are write operations that count against the account rate limit, so prefer batching over per-item requests.

curl -X POST 'https://listingsapi.com/api/v4/locations/listings/mark-as-not-duplicate' \
  -H "Authorization: API $LISTINGSAPI_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "listingItemIds": "<listingItemIds>",
    "locationId": "<locationId>"
  }'