Skip to main content

Image Rights Clearance

Check images for restricted-category content, brand logos, stock-agency watermarks, content safety signals, AI-generation provenance (C2PA / IPTC metadata), and known-person likeness.

Endpoint

Two request formats are supported. JSON — reference publicly-hosted images by URL:
POST https://api.zebratruth.ai/v1/compliance/check-image
Authorization: Bearer {api_key}
Content-Type: application/json
Idempotency-Key: {uuid}

{
  "imageUrls": ["https://example.com/ad-image.jpg"],
  "jurisdictions": ["us"],
  "platforms": ["instagram"]
}
Multipart — upload image binaries directly (use when you don’t have a public URL):
curl -X POST https://api.zebratruth.ai/v1/compliance/check-image \
  -H "Authorization: Bearer $ZEBRATRUTH_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "image=@./ad-1.png" -F "image=@./ad-2.png" \
  -F "jurisdictions=us" -F "jurisdictions=eu" \
  -F "platforms=instagram"

What It Checks

  1. C2PA / IPTC metadata — Content Credentials, provenance, AI generation markers
  2. Restricted-category content — Six advertising-restricted categories detected from image content: alcohol & spirits, weapons & firearms, tobacco & smoking, gambling, pharmaceuticals, and financial products (incl. crypto / forex / investments). Each carries jurisdiction-aware citations and platform-policy references. Full list and citation matrix in the Restricted Categories guide.
  3. Content safety (ZebraSafety) — adult / violence / racy / medical likelihood signals. Tiered: high-confidence detections produce block checks; medium-confidence produce flag checks for review. Medical content is surfaced as info-only (pharmaceutical-advertising rules may apply but it never auto-blocks).
  4. Brand logo detection — Recognized trademarks (Nike, Coca-Cola, etc.) — flag for review (could be fair use, comparative advertising, or authorized).
  5. Stock-agency watermark detection — Shutterstock, Getty, Adobe Stock, etc. — block (unlicensed stock imagery).
  6. Known-person / celebrity likeness detection — Right-of-publicity flag for recognizable public figures. Surfaces when the celebrity-detection provider is enabled in your deployment; not active in the default ZebraTruth-managed configuration today.
  7. Deterministic risk aggregation — Combines all detections into compliance checks with status (pass | flag | block), severity (info | low | medium | high | critical), and recommendation.

Check Statuses

Not every detection is a hard block. The aggregator maps detections to statuses as follows:
DetectionStatusSeverityRationale
Stock-agency watermark (Shutterstock, Getty, etc.)blockcriticalUnlicensed stock imagery — high copyright liability
Restricted category — high severity (alcohol, weapons, tobacco, gambling)blockhighHard-restricted advertising category in most jurisdictions
Restricted category — medium severity (pharmaceutical, financial-products)flagmediumRegulated advertising — substantiation and disclosure requirements
Content safety — adult/violence/racy at high confidenceblockhighPlatform-policy violation in most ad networks
Content safety — adult/violence/racy at medium confidenceflagmediumReview: may be intentional and permitted in context
Content safety — medical contentpassinfoInformational only — surfaces pharmaceutical-rule applicability
Known-person face (when enabled)flaghighReview: the person may be licensed, a paid spokesperson, or consented
Brand logoflaghighReview: could be nominative fair use, comparative advertising, or authorized
C2PA credentials missingflagmediumRequired by some jurisdictions/platforms (EU AI Act, California SB 942, China Deep Synthesis Provisions, MeitY 2024)
AI-generation markers present (non-C2PA)passinfoAI origin documented in metadata
C2PA credentials presentpassinfoVerified, with generator and assertion details
No AI-generation markers foundflaghighImage’s origin cannot be verified from metadata
Treat flag as “human review needed,” not “reject.” Use the recommendation field to drive the reviewer’s next step.

Per-Jurisdiction Citations

Citations on returned checks are composed from the laws applicable to the jurisdictions you requested. Ask for ["us"] and you get US citations; ask for ["us", "eu", "uk"] and you get a semicolon-joined list covering all three. Platform-specific policy citations (Meta, TikTok, YouTube, X) are appended based on requested platforms. Example — same restricted-category detection across different request scopes:
Request scopeCitation on Restricted Category: Alcohol & spirits check
jurisdictions: ["us"], platforms: []27 U.S.C. § 213 (Federal Alcohol Administration Act); FTC alcohol self-regulation guides; state alcohol-board rules (e.g. California ABC, NY SLA)
jurisdictions: ["us", "uk"], platforms: ["facebook", "tiktok"]All US + UK regulatory citations, plus Meta Advertising Standards — Alcohol; TikTok Advertising Policies — Alcohol
jurisdictions: ["china"], platforms: ["youtube"]China Advertising Law Art. 23 (alcohol); SAMR enforcement; Google Ads Policies — Alcohol
The same pattern applies to all check types — brand logos cite trademark law (Lanham Act, EU Trademark Regulation, etc.), stock watermarks cite copyright law, content-safety checks cite jurisdiction-specific decency / broadcasting / advertising codes plus platform policies.

