Image authenticity for social posts
Preflight influencer photos, travel images, carousel covers, and brand visuals for visible synthetic-image risk before they're scheduled. The cost of catching a manipulated image at staging is a re-shoot; the cost of catching it after publish is a takedown post.
The synthetic-image problem in brand social isn't usually 'someone is trying to deceive us' — it's 'we licensed a stock image that turned out to be AI-generated upstream' or 'an influencer used a beauty filter that pushed the asset into uncanny territory.' The gate's most common use case is the polite case: catch the asset before publish, ping the influencer or stock provider for a different version, and move on. The forensic case (someone is actively trying to deceive the brand) is much rarer than the operational case.
Business value
- Stops the most embarrassing failure mode of brand-managed social: publishing a generated image without realizing it (or without realizing the audience would).
- Catches the synthetic-stock-photo pattern where teams license a 'stock image' that turns out to be AI-generated upstream.
- Surfaces the cases worth checking with the asset owner — usually a quick provenance check resolves them.
Agent job to be done
Be a brand-side image reviewer. Allow assets that look authentic. Hold assets with visible synthetic cues for source verification. Reject when the asset clearly fails and a replacement exists.
format: social_postintended_use: publishdomain: social media image authenticity
When to call VeracityAPI
After asset selection/upload, before the scheduler queues the post for publish.
What image URL to submit
Public HTTPS image URL for the exact asset to be published. Submit the highest-resolution version available — compression artifacts can mask the cues you're trying to detect.
Decision policy
- allow: low synthetic_image_risk and no conflicting local signals (asset metadata matches the stated source).
- revise: medium risk — request a higher-resolution version, ask for source/provenance, or queue for a manual designer review.
- human_review: high risk on influencer/sponsorship content, body-image-sensitive content, or content making product-efficacy claims.
- reject: visible heavy manipulation combined with claims the image is supposed to support (before/after photos, results screenshots).
Request template
The exact payload shape this use case sends. The sample below uses representative content for this workflow; substitute your own.
curl https://api.veracityapi.com/v1/analyze \
-H "Authorization: Bearer $VERACITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"image","content":"https://veracityapi.com/demo/influencer-beauty-tonic.jpg","context":{"format":"social_post","intended_use":"publish","domain":"social media image authenticity"},"store_content":false}'Automation recipe
- Asset agent receives the final image URL and the post metadata (caption, sponsorship tags, intended platform).
- Worker calls POST /v1/analyze with type=image and store_content=false.
- Allow-tagged assets flow into the scheduler.
- Medium and high-risk assets queue with the evidence categories pinned and a 'request source' button for the designer.
- Replacement assets re-enter the gate before publish.
Evidence spans agents should inspect
- 'synthetic_texture' — skin, hair, or fabric textures that don't render the way camera optics produce
- 'geometry_inconsistency' — hands, fingers, jewelry, signage, or product details that violate physics or anatomy
- 'text_artifact' — generated-looking text on signs, packaging, screens, or watermarks
- 'lighting_mismatch' — light sources that don't agree across the frame (a giveaway in composited images)
Policy pseudocode
if (result.recommended_action === "allow") continueWorkflow(); if (result.recommended_action === "revise") rewriteWith(result.evidence, result.recommended_fixes); if (result.recommended_action === "human_review") queueForHumanReview(result); if (result.recommended_action === "reject") discardOrRebuild();
KPIs to track
- assets triaged per week
- human-review precision (how often a flagged asset really was synthetic on follow-up)
- synthetic-publish incidents prevented (the metric this gate drives to zero)
- false-positive appeal rate (designers contesting holds)
- median time from upload to publish for clean assets
What can go wrong
- v0.1 is workflow triage, not forensic proof. A 'high risk' result is a reason to verify with the asset owner, not a reason to accuse anyone.
- Screenshots, heavy compression, cropping, and platform re-encoding can all reduce confidence. Score the asset version closest to original capture.
- v0.1 does not inspect C2PA, EXIF, or other provenance metadata. Pair the score with a metadata check for high-stakes assets.
Cost and latency notes
Image analysis is a flat $0.02 per image. The endpoint accepts HTTPS image URLs, stores no image bytes, and logs only a URL hash plus hostname. Current v0.1 latency is vision-model-bound, so preflight balance and retry carefully.
Agent evaluation checklist
- Does this workflow have a costly failure mode from manipulated or synthetic-looking visuals?
- Can the agent store evidence categories without storing raw image bytes or full URLs?
- Should this workflow fail open, fail closed, or queue human review if image scoring is unavailable?
- Which field drives policy: recommended_action, risk_level, content_trust_score, or synthetic_image_risk?
- What local provenance check should complement the API score?