# Halowerk Image Duplicate Detector

> Halowerk Image Duplicate Detector is a paid API for AI agents from medien.halowerk.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-14).

Compares 2–8 images using three perceptual hashing algorithms (average hash, gradient hash, DCT hash) to detect duplicates and near-duplicates across each pair

## Facts

- Endpoint: POST https://medien.halowerk.com/v1/image-dupe
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-image-duplicate-detector-81d54a64
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_fcBGBbHytJ1Mo45cvRZ1G

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability halowerk-image-duplicate-detector-81d54a64 -d '<json body>'
```

Example prompt: Compare these two product images for me — one from our CDN at https://cdn.example.com/product-v1.jpg and one at https://cdn.example.com/product-v2.jpg — and tell me if they're visually the same using perceptual hashing, even if one was re-encoded or slightly brightened.

## When to prefer this

Choose this endpoint when you need to detect whether images are visually identical or near-identical despite re-encoding, resizing, brightness changes, or minor compression artifacts — scenarios where byte-level comparison would fail. Prefer it over simple hash or checksum tools when resilience to JPEG re-saves, exposure shifts, or format conversions is required. It is ideal for deduplication pipelines, content moderation, asset management, and detecting reused or plagiarized imagery.

## Known failure modes

- Invalid or inaccessible image URL returns an error for that image
- Base64 payload that is not a valid image format causes a decoding error
- Submitting fewer than 2 or more than 8 images falls outside the supported range
- Network timeout fetching a remote image URL
- Unsupported image format (e.g. raw TIFF or proprietary formats) may fail to decode

## How this service works

Takes between two and eight images by URL or inline base64 and compares each pair. Three perceptual hashes are computed, because each fails differently: an average hash over an 8x8 grey image is cheap but moves with brightness, a gradient hash reads the slope between neighbouring pixels and survives exposure changes, and a DCT hash over the low frequencies of a 32x32 grey image is the sturdiest against rescaling and re-encoding.

## Output

Returns pairwise comparison results for all submitted image pairs, including three perceptual hash values (average hash, gradient hash, DCT hash) and similarity scores for each. Indicates whether pairs are likely duplicates based on hash distances, allowing the agent to reason about visual identity independent of file format, brightness shifts, or mild rescaling.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "images": {
   "type": "array",
   "items": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "maxLength": 2048,
      "description": "Public http(s) URL of the image."
     },
     "label": {
      "type": "string",
      "maxLength": 120,
      "description": "Name used in the answer. Defaults to image_1, image_2 …"
     },
     "filename": {
      "type": "string",
      "maxLength": 260
     },
     "content_base64": {
      "type": "string",
      "maxLength": 12000000,
      "description": "The image inline, base64."
     }
    },
    "additionalProperties": false
   },
   "maxItems": 8,
   "minItems": 2,
   "description": "Two to eight images. Each takes either url or content_base64."
  },
  "check_mirror": {
   "type": "boolean",
   "default": false,
   "description": "Also compare against the mirrored image."
  },
  "check_rotations": {
   "type": "boolean",
   "default": false,
   "description": "Also compare against the other image rotated 90, 180 and 270 degrees."
  },
  "phash_threshold": {
   "type": "integer",
   "maximum": 32,
   "minimum": 0,
   "description": "Override the pHash distance below which a pair counts as likely edited. Default 10."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-image-duplicate-detector-81d54a64/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from medien.halowerk.com](https://www.zero.xyz/host/medien.halowerk.com/llms.txt)