Response

{
  "checks": [
    {
      "id": "chk_87bdd543",
      "agentId": "rights-clearance-image",
      "checkName": "Restricted Category: Alcohol & spirits",
      "status": "block",
      "severity": "high",
      "message": "Image depicts Alcohol & spirits (detected label: liquor, 94% confidence). Restricted advertising category — alcohol marketing requires age-gating, jurisdictional licensing, and specific disclaimer language.",
      "recommendation": "Block publication or obtain explicit clearance for alcohol & spirits advertising under the cited regulations and platform policies.",
      "citation": "27 U.S.C. § 213 (Federal Alcohol Administration Act); FTC alcohol self-regulation guides; state alcohol-board rules; UK CAP Code Section 18 (Alcohol); Meta Advertising Standards — Alcohol; TikTok Advertising Policies — Alcohol",
      "jurisdictions": ["us", "uk"],
      "platforms": ["facebook", "tiktok"],
      "primaryCategory": "other"
    },
    {
      "id": "chk_ad1f2e90",
      "agentId": "rights-clearance-image",
      "checkName": "Adult Content Detected (high confidence)",
      "status": "block",
      "severity": "high",
      "message": "Image safety analysis indicates a high likelihood of adult content in this image. Restricted advertising and platform-policy rules apply in the requested scope.",
      "recommendation": "Block publication. Replace the image, or obtain explicit clearance for adult content under the cited regulations and platform policies.",
      "citation": "FTC truth-in-advertising; COPPA (where child-directed); state adult-content statutes; Meta Community Standards — Adult Nudity & Sexual Activity; TikTok Community Guidelines — Sexual Behavior & Nudity",
      "jurisdictions": ["us"],
      "platforms": ["facebook", "tiktok"]
    },
    {
      "id": "chk_ae6642b7",
      "agentId": "rights-clearance-image",
      "checkName": "No C2PA Content Credentials",
      "status": "flag",
      "severity": "medium",
      "message": "Image does not contain C2PA content credentials. California SB 942 requires machine-readable AI provenance; TikTok uses C2PA for auto-detection of synthetic media; Meta auto-labels AI content via C2PA/IPTC metadata.",
      "recommendation": "Embed C2PA content credentials before publication. Use Content Authenticity Initiative tools or Adobe Content Credentials.",
      "citation": "California SB 942; TikTok Community Guidelines — Synthetic Media; Meta Transparency Center — Approach to AI-Generated Content"
    }
  ],
  "checksById": { "chk_87bdd543": { /* same as above */ } },
  "indexes": {
    "byStatus": { "block": ["chk_87bdd543", "chk_ad1f2e90"], "flag": ["chk_ae6642b7"] },
    "bySeverity": { "high": ["chk_87bdd543", "chk_ad1f2e90"], "medium": ["chk_ae6642b7"] },
    "byJurisdiction": { "us": ["chk_87bdd543", "chk_ad1f2e90", "chk_ae6642b7"] },
    "byPlatform": { "tiktok": ["chk_87bdd543", "chk_ad1f2e90", "chk_ae6642b7"] }
  },
  "annotations": [],
  "decision": "BLOCK",
  "score": 22,
  "cached": false,
  "creditsCharged": 35,
  "costBreakdown": {
    "totalCredits": 35,
    "agents": [
      { "agent": "rights-clearance-image", "creditsUsed": 35, "latencyMs": 714 }
    ]
  }
}

Response field reference

FieldTypeMeaning
checksarrayAll compliance checks emitted for the image(s). Each carries status, severity, message, recommendation, citation.
checksByIdobjectSame checks keyed by id for direct lookup.
indexesobjectInverted indexes: byStatus, bySeverity, byJurisdiction, byPlatform, byCategory — convenient for UI filtering.
annotationsarrayimage-region annotations with bounding boxes for detected elements (when available).
decisionenumCanonical decision: PUBLISH (clean) / HOLD (review) / BLOCK (do not publish). Driven by aggregating check severities.
scorenumberCompliance score 0–100. Higher is better. Below 50 typically means BLOCK.
cachedbooleanWhether the result came from the request cache (identical inputs within the cache window).
creditsChargednumberCredits debited from your tenant balance for this request.
costBreakdownobjectPer-agent credit + latency breakdown.

Cost

35 credits per image. Multi-image requests scale linearly (35 × imageCount).

Notes

  • JSON path: images must be publicly accessible URLs
  • Multipart path: upload binaries directly, up to 2 per request, 4.5 MB total body
  • Maximum 2 images per request on both paths (hard cap)
  • Requests are scoped to your subscribed jurisdictions and platforms — see Tenant Onboarding and Scoping for the 403 model
  • Results include image-region annotations with bounding boxes for detected elements (when the underlying detection produces one)
  • The restricted-categories list is admin-tunable in real time without a redeploy — see the Restricted Categories guide for the full catalog and how to request additions for your account