{"openapi":"3.1.0","info":{"title":"Converterrr API","version":"1.0.0","description":"Convert files between 140+ formats. The API is included in every paid plan. Authenticate with `Authorization: Bearer <API key>`.","contact":{"email":"support@converterrr.com","url":"https://www.converterrr.com/developers"}},"servers":[{"url":"https://www.converterrr.com/api/v1"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"cvr_live_…"}},"schemas":{"Job":{"type":"object","properties":{"id":{"type":"string","example":"cm3x9q2f80001"},"object":{"type":"string","enum":["job"]},"status":{"type":"string","enum":["queued","processing","completed","failed","cancelled","expired"]},"source":{"type":"string","enum":["web","api"]},"operation":{"type":"string","enum":["convert","compress"]},"compression":{"type":"object","nullable":true,"description":"Set for compression jobs.","properties":{"level":{"type":"string","enum":["light","balanced","strong"]},"target_bytes":{"type":"integer","nullable":true}}},"conversion":{"type":"object","properties":{"from":{"type":"string","example":"docx"},"to":{"type":"string","example":"pdf"},"label":{"type":"string","example":"DOCX → PDF"}}},"engine":{"type":"string","nullable":true,"example":"libreoffice"},"input":{"type":"object","properties":{"name":{"type":"string"},"size":{"type":"integer"}}},"output":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"size":{"type":"integer","nullable":true},"url":{"type":"string","format":"uri"},"download_url":{"type":"string","format":"uri"}}},"credits":{"type":"integer"},"error":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"started_at":{"type":"string","format":"date-time","nullable":true},"completed_at":{"type":"string","format":"date-time","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"duration_ms":{"type":"integer","nullable":true}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"quota_exceeded"},"message":{"type":"string","example":"You've used today's free cloud credits."}}}}},"Options":{"type":"object","properties":{"quality":{"type":"integer","minimum":1,"maximum":100},"width":{"type":"integer"},"height":{"type":"integer"},"keep_metadata":{"type":"boolean"},"video_bitrate_kbps":{"type":"integer"},"audio_bitrate_kbps":{"type":"integer"},"sample_rate":{"type":"integer"},"fps":{"type":"integer"},"dpi":{"type":"integer","minimum":72,"maximum":600}}}}},"paths":{"/formats":{"get":{"summary":"List formats and conversions","security":[],"parameters":[{"name":"from","in":"query","schema":{"type":"string"},"description":"Only conversions from this format"}],"responses":{"200":{"description":"Formats and cloud conversions"}}}},"/uploads":{"post":{"summary":"Create a presigned upload","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["filename"],"properties":{"filename":{"type":"string"}}}}}},"responses":{"201":{"description":"PUT the raw file bytes to upload_url, then reference id as input.upload_id","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"upload_url":{"type":"string"},"method":{"type":"string"},"max_size":{"type":"integer"},"expires_at":{"type":"string"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"No active paid plan (`plan_required`), or not enough credits (`insufficient_credits`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/jobs":{"post":{"summary":"Create a conversion or compression job","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"oneOf":[{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"filename":{"type":"string"}}},{"type":"object","required":["upload_id"],"properties":{"upload_id":{"type":"string"}}}]},"input_format":{"type":"string","description":"Detected from the file name when omitted"},"output_format":{"type":"string","example":"pdf","description":"Required for conversions; ignored when operation is compress"},"operation":{"type":"string","enum":["convert","compress"],"default":"convert","description":"compress: same format in, smaller file out"},"compression_level":{"type":"string","enum":["light","balanced","strong"],"default":"balanced"},"target_size":{"oneOf":[{"type":"integer","minimum":1000},{"type":"string","example":"500kb"}],"description":"Compression target in bytes or as \"500kb\" / \"2mb\" (decimal units). Overrides the level's quality; lossless formats can't hit a target."},"options":{"$ref":"#/components/schemas/Options"},"webhook_url":{"type":"string","format":"uri"}}}},"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"},"output_format":{"type":"string"},"input_format":{"type":"string"},"operation":{"type":"string","enum":["convert","compress"]},"compression_level":{"type":"string","enum":["light","balanced","strong"]},"target_size":{"type":"string","example":"2mb"},"options":{"type":"string","description":"JSON-encoded options"},"webhook_url":{"type":"string"}}}}}},"responses":{"201":{"description":"Job created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"No active paid plan (`plan_required`), or not enough credits (`insufficient_credits`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File too large for your plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"summary":"List jobs","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","maximum":100}},{"name":"starting_after","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of jobs"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"No active paid plan (`plan_required`), or not enough credits (`insufficient_credits`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/jobs/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"summary":"Retrieve a job","responses":{"200":{"description":"The job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"No active paid plan (`plan_required`), or not enough credits (`insufficient_credits`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"summary":"Cancel a queued job or delete its files early","responses":{"200":{"description":"The updated job"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"No active paid plan (`plan_required`), or not enough credits (`insufficient_credits`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/account":{"get":{"summary":"Credits and limits for the API key's account","responses":{"200":{"description":"Account summary"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"No active paid plan (`plan_required`), or not enough credits (`insufficient_credits`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited or quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}