{"openapi":"3.1.0","info":{"title":"ConvertMD API","description":"Convert supported uploads to LLM-friendly Markdown. Maximum 25 MiB; no URLs or archives. REST limits: 300/day/IP, 10/minute/IP.","contact":{"name":"ConvertMD","url":"https://convertmd.app/"},"version":"1.0.0"},"paths":{"/v1/formats":{"get":{"summary":"List supported upload formats","operationId":"formats_v1_formats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormatsResponse"}}}}}}},"/v1/convert":{"post":{"summary":"Convert one uploaded file to Markdown","description":"Upload exactly one supported local file as multipart/form-data field `file`. Maximum 25 MiB. URLs and archives are not accepted. Use `Accept: text/markdown` for raw output; otherwise JSON is returned.","operationId":"convert_v1_convert_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_convert_v1_convert_post"}}},"required":true},"responses":{"200":{"description":"JSON metadata by default, or raw Markdown when requested with Accept: text/markdown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionResponse","properties":{"markdown":{"type":"string","title":"Markdown","description":"Converted Markdown text."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"},"media_type":{"type":"string","title":"Media Type"},"extension":{"type":"string","title":"Extension"},"bytes":{"type":"integer","title":"Bytes"},"duration_ms":{"type":"integer","title":"Duration Ms"},"request_id":{"type":"string","title":"Request Id"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["markdown","filename","media_type","extension","bytes","duration_ms","request_id","warnings"],"title":"ConversionResponse"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"Invalid multipart or empty file","content":{"application/problem+json":{"schema":{"properties":{"type":{"type":"string","title":"Type"},"title":{"type":"string","title":"Title"},"status":{"type":"integer","title":"Status"},"detail":{"type":"string","title":"Detail"},"instance":{"type":"string","title":"Instance"},"request_id":{"type":"string","title":"Request Id"}},"type":"object","required":["type","title","status","detail","instance","request_id"],"title":"ProblemResponse"}}}},"413":{"description":"File exceeds 25 MiB","content":{"application/problem+json":{"schema":{"properties":{"type":{"type":"string","title":"Type"},"title":{"type":"string","title":"Title"},"status":{"type":"integer","title":"Status"},"detail":{"type":"string","title":"Detail"},"instance":{"type":"string","title":"Instance"},"request_id":{"type":"string","title":"Request Id"}},"type":"object","required":["type","title","status","detail","instance","request_id"],"title":"ProblemResponse"}}}},"415":{"description":"Unsupported, spoofed, or unsafe package","content":{"application/problem+json":{"schema":{"properties":{"type":{"type":"string","title":"Type"},"title":{"type":"string","title":"Title"},"status":{"type":"integer","title":"Status"},"detail":{"type":"string","title":"Detail"},"instance":{"type":"string","title":"Instance"},"request_id":{"type":"string","title":"Request Id"}},"type":"object","required":["type","title","status","detail","instance","request_id"],"title":"ProblemResponse"}}}},"422":{"description":"Conversion failed","content":{"application/problem+json":{"schema":{"properties":{"type":{"type":"string","title":"Type"},"title":{"type":"string","title":"Title"},"status":{"type":"integer","title":"Status"},"detail":{"type":"string","title":"Detail"},"instance":{"type":"string","title":"Instance"},"request_id":{"type":"string","title":"Request Id"}},"type":"object","required":["type","title","status","detail","instance","request_id"],"title":"ProblemResponse"}}}},"429":{"description":"Converter busy or edge limit reached","content":{"application/problem+json":{"schema":{"properties":{"type":{"type":"string","title":"Type"},"title":{"type":"string","title":"Title"},"status":{"type":"integer","title":"Status"},"detail":{"type":"string","title":"Detail"},"instance":{"type":"string","title":"Instance"},"request_id":{"type":"string","title":"Request Id"}},"type":"object","required":["type","title","status","detail","instance","request_id"],"title":"ProblemResponse"}}}},"504":{"description":"Hard 60-second conversion timeout","content":{"application/problem+json":{"schema":{"properties":{"type":{"type":"string","title":"Type"},"title":{"type":"string","title":"Title"},"status":{"type":"integer","title":"Status"},"detail":{"type":"string","title":"Detail"},"instance":{"type":"string","title":"Instance"},"request_id":{"type":"string","title":"Request Id"}},"type":"object","required":["type","title","status","detail","instance","request_id"],"title":"ProblemResponse"}}}}}}}},"components":{"schemas":{"Body_convert_v1_convert_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_convert_v1_convert_post"},"ConversionResponse":{"properties":{"markdown":{"type":"string","title":"Markdown","description":"Converted Markdown text."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"},"media_type":{"type":"string","title":"Media Type"},"extension":{"type":"string","title":"Extension"},"bytes":{"type":"integer","title":"Bytes"},"duration_ms":{"type":"integer","title":"Duration Ms"},"request_id":{"type":"string","title":"Request Id"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["markdown","filename","media_type","extension","bytes","duration_ms","request_id","warnings"],"title":"ConversionResponse"},"FormatResponse":{"properties":{"family":{"type":"string","title":"Family"},"name":{"type":"string","title":"Name"},"extensions":{"items":{"type":"string"},"type":"array","title":"Extensions"},"mime_types":{"items":{"type":"string"},"type":"array","title":"Mime Types"},"limitation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Limitation"}},"type":"object","required":["family","name","extensions","mime_types"],"title":"FormatResponse"},"FormatsResponse":{"properties":{"formats":{"items":{"$ref":"#/components/schemas/FormatResponse"},"type":"array","title":"Formats"},"maximum_bytes":{"type":"integer","title":"Maximum Bytes"}},"type":"object","required":["formats","maximum_bytes"],"title":"FormatsResponse"}}}}