AI Safety & Agents
Tier 3 Ready
POST /v1/content-provenance
Detect C2PA manifests, AI generator EXIF/XMP tags, and stripped metadata in files or headers. Inspect media headers, C2PA / JUMBF manifests, EXIF/XMP metadata, and AI generator signatures (Midjourney, DALL-E, Firefly, Stable Diffusion).
POST /v1/content-provenance){
"ok": true,
"data": {
"verdict": "likely_synthetic_metadata",
"confidence": 0.9,
"detected_mime": null,
"c2pa": {
"jumbf_detected": false,
"manifest_boxes": [],
"claim_generator_hint": null
},
"iptc_digital_source_type": "trainedAlgorithmicMedia",
"detected_generators": [
"Midjourney"
],
"signals": [
{
"category": "iptc_source_type",
"name": "IPTC DigitalSourceType",
"evidence": "http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia",
"confidence": "high"
},
{
"category": "ai_generator_signature",
"name": "Midjourney",
"evidence": "Midjourney",
"confidence": "high"
}
],
"caveats": [
"Unsigned EXIF, XMP, and PNG tEXt/iTXt metadata tags can be stripped by social platforms or modified by end users."
]
},
"meta": {
"request_id": "req_cp_01",
"ms": 1
}
}
curl -X POST "https://api.tinplate.dev/v1/content-provenance" \
-H "Content-Type: application/json" \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
-d '{"metadata_text":"Software: Midjourney 6.1\nDigitalSourceType: http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia"}'import { TinplateClient } from "@tinplate/sdk"; // npm install @tinplate/sdk
const tinplate = new TinplateClient({
rapidApiKey: process.env.RAPIDAPI_KEY!,
});
const { data, meta } = await tinplate.call("/v1/content-provenance", {
"metadata_text": "Software: Midjourney 6.1\nDigitalSourceType: http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia"
});
console.log(`[${meta.ms} ms]`, data);import requests
response = requests.post(
"https://api.tinplate.dev/v1/content-provenance",
headers={
"Content-Type": "application/json",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
},
json={
"metadata_text": "Software: Midjourney 6.1\nDigitalSourceType: http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia"
}
)
print(response.json())const response = await fetch("https://api.tinplate.dev/v1/content-provenance", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
},
body: JSON.stringify({
"metadata_text": "Software: Midjourney 6.1\nDigitalSourceType: http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia"
}),
});
const result = await response.json();
console.log(result);{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tinplate_content_provenance",
"arguments": {
"metadata_text": "Software: Midjourney 6.1\nDigitalSourceType: http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia"
}
}
}POST /v1/content-provenance)| Parameter | Type & Constraints | Description |
|---|---|---|
content_base64optional |
stringmaxLen: 180000 |
Base64-encoded file header or full file bytes (up to ~128 KB) of JPEG, PNG, WebP, PDF, or MP4. |
metadata_textoptional |
stringmaxLen: 131072 |
Optional raw EXIF, XMP, PNG tEXt/iTXt, or JSON metadata dump to inspect alongside or instead of binary bytes. |
data Object Fields (200 OK)| Field | Type | Description |
|---|---|---|
verdict |
"c2pa_synthetic_disclosed" | "c2pa_manifest_present" | "likely_synthetic_metadata" | "no_provenance_signals" |
Field 'verdict' |
confidence |
number |
Field 'confidence' |
detected_mime |
string | null |
Field 'detected_mime' |
c2pa |
object |
Field 'c2pa' |
iptc_digital_source_type |
string | null |
Field 'iptc_digital_source_type' |
detected_generators |
string[] |
Field 'detected_generators' |
signals |
object[] |
Field 'signals' |
caveats |
string[] |
Field 'caveats' |
Release Version: v1.0.7 ·
Last Verified / Benchmarked: 14 November 2026 ·
Latency Note: Sub-millisecond figures measure in-Worker V8 compute time (typical client HTTPS network RTT to the nearest Cloudflare PoP is 15–65 ms) ·
See Full Portfolio Benchmarks & Corpora →
| Plan | Monthly Price | Included Requests | Rate Limit | Max Request Payload | Best For |
|---|---|---|---|---|---|
| BASIC | $0.00 / month | 500 / month (hard limit) | 10 req / min | 64 KB | Evaluation, local development & CI smoke tests |
| PRO | $9.99 / month | 15,000 / month | 60 req / min | 128 KB | Solo developers & production apps |
| ULTRA | $29.99 / month | 100,000 / month | 300 req / min | 256 KB | Growing SaaS & multi-agent pipelines |
| MEGA | $79.99 / month | 500,000 / month | 1,000 req / min | 256 KB | High-volume enterprise workloads |
When metadata is stripped, the API returns an unknown/inconclusive verdict with a metadata_stripped caveat rather than guessing.
Yes, it detects Automatic1111/ComfyUI generation parameters, CFG scale, sampler, and checkpoint tags.
Up to 64 KB on BASIC, 128 KB on PRO, and 256 KB on ULTRA/MEGA (you only need to pass the first 64 KB header slice of a media file).
File headers and metadata are inspected in memory and discarded immediately after the response.
Worker Zero-Logging Guarantee: Cloudflare Workers Observability and invocation logging are disabled in configuration
(observability.enabled = false, head_sampling_rate = 0, invocation_logs = false). Payloads are processed strictly in volatile V8 memory and never logged or stored by Tinplate.
Marketplace Proxies vs. Direct Bearer Key: Requests sent via RapidAPI or Zyla API Hub pass through those marketplaces' proxy infrastructure (subject to their respective privacy policies). Security-sensitive workloads requiring end-to-end zero-intermediary processing can connect directly to https://api.tinplate.dev using a Direct Bearer Key (Authorization: Bearer <API_KEY>).
Read our full Privacy Notice and OpenAPI 3.0.3 JSON Schema.
POST /v1/hallucination-diff
AI Safety & Agents
Fast first filter to catch unsupported numbers, dates, and names in LLM answers vs RAG sources.
POST /v1/agent-action-receipts/issue
AI Safety & Agents
Issue and verify tamper-evident HMAC-signed receipts for autonomous AI agent actions.
POST /v1/robots-llms-analyzer
Developer Utilities
Audit which AI crawlers your robots.txt allows and generate a valid llms.txt file.