{"components":{"securitySchemes":{"BearerAuth":{"description":"Use your admin password as the bearer token","scheme":"bearer","type":"http"},"LoginRequired":{"description":"Login via /login with the admin password","in":"cookie","name":"session","type":"apiKey"}}},"info":{"contact":{"email":"api@viding.ai"},"description":"Selective Video Encoding API - Cut video processing costs by 70% while maintaining visual quality.","title":"VIDing.AI API","version":"2.1.0"},"openapi":"3.0.3","paths":{"/api/chat":{"post":{"description":"Send a message to the VIDing.AI assistant powered by GPT-4o Mini.","requestBody":{"content":{"application/json":{"schema":{"properties":{"history":{"items":{"type":"object"},"type":"array"},"message":{"type":"string"}},"required":["message"],"type":"object"}}},"required":true},"responses":{"200":{"description":"AI response"},"400":{"description":"No message provided"},"500":{"description":"AI service error"}},"summary":"AI Chat","tags":["AI"]}},"/api/compress":{"post":{"description":"Upload and compress a video using selective encoding. Returns download URL for compressed file.","requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"target_ratio":{"default":0.3,"maximum":0.9,"minimum":0.1,"type":"number"},"video":{"description":"Video file (MP4)","format":"binary","type":"string"}},"required":["video"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Compression metrics and download URL"},"400":{"description":"Invalid file (VIDEO_008, VIDEO_009)"},"413":{"description":"File too large (VIDEO_007)"},"500":{"description":"Compression failed (PROC_008)"}},"security":[{"LoginRequired":[]}],"summary":"Compress a video","tags":["Compression"]}},"/api/demo/cpu_metrics":{"get":{"description":"Compare CPU usage between selective and traditional encoding modes.","parameters":[{"in":"query","name":"mode","schema":{"enum":["selective","traditional"],"type":"string"}}],"responses":{"200":{"description":"CPU usage comparison data"}},"summary":"Get CPU comparison metrics","tags":["Demo"]}},"/api/demo/export-pdf":{"post":{"description":"Generate a PDF performance report for enterprise demo results.","responses":{"200":{"description":"PDF file download"},"500":{"description":"PDF generation failed (PDF_001)"}},"summary":"Export demo PDF report","tags":["Demo"]}},"/api/demo/metrics":{"get":{"description":"Returns real-time CPU, memory, and encoding metrics for the live demo.","responses":{"200":{"description":"Live metrics data"}},"security":[{"LoginRequired":[]}],"summary":"Get live demo metrics","tags":["Demo"]}},"/api/demo/process":{"post":{"description":"Process a video for the interactive canvas demo. Returns frame-by-frame block data.","requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"block_size":{"default":16,"type":"integer"},"target_ratio":{"default":0.3,"type":"number"},"video":{"format":"binary","type":"string"}},"required":["video"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Frame data with block analysis"},"400":{"description":"No file provided (VIDEO_008)"},"500":{"description":"Processing failed (PROC_001)"}},"security":[{"LoginRequired":[]}],"summary":"Process demo video","tags":["Demo"]}},"/api/global_stats":{"get":{"description":"Aggregated platform statistics: videos processed, energy saved, CO2 reduced.","responses":{"200":{"description":"Global usage statistics"}},"summary":"Get global statistics","tags":["Statistics"]}},"/api/processing_status":{"get":{"description":"Poll for the current video processing status.","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"elapsed_seconds":{"type":"number"},"message":{"type":"string"},"status":{"enum":["idle","processing","complete"],"type":"string"}},"type":"object"}}},"description":"Processing status"}},"security":[{"LoginRequired":[]}],"summary":"Check processing status","tags":["Processing"]}},"/api/validate":{"post":{"description":"Run validation on one or more video files. Supports batch processing.","requestBody":{"content":{"application/json":{"schema":{"properties":{"filename":{"description":"Single video filename","type":"string"},"filenames":{"description":"Batch: list of filenames","items":{"type":"string"},"type":"array"},"generate_csv":{"default":false,"type":"boolean"},"generate_pdf":{"default":false,"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"Validation results"},"400":{"description":"Bad request (VAL_003)"},"401":{"description":"Unauthorized (AUTH_004, AUTH_005)"}},"security":[{"BearerAuth":[]}],"summary":"Validate video encoding","tags":["Validation"]}},"/api/validate/download/{filename}":{"get":{"description":"Download a generated PDF or CSV validation report.","parameters":[{"in":"path","name":"filename","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"File download"},"404":{"description":"Report not found"}},"summary":"Download validation report","tags":["Validation"]}},"/api/validation/export-pdf":{"post":{"description":"Generate a PDF report from validation results.","responses":{"200":{"description":"PDF file download"},"500":{"description":"PDF generation failed (PDF_001)"}},"summary":"Export validation PDF","tags":["Validation"]}},"/api/webhooks/register":{"post":{"description":"Register a URL to receive event notifications.","requestBody":{"content":{"application/json":{"schema":{"properties":{"events":{"items":{"enum":["video.processed","video.compressed","validation.complete","lead.registered","lead.closed"],"type":"string"},"type":"array"},"secret":{"description":"HMAC secret for signature verification","type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","events"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Webhook registered"},"400":{"description":"Invalid URL or events"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"Register a webhook","tags":["Webhooks"]}},"/health":{"get":{"description":"Server health check for load balancers and monitoring.","responses":{"200":{"description":"Healthy"},"503":{"description":"Degraded - database or disk issues"}},"summary":"Health check","tags":["System"]}},"/leads/register":{"post":{"description":"Register a new enterprise lead in the affiliate pipeline.","requestBody":{"content":{"application/json":{"schema":{"properties":{"company_name":{"type":"string"},"contact_email":{"type":"string"},"contact_name":{"type":"string"},"contact_phone":{"type":"string"},"future_date":{"format":"date","type":"string"}},"required":["company_name"],"type":"object"}}}},"responses":{"200":{"description":"Lead registered successfully"},"400":{"description":"Company name required"}},"summary":"Register a lead","tags":["Affiliates"]}},"/proposals/generate":{"post":{"description":"Create a custom enterprise proposal PDF.","requestBody":{"content":{"application/json":{"schema":{"properties":{"company_name":{"type":"string"},"estimated_costs":{"type":"number"},"model_type":{"enum":["hybrid","saas","usage","enterprise"],"type":"string"}},"required":["company_name"],"type":"object"}}}},"responses":{"200":{"description":"Proposal PDF download"},"400":{"description":"Company name required"},"500":{"description":"Generation failed"}},"summary":"Generate a proposal","tags":["Affiliates"]}}},"servers":[{"description":"Current server","url":"/"}],"tags":[{"description":"Video compression endpoints","name":"Compression"},{"description":"Encoding validation and reports","name":"Validation"},{"description":"Interactive demo endpoints","name":"Demo"},{"description":"Video processing status","name":"Processing"},{"description":"Platform analytics","name":"Statistics"},{"description":"AI chat assistant","name":"AI"},{"description":"Lead and proposal management","name":"Affiliates"},{"description":"Event notification webhooks","name":"Webhooks"},{"description":"Health and system info","name":"System"}]}
