{"openapi":"3.1.0","info":{"title":"Auto-Reader OCR + Translate API","description":"Multilingual OCR (Arabic-first, manga-aware), translation, and vision escalation.","version":"1.0.0"},"paths":{"/v1/ocr":{"post":{"summary":"Ocr Multipart","description":"OCR via multipart upload.","operationId":"ocr_multipart_v1_ocr_post","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ocr_multipart_v1_ocr_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ocr/base64":{"post":{"summary":"Ocr Base64","description":"OCR via JSON base64 (easier for LLM agents to call).","operationId":"ocr_base64_v1_ocr_base64_post","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OcrJsonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ocr-translate":{"post":{"summary":"Ocr Translate Multipart","description":"OCR then translate in one call.","operationId":"ocr_translate_multipart_v1_ocr_translate_post","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ocr_translate_multipart_v1_ocr_translate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ocr-translate/base64":{"post":{"summary":"Ocr Translate Base64","description":"OCR then translate in one call (JSON base64).","operationId":"ocr_translate_base64_v1_ocr_translate_base64_post","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OcrTranslateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/feedback":{"post":{"summary":"Feedback","description":"Report wrong OCR or rate a result. Corrections feed the fine-tuning\nloop (Stage C) and threshold tuning (Stage B).","operationId":"feedback_v1_feedback_post","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/data":{"delete":{"summary":"Delete Data","description":"PDPL: delete every stored training image for a key. The Worker\nrewrites ?key= to the caller's own key hash — users can only delete\ntheir own data.","operationId":"delete_data_v1_data_delete","parameters":[{"name":"key","in":"query","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/translate":{"post":{"summary":"Translate","operationId":"translate_v1_translate_post","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ask":{"post":{"summary":"Ask","operationId":"ask_v1_ask_post","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AskBody":{"properties":{"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"max_tokens":{"type":"integer","title":"Max Tokens","default":1024},"temperature":{"type":"number","title":"Temperature","default":0.3}},"type":"object","required":["messages"],"title":"AskBody"},"Body_ocr_multipart_v1_ocr_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"lang":{"type":"string","title":"Lang","default":"auto"},"mode":{"type":"string","title":"Mode","default":"document"},"allow_training":{"type":"boolean","title":"Allow Training","default":false}},"type":"object","required":["file"],"title":"Body_ocr_multipart_v1_ocr_post"},"Body_ocr_translate_multipart_v1_ocr_translate_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"lang":{"type":"string","title":"Lang","default":"auto"},"mode":{"type":"string","title":"Mode","default":"document"},"target_lang":{"type":"string","title":"Target Lang","default":"en"},"allow_training":{"type":"boolean","title":"Allow Training","default":false}},"type":"object","required":["file"],"title":"Body_ocr_translate_multipart_v1_ocr_translate_post"},"FeedbackBody":{"properties":{"request_id":{"type":"string","title":"Request Id"},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"},"corrected_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Corrected Text"}},"type":"object","required":["request_id"],"title":"FeedbackBody"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"OcrJsonBody":{"properties":{"image_base64":{"type":"string","title":"Image Base64"},"lang":{"type":"string","title":"Lang","default":"auto"},"mode":{"type":"string","title":"Mode","default":"document"},"allow_training":{"type":"boolean","title":"Allow Training","default":false}},"type":"object","required":["image_base64"],"title":"OcrJsonBody"},"OcrTranslateBody":{"properties":{"image_base64":{"type":"string","title":"Image Base64"},"lang":{"type":"string","title":"Lang","default":"auto"},"mode":{"type":"string","title":"Mode","default":"document"},"allow_training":{"type":"boolean","title":"Allow Training","default":false},"target_lang":{"type":"string","title":"Target Lang","default":"en"}},"type":"object","required":["image_base64"],"title":"OcrTranslateBody"},"TranslateBody":{"properties":{"text":{"type":"string","title":"Text"},"target_lang":{"type":"string","title":"Target Lang"},"source_lang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Lang"}},"type":"object","required":["text","target_lang"],"title":"TranslateBody"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key from POST /signup (nsk_live_...)"}}},"servers":[{"url":"https://api.auto-reader.com"}],"security":[{"bearerAuth":[]}]}