{"openapi":"3.1.0","info":{"title":"SciDraw Public Image API","version":"2026-08-07","description":"Asynchronous image generation, editing, and conversion API. Public limits: 10 job creations per minute per API key; 120 authenticated reads per minute per API key; 8 active jobs per account; 4 outputs per generation or edit job; bounded waits up to 30 seconds."},"servers":[{"url":"https://sci-draw.com"}],"externalDocs":{"description":"SciDraw API documentation","url":"https://sci-draw.com/docs/api"},"tags":[{"name":"Images","description":"Create image jobs."},{"name":"Jobs","description":"Read job state and output files."},{"name":"Credits","description":"Read the available balance."}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"SciDraw API key"}},"schemas":{"GenerationRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":5,"maxLength":2000},"aspect_ratio":{"type":"string","enum":["1:1","16:9","9:16","4:3","3:4","3:2","2:3","5:4","4:5","21:9"],"default":"1:1"},"resolution":{"type":"string","enum":["2K","4K"],"default":"2K"},"count":{"type":"integer","minimum":1,"maximum":4,"default":1}},"required":["prompt"],"additionalProperties":false},"EditRequest":{"type":"object","properties":{"prompt":{"type":"string","minLength":5,"maxLength":2000},"aspect_ratio":{"type":"string","enum":["1:1","16:9","9:16","4:3","3:4","3:2","2:3","5:4","4:5","21:9"]},"resolution":{"type":"string","enum":["2K","4K"],"default":"2K"},"count":{"type":"integer","minimum":1,"maximum":4,"default":1}},"required":["prompt"],"additionalProperties":false},"ConversionRequest":{"type":"object","properties":{"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff"]},"vector_mode":{"type":"string","enum":["editable_text","full_vector"],"default":"editable_text"},"dpi":{"type":"string","enum":["300","600","1000"],"default":"300"}},"required":["format"],"additionalProperties":false},"ImageJob":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["image_job"]},"type":{"type":"string","enum":["image_generation","image_edit","image_conversion"]},"status":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"credits_reserved":{"type":"integer","minimum":0},"credits_consumed":{"type":"integer","minimum":0},"result":{"type":["object","null"],"properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff","jpeg","webp"]},"mime_type":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0}},"required":["id","url","format","mime_type"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["files"],"additionalProperties":false},"error":{"type":["object","null"],"properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["id","object","type","status","created_at","completed_at","credits_reserved","credits_consumed","result","error"],"additionalProperties":false},"Credits":{"type":"object","properties":{"balance":{"type":"integer","minimum":0}},"required":["balance"],"additionalProperties":false},"ErrorEnvelope":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}},"parameters":{}},"paths":{"/api/v1/images/generations":{"post":{"tags":["Images"],"summary":"Create an image generation job","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":255,"example":"client-request-0001"},"required":true,"in":"header","name":"Idempotency-Key"},{"schema":{"type":"string","pattern":"^wait=([1-9]|[12][0-9]|30)$","example":"wait=10"},"required":false,"in":"header","name":"Prefer"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"prompt":"A clean scientific illustration of exosome biogenesis","aspect_ratio":"16:9","resolution":"2K","count":1},"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":5,"maxLength":2000},"aspect_ratio":{"type":"string","enum":["1:1","16:9","9:16","4:3","3:4","3:2","2:3","5:4","4:5","21:9"],"default":"1:1"},"resolution":{"type":"string","enum":["2K","4K"],"default":"2K"},"count":{"type":"integer","minimum":1,"maximum":4,"default":1}},"required":["prompt"],"additionalProperties":false}}}},"responses":{"200":{"description":"A terminal job returned after bounded waiting.","content":{"application/json":{"example":{"success":true,"data":{"id":"job_0123456789abcdef","object":"image_job","type":"image_generation","status":"succeeded","created_at":"2026-08-07T12:00:00.000Z","completed_at":"2026-08-07T12:00:41.000Z","credits_reserved":5,"credits_consumed":5,"result":{"files":[{"id":"file_0123456789abcdef","url":"https://sci-draw.com/generated/example.png","format":"png","mime_type":"image/png","width":2048,"height":1152}]},"error":null}},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["image_job"]},"type":{"type":"string","enum":["image_generation","image_edit","image_conversion"]},"status":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"credits_reserved":{"type":"integer","minimum":0},"credits_consumed":{"type":"integer","minimum":0},"result":{"type":["object","null"],"properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff","jpeg","webp"]},"mime_type":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0}},"required":["id","url","format","mime_type"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["files"],"additionalProperties":false},"error":{"type":["object","null"],"properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["id","object","type","status","created_at","completed_at","credits_reserved","credits_consumed","result","error"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"202":{"description":"The job was accepted.","content":{"application/json":{"example":{"success":true,"data":{"id":"job_0123456789abcdef","object":"image_job","type":"image_generation","status":"queued","created_at":"2026-08-07T12:00:00.000Z","completed_at":null,"credits_reserved":5,"credits_consumed":0,"result":null,"error":null}},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["image_job"]},"type":{"type":"string","enum":["image_generation","image_edit","image_conversion"]},"status":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"credits_reserved":{"type":"integer","minimum":0},"credits_consumed":{"type":"integer","minimum":0},"result":{"type":["object","null"],"properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff","jpeg","webp"]},"mime_type":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0}},"required":["id","url","format","mime_type"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["files"],"additionalProperties":false},"error":{"type":["object","null"],"properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["id","object","type","status","created_at","completed_at","credits_reserved","credits_consumed","result","error"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"A valid API key is required.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"402":{"description":"The account does not have enough credits.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The API key does not have the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The idempotency key conflicts with another request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"A public request-rate or account active-job limit has been exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The request could not be completed.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/api/v1/images/edits":{"post":{"tags":["Images"],"summary":"Create an image edit job","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":255,"example":"client-request-0001"},"required":true,"in":"header","name":"Idempotency-Key"},{"schema":{"type":"string","pattern":"^wait=([1-9]|[12][0-9]|30)$","example":"wait=10"},"required":false,"in":"header","name":"Prefer"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary"},"prompt":{"type":"string","minLength":5,"maxLength":2000},"aspect_ratio":{"type":"string"},"resolution":{"type":"string","enum":["2K","4K"]},"count":{"type":"integer","minimum":1,"maximum":4}},"required":["image","prompt"]}}}},"responses":{"200":{"description":"A terminal job returned after bounded waiting.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["image_job"]},"type":{"type":"string","enum":["image_generation","image_edit","image_conversion"]},"status":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"credits_reserved":{"type":"integer","minimum":0},"credits_consumed":{"type":"integer","minimum":0},"result":{"type":["object","null"],"properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff","jpeg","webp"]},"mime_type":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0}},"required":["id","url","format","mime_type"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["files"],"additionalProperties":false},"error":{"type":["object","null"],"properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["id","object","type","status","created_at","completed_at","credits_reserved","credits_consumed","result","error"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"202":{"description":"The job was accepted.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["image_job"]},"type":{"type":"string","enum":["image_generation","image_edit","image_conversion"]},"status":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"credits_reserved":{"type":"integer","minimum":0},"credits_consumed":{"type":"integer","minimum":0},"result":{"type":["object","null"],"properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff","jpeg","webp"]},"mime_type":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0}},"required":["id","url","format","mime_type"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["files"],"additionalProperties":false},"error":{"type":["object","null"],"properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["id","object","type","status","created_at","completed_at","credits_reserved","credits_consumed","result","error"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"The request or source image is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"A valid API key is required.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"402":{"description":"The account does not have enough credits.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The API key does not have the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The idempotency key conflicts with another request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"A public request-rate or account active-job limit has been exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The request could not be completed.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/api/v1/images/conversions":{"post":{"tags":["Images"],"summary":"Create an image conversion job","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":255,"example":"client-request-0001"},"required":true,"in":"header","name":"Idempotency-Key"},{"schema":{"type":"string","pattern":"^wait=([1-9]|[12][0-9]|30)$","example":"wait=10"},"required":false,"in":"header","name":"Prefer"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"image":{"type":"string","format":"binary"},"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff"]},"vector_mode":{"type":"string","enum":["editable_text","full_vector"]},"dpi":{"type":"string","enum":["300","600","1000"]}},"required":["image","format"]}}}},"responses":{"200":{"description":"A terminal job returned after bounded waiting.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["image_job"]},"type":{"type":"string","enum":["image_generation","image_edit","image_conversion"]},"status":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"credits_reserved":{"type":"integer","minimum":0},"credits_consumed":{"type":"integer","minimum":0},"result":{"type":["object","null"],"properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff","jpeg","webp"]},"mime_type":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0}},"required":["id","url","format","mime_type"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["files"],"additionalProperties":false},"error":{"type":["object","null"],"properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["id","object","type","status","created_at","completed_at","credits_reserved","credits_consumed","result","error"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"202":{"description":"The job was accepted.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["image_job"]},"type":{"type":"string","enum":["image_generation","image_edit","image_conversion"]},"status":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"credits_reserved":{"type":"integer","minimum":0},"credits_consumed":{"type":"integer","minimum":0},"result":{"type":["object","null"],"properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff","jpeg","webp"]},"mime_type":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0}},"required":["id","url","format","mime_type"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["files"],"additionalProperties":false},"error":{"type":["object","null"],"properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["id","object","type","status","created_at","completed_at","credits_reserved","credits_consumed","result","error"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"400":{"description":"The request or source image is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"A valid API key is required.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"402":{"description":"The account does not have enough credits.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The API key does not have the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The idempotency key conflicts with another request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"A public request-rate or account active-job limit has been exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The request could not be completed.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/api/v1/jobs/{job_id}":{"get":{"tags":["Jobs"],"summary":"Read an image job","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","example":"job_012345"},"required":true,"name":"job_id","in":"path"}],"responses":{"200":{"description":"The current job state.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["image_job"]},"type":{"type":"string","enum":["image_generation","image_edit","image_conversion"]},"status":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"credits_reserved":{"type":"integer","minimum":0},"credits_consumed":{"type":"integer","minimum":0},"result":{"type":["object","null"],"properties":{"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["svg","pptx","png","pdf","tiff","jpeg","webp"]},"mime_type":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0},"height":{"type":"integer","exclusiveMinimum":0}},"required":["id","url","format","mime_type"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["files"],"additionalProperties":false},"error":{"type":["object","null"],"properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["id","object","type","status","created_at","completed_at","credits_reserved","credits_consumed","result","error"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"401":{"description":"A valid API key is required.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The API key does not have the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The job was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"A public request-rate or account active-job limit has been exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The request could not be completed.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/api/v1/credits":{"get":{"tags":["Credits"],"summary":"Read the current credit balance","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The current available credit balance.","content":{"application/json":{"example":{"success":true,"data":{"balance":125}},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"balance":{"type":"integer","minimum":0}},"required":["balance"],"additionalProperties":false}},"required":["success","data"],"additionalProperties":false}}}},"401":{"description":"A valid API key is required.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The API key does not have the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"A public request-rate or account active-job limit has been exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The request could not be completed.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_CREDITS","RATE_LIMIT_EXCEEDED","IDEMPOTENCY_CONFLICT","CONTENT_POLICY_VIOLATION","JOB_NOT_FOUND","JOB_FAILED","JOB_CANCELED","INTERNAL_ERROR"]},"message":{"type":"string","minLength":1},"request_id":{"type":"string"}},"required":["code","message","request_id"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}}},"webhooks":{}}