---
title: "Was this image made on MemeStack?"
method: POST
path: "/v1/provenance/check"
tags: ["Images"]
---

# Was this image made on MemeStack?

`POST /v1/provenance/check`

## Request

- Base URL: `https://api.memestack.ai`
- URL: `https://api.memestack.ai/v1/provenance/check`
- Auth: none declared

The registry check for AI-generated images (EU AI Act Art. 50 marking): perceptual-hashes the input exactly like reverse image search and compares it with every image generated on MemeStack, of any status except CSAM-rejected, within Hamming distance 24 on the full or the centre-crop hash. A match on an image that is not public (a draft, under review, rejected or classified controversial) confirms that it was generated here without revealing which image. Accepts an HTTPS URL or a data:image/(jpeg|png|webp);base64 URL; same SSRF guard and 8 MB cap as reverse search. Rate limited 10/min/IP. Never cached.

## Request body

- object
  - `url` string, required: HTTPS URL or data: URL of the image to check.

## Response `200`

Whether the image matches one generated on MemeStack; at most 5 matches, nearest first.

- object
  - `generated_on_memestack` boolean, required
  - `matches` object[], required
    - `distance` integer, required: Hamming distance between the hashes (0 = identical; 24 or less = the same image).
    - `created_at` string, date-time, required
    - `image_id` string, uuid: Present only for a public image.
    - `url` string, uri: The image page; present only for a public image.

## Other responses

- `400`: Missing or invalid URL, blocked host, or not a JPEG/PNG/WebP.
- `413`: The image is over 8 MB.
- `429`: Rate limit exceeded (10/min/IP).
- `502`: The hash service failed.

---

[API](https://skmtc.dev/memestack/apis/memestack-api.md) · [All operations](https://skmtc.dev/memestack/apis/memestack-api/llms.txt) · [OpenAPI document](https://skmtc.dev/memestack/apis/memestack-api/revisions/9d3a19565f75?raw)
