{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Visual Verification overview","description":"Generate and edit images and video with Bria's Fibo models through a REST API, Python and TypeScript SDKs, MCP server and agent skills. Licensed training data, controllable output, provenance on every result.","siteUrl":"https://docs.bria.ai","image":"/assets/bria-social-card.5f3c59395e7b5efa776984c64ef9cb0956b1d651f45b7ebf9502122a66054f35.db81178d.png","llmstxt":{"hide":false,"title":"Bria API documentation","description":"Bria's developer platform: controllable, commercially safe visual generative AI (images and video) as a REST API, Python and TypeScript SDKs, MCP server and agent skills.","details":{"path":"_llmstxt-details.md"},"sections":[{"title":"Getting started","description":"First call, authentication, async jobs and webhooks, rate limits, inputs.","includeFiles":["index.md","whats-new/fibo-2.md","getting-started/quickstart.md","getting-started/authentication.md","getting-started/async-requests.md","status.yaml","getting-started/rate-limits-and-errors.md","getting-started/working-with-images.md","getting-started/asset-retention.md"]},{"title":"Integrate","description":"Python SDK, TypeScript SDK, MCP server, agent skills, and machine-readable docs for agents.","includeFiles":["integration-methods/python-sdk.md","integration-methods/typescript-sdk.md","MCP-authentication.md","integration-methods/bria-skill.md","integration-methods/for-ai-agents.md"]},{"title":"Concepts","description":"Platform map, VGL and the Fibo models, safety, best practices.","includeFiles":["products-overview.md","VGL.md","safety.md","best-practices-overview.md","image-generation-best-practices.md","image-editing-best-practices.md","product-shots-best-practices.md"]},{"title":"Image Generation","description":"Generate images from text, reference images or structured (VGL) prompts with Fibo 2.","includeFiles":["image-generation-overview.md","image-generation.yaml"]},{"title":"Image Editing","description":"Instruction-based editing plus specialized endpoints for backgrounds, erasing, fill, expansion, upscaling and style.","includeFiles":["image-editing-overview.md","image-editing.yaml"]},{"title":"Product Shot Editing","description":"Cutouts, packshots, shadows, lifestyle scenes, product integration, holding, virtual try-on, automotive.","includeFiles":["product-shot-overview.md","product-shot-editing.yaml"]},{"title":"Video Editing","description":"Background removal (REST or real-time streaming), erasing, upscaling and masks for video; local video upload.","includeFiles":["video-editing-overview.md","local-video-upload-service.md","streaming-rmbg.md","video-editing.yaml"]},{"title":"Ads","description":"Finished ads as input. Ad Delayer turns one into editable layers (the guide holds the layer document contract); Ad Resize produces it at other sizes with the layout redone.","includeFiles":["ads-overview.md","ads.yaml"]},{"title":"Trust and provenance","description":"Public verification of Bria provenance, and attribution of outputs to licensed training data.","includeFiles":["trust-and-provenance-overview.md","visual-verification-overview.md","visual-verification.yaml","enterprise/attribution.md","bria-attribution-service.yaml"]},{"title":"Self-hosting","description":"Run licensed Bria models on your own GPUs. Buy a per-model license, install with Bria Studio or the Python library, run, and handle license errors.","includeFiles":["self-hosted/quickstart.md","self-hosted/overview.md","self-hosted/best-practices.md","self-hosted/fibo-2.md","self-hosted/rmbg-2.md"]},{"title":"Enterprise","description":"Run Bria in your own cloud or on-premises.","includeFiles":["enterprise/deployment-options.md"]}],"excludeFiles":["_llmstxt-details.md","README.md"]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"visual-verification-overview","__idx":0},"children":["Visual Verification overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Two endpoints — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/image/verify"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/video/verify"]}," — take a generated visual and verify whether it carries Bria's provenance markings. Both are public: no API Token required, so you can verify generated visuals from anywhere, including from an end user's browser."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use it to confirm the origin of media in your own pipeline, let your users check a file they received, or produce an audit record of AI-generated content."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-verification-works","__idx":1},"children":["How Verification Works"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each endpoint runs two independent checks and returns a single ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["verified"]}," flag: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," if either check confirms Bria origin."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["C2PA manifest:"]}," Reads the media's embedded C2PA manifest, if there is one, and checks whether it was signed by Bria's trust anchor. Returned as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validation_state"]},":",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Trusted"]}," — Signed by Bria. This is the only value that sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["is_trusted"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Valid"]}," — The signature is intact, but the signer isn't Bria."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Invalid"]}," — The signature is broken, or the media was changed after signing."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Invisible watermark:"]}," Decodes the invisible watermark, if there is one, and checks whether it matches Bria's. Returned as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invisible_watermark_detected"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"). This check always runs for video. For images, it runs on all supported formats except GIF and WEBP — for those, the field is omitted from the response rather than returned as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Because the two checks are independent, media that lost its C2PA manifest along the way (a re-upload, a screenshot, a platform that strips metadata) can still be verified through the watermark."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"eu-ai-act-compliance","__idx":2},"children":["EU AI Act Compliance"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Article 50 of the EU AI Act requires AI-generated or AI-manipulated content to carry a machine-readable marking of its origin. Bria applies both a C2PA manifest and an invisible watermark to the media it generates, and this API is how you read those markings back — to verify media you receive, or to evidence the marking on media you've generated."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/visual-verification"},"children":["Visual Verification API Reference"]}," for the full request and response contract."]}]},"headings":[{"value":"Visual Verification overview","id":"visual-verification-overview","depth":1},{"value":"How Verification Works","id":"how-verification-works","depth":2},{"value":"EU AI Act Compliance","id":"eu-ai-act-compliance","depth":2}],"frontmatter":{"title":"Visual Verification overview","description":"Verify Bria provenance on images and videos through the C2PA manifest and the invisible watermark. Public endpoints, no API token required.","seo":{"title":"Visual Verification overview"}},"lastModified":"2026-10-26T10:09:16.717Z","pagePropGetterError":{"message":"","name":""}},"slug":"/visual-verification-overview","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}