Image · social publishing

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.

Get API key All use cases Docs

What we've seen in practice

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