# BitCheck Image Verification API Integration Guide This document outlines the endpoints available in the BitCheck Image Verification API to help backend engineers integrate the image analysis features. ## Base URL The API is typically hosted at `http://localhost:8000` locally, or the appropriate production URL (e.g., your Hugging Face Space URL). --- ## Endpoints ### 1. Verify Image Analyze an uploaded image for AI generation, forensics, and metadata/provenance. **Endpoint:** `POST /verify/image` **Content-Type:** `multipart/form-data` **Request Parameters (Form Data):** - `file` **(Required)**: The image file to analyze (e.g., `.jpg`, `.png`, `.webp`). - `user_email` *(Optional)*: Email address of the user who owns this image and report. Useful for retrieving reports later. - `run_explainability` *(Optional, Default: true)*: Generate a Grad-CAM heatmap showing which parts of the image influenced the AI prediction. - `run_ocr` *(Optional, Default: true)*: Run OCR to detect visible AI tool watermarks. - `run_forensics` *(Optional, Default: true)*: Run lightweight forensic analysis (noise, blur, edge inconsistencies). - `run_c2pa` *(Optional, Default: true)*: Analyze C2PA provenance data (Content Credentials). - `threshold` *(Optional)*: Override the default confidence threshold for the classifier model. **cURL Example:** ```bash curl -X POST "http://localhost:8000/verify/image" \ -H "accept: application/json" \ -H "Content-Type: multipart/form-data" \ -F "file=@/path/to/your/image.jpg" \ -F "user_email=user@example.com" ``` **Success Response (200 OK):** Returns a comprehensive `VerificationReport` JSON object containing: - `verification_id`: A unique ID for this report. - `status`: Verification status (`completed`, `error`). - `trust`: The final trust score and classification (e.g., `real`, `ai_generated`). - Sections for `input`, `filename_analysis`, `metadata`, `provenance`, `visible_watermark_ocr`, `visible_watermark_template`, `classifier`, `forensics`, and `explainability`. --- ### 2. Retrieve a Specific Report Fetch a previously generated verification report by its ID. **Endpoint:** `GET /reports/{verification_id}` **Path Parameters:** - `verification_id` **(Required)**: The unique ID returned from the `/verify/image` endpoint. **cURL Example:** ```bash curl -X GET "http://localhost:8000/reports/b8f9e..." \ -H "accept: application/json" ``` **Success Response (200 OK):** Returns the same `VerificationReport` JSON object generated during the upload. --- ### 3. List Reports Retrieve a list of past verification reports, optionally filtered by user email. **Endpoint:** `GET /reports` **Query Parameters:** - `user_email` *(Optional)*: Filter the reports by the user's email address. **cURL Example:** ```bash curl -X GET "http://localhost:8000/reports?user_email=user@example.com" \ -H "accept: application/json" ``` **Success Response (200 OK):** ```json { "count": 1, "reports": [ { "verification_id": "...", "user_email": "user@example.com", "filename": "image.jpg", "status": "completed", "trust": { "final_decision": "real", "trust_score_out_of_100": 95, ... }, "processing_time_ms": 1205.4 } ] } ``` --- ### 4. Health Check Check if the API and its underlying services (OCR, C2PA, AI Models) are running correctly. **Endpoint:** `GET /health` **cURL Example:** ```bash curl -X GET "http://localhost:8000/health" \ -H "accept: application/json" ``` **Success Response (200 OK):** ```json { "status": "ok", "service": "BitCheck Image Verification API", "classifier_loaded": true, "ocr_available": true, "c2pa_available": true, "device": "cpu" } ``` --- ## Static Assets (Explainability & Forensics) If `run_explainability` or `run_forensics` are true, the JSON response will include URLs to generated images (e.g., heatmaps or annotated images). These are served via the static `/outputs/` directory. Example: `http://localhost:8000/outputs/b8f9e..._gradcam_overlay.jpg`