{"openapi":"3.1.0","info":{"title":"Clean My Copy API","version":"1.0.0","description":"Deterministic inspection and conservative cleaning of supported literal Unicode and formatting artifacts. Results do not prove AI authorship or guarantee model-level watermark detection."},"servers":[{"url":"https://aitextwatermark.com"}],"paths":{"/api/health":{"get":{"summary":"Service health and capability status","responses":{"200":{"description":"Service is ready"}}}},"/api/v1/scan":{"get":{"summary":"API capability description","responses":{"200":{"description":"Capability metadata"}}},"post":{"summary":"Scan and clean one text value","security":[{"ApiKey":[]},{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":100000}}}}}},"responses":{"200":{"description":"Structured artifact report, cleaned text, and content-free portable evidence receipt","content":{"application/json":{"schema":{"type":"object","properties":{"portableReceipt":{"$ref":"#/components/schemas/PortableEvidenceReceipt"}}}}}},"400":{"description":"Invalid request"},"401":{"description":"Invalid or missing configured API key"},"413":{"description":"Text exceeds the size limit"},"429":{"description":"Rate limit exceeded"}}},"options":{"summary":"CORS preflight","responses":{"204":{"description":"Preflight accepted"}}}},"/api/v1/providers":{"get":{"summary":"Provider detector capabilities and result definitions","description":"Reports connected adapters separately from historical announcements and current public access. Google announced restricted SynthID Detector text support for early testers, but broad ordinary-text verifier access remains unconfirmed; enterprise or private announcements do not establish ordinary-text scope.","responses":{"200":{"description":"Current provider-adapter availability without inferred conclusions"}}},"options":{"summary":"CORS preflight","responses":{"204":{"description":"Preflight accepted"}}}},"/api/v1/batch":{"post":{"summary":"Scan and clean up to 50 text values","security":[{"ApiKey":[]},{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["texts"],"properties":{"texts":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"string","maxLength":100000}}}}}}},"responses":{"200":{"description":"Ordered batch of structured scan results"},"400":{"description":"Invalid request"},"401":{"description":"Invalid or missing configured API key"},"413":{"description":"Batch exceeds an item or total size limit"},"429":{"description":"Rate limit exceeded"}}},"options":{"summary":"CORS preflight","responses":{"204":{"description":"Preflight accepted"}}}}},"components":{"schemas":{"PortableEvidenceReceipt":{"type":"object","required":["schema","schemaVersion","correlationKey","sourceTextIncluded","cleanedTextIncluded","originalPreserved","fingerprints","findings","providerState","targetSurfaces","claimsBoundary"],"properties":{"schema":{"const":"ai-text-watermark/portable-evidence-receipt"},"schemaVersion":{"const":"1.0"},"correlationKey":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"sourceTextIncluded":{"const":false},"cleanedTextIncluded":{"const":false},"originalPreserved":{"const":true},"fingerprints":{"type":"object"},"findings":{"type":"array"},"providerState":{"enum":["official-signal-available","unavailable-or-inconclusive"]},"targetSurfaces":{"type":"array","items":{"type":"string"}},"claimsBoundary":{"type":"object"}}}},"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"x-api-key"},"BearerAuth":{"type":"http","scheme":"bearer"}}}}