---
title: "Composite non-LLM image verification"
method: POST
path: "/api/v1/verify-image-match"
tags: ["Verification"]
---

# Composite non-LLM image verification

`POST /api/v1/verify-image-match`

## Request

- Base URL: `https://api.tuteliq.ai`
- URL: `https://api.tuteliq.ai/api/v1/verify-image-match`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Run a configurable set of forensic checks over a single image in one call: face matching against a reference image, age estimation, NSFW/skin-exposure forensics, and synthetic-image detection (deep-image classifier + C2PA provenance). All checks are deterministic/model-based — no LLM ever sees the image. Images are processed in memory only and never stored.

## Request body

- object
  - `image` string, required: The image to verify, base64-encoded (max 15MB decoded). Processed transiently — never stored.
  - `reference_image` string: Optional reference image (base64) for the face_match check. Without it, face_match is skipped even when requested.
  - `checks` string[]: Subset of checks to run. Defaults to all of: face_match, age, forensic, synthetic.
  - `external_id` string: Your unique identifier (e.g. message ID, content ID) for correlating Tuteliq results with your own system. Echoed back in the response and included in webhook payloads so you can match alerts to the original content.
  - `customer_id` string: Your end-customer identifier for multi-tenant / B2B2C scenarios. If you serve multiple customers (schools, apps, brands) from a single API key, set this to route webhook alerts to the correct customer. Echoed back in the response and included in webhook payloads as "customerId".
  - `metadata` object: Arbitrary key-value pairs for additional context (e.g. { "channel": "discord", "region": "eu" }). Stored with the detection result, echoed in the response, and included in webhook payloads. Maximum 20 properties.
  - `incident_moderation_enabled` boolean: Per-call override of your account incident logging setting. When set, it takes precedence for THIS request: true forces the incident to be persisted, false suppresses persistence. Omit to use your account default (which itself defaults to enabled). Useful to suppress logging for test traffic or to opt specific calls in or out.

## Response `200`

Default Response

- object
  - `schema_version` string: Response schema version (currently "1.0")
  - `checks_run` string[]: The checks that actually ran (face_match is excluded when no reference_image was provided)
  - `face_match` object
    - `matched` boolean: Whether the two faces match
    - `similarity` number: Face similarity (0.0-1.0)
    - `reason` string: Why matching failed (e.g. "no_face_detected")
  - `age` object, nullable: Age estimate for the primary image, or null when no face was detected
    - `estimated_age` number: Estimated age of the detected face in years
    - `confidence` number: Face-detection confidence (0.0-1.0)
  - `forensic` object
    - `nsfw` boolean: Whether the image was classified as explicit
    - `nsfw_confidence` number: NSFW classifier score (0.0-1.0)
    - `skin_exposure_level` 'low' | 'moderate' | 'high': Coarse skin-exposure level
  - `synthetic` object
    - `is_synthetic` boolean: Deep-image classifier verdict (absent when the service is unavailable)
    - `synthetic_probability` number: Deep-image synthetic probability (0.0-1.0)
    - `has_c2pa` boolean: A C2PA / Content Credentials manifest is embedded
    - `is_ai_generated` boolean: The C2PA manifest declares AI generation
  - `credits_used` number: Credits charged for this call
  - `processing_ms` number: Total processing time in milliseconds
  - `external_id` string: Echo of the external_id you provided in the request
  - `customer_id` string: Echo of the customer_id you provided in the request
  - `metadata` object: Echo of the metadata you provided in the request

## Changes

- **2026-10-19** `8490332e0031`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/tuteliq/apis/tuteliq-api/changes/api/v1/verify-image-match/post.md)

---

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