{"openapi":"3.0.3","info":{"title":"Synthetic-Content & C2PA Provenance Inspector API","version":"1.0.0","description":"Inspects binary file headers and metadata dumps for C2PA / JUMBF Content Credentials, IPTC DigitalSourceType declarations, and AI generator fingerprints (DALL-E, Midjourney, Stable Diffusion, ComfyUI, Firefly, Flux, Imagen)."},"servers":[{"url":"https://api.tinplate.dev","description":"Production Edge Gateway"}],"components":{"schemas":{"ProvenanceResponseData":{"type":"object","properties":{"verdict":{"type":"string","enum":["c2pa_synthetic_disclosed","c2pa_manifest_present","likely_synthetic_metadata","no_provenance_signals"]},"confidence":{"type":"number","minimum":0,"maximum":1},"detected_mime":{"type":"string","nullable":true},"c2pa":{"type":"object","properties":{"jumbf_detected":{"type":"boolean"},"manifest_boxes":{"type":"array","items":{"type":"string"}},"claim_generator_hint":{"type":"string","nullable":true}},"required":["jumbf_detected","manifest_boxes","claim_generator_hint"]},"iptc_digital_source_type":{"type":"string","nullable":true},"detected_generators":{"type":"array","items":{"type":"string"}},"signals":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","enum":["c2pa_jumbf","iptc_source_type","ai_generator_signature","container_chunk"]},"name":{"type":"string"},"evidence":{"type":"string"},"confidence":{"type":"string","enum":["high","medium","low"]}},"required":["category","name","evidence","confidence"]}},"caveats":{"type":"array","items":{"type":"string"}}},"required":["verdict","confidence","detected_mime","c2pa","iptc_digital_source_type","detected_generators","signals","caveats"]},"ProvenanceRequest":{"type":"object","properties":{"content_base64":{"type":"string","maxLength":180000,"description":"Base64-encoded file header or full file bytes (up to ~128 KB) of JPEG, PNG, WebP, PDF, or MP4."},"metadata_text":{"type":"string","maxLength":131072,"example":"tEXtSoftware: Midjourney v6.1\nXMP-iptcExt:DigitalSourceType=\"http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia\"","description":"Optional raw EXIF, XMP, PNG tEXt/iTXt, or JSON metadata dump to inspect alongside or instead of binary bytes."}}},"ResponseMeta":{"type":"object","required":["request_id"],"properties":{"request_id":{"type":"string","format":"uuid"},"ms":{"type":"integer","minimum":0},"version":{"type":"string","example":"1.0.0"}}},"ErrorEnvelope":{"type":"object","required":["ok","error","meta"],"properties":{"ok":{"type":"boolean","enum":[false]},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid_input"},"message":{"type":"string","example":"Request body failed validation"}}},"meta":{"$ref":"#/components/schemas/ResponseMeta"}}}},"parameters":{}},"paths":{"/v1/content-provenance":{"post":{"tags":["30_CONTENT_PROVENANCE"],"summary":"Inspect file headers and metadata for C2PA provenance and AI generator signals","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvenanceRequest"}}}},"responses":{"200":{"description":"Provenance verdict, C2PA box detection, AI generator signals, and caveats","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/ProvenanceResponseData"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["ok","data","meta"]}}}},"400":{"description":"Invalid input or malformed JSON request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Missing or invalid authentication credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"413":{"description":"Request payload exceeds subscribed plan byte cap","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}}}