{"openapi":"3.1.0","info":{"title":"SynthID Removal API | RemoveSynthID.com","version":"1.1.0","description":"Paid SynthID processing prioritizes image quality and uses server-set pricing. Create either one image or several at /api/v1/images. Completed warning results are charged, while failed or canceled unfinished processing is uncharged. There is no free processing allowance for the API."},"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Make an API key in Account > API access. Exclude keys from browser code and URLs."}},"schemas":{"Error":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string"}}},"Image":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{32}$"},"state":{"type":"string","enum":["awaiting_upload","queued","processing","ready","failed","deleting","deleted","expired","not_started"]},"progress":{"type":"integer"},"message":{"type":"string"},"filename":{"type":"string"},"code":{"type":["string","null"]},"expiresAt":{"type":["string","null"],"format":"date-time"},"chargeCents":{"type":"integer"},"qualityTier":{"type":["string","null"]},"warning":{"type":["string","null"]},"warningCode":{"type":["string","null"],"enum":["texture_changed","quality_changed","visible_label_and_quality",null]},"statusUrl":{"type":"string"},"downloadUrl":{"type":["string","null"]},"pollAfterSeconds":{"type":"integer"},"batchId":{"type":"string","pattern":"^[a-f0-9]{32}$"}}},"Account":{"type":"object","properties":{"currency":{"const":"USD"},"availableCents":{"type":"integer"},"priceCents":{"type":"integer","readOnly":true},"limits":{"type":"object","additionalProperties":{"type":"integer"}},"paidBalanceCents":{"type":"integer","minimum":0,"description":"The paid portion of your available balance."},"bonusBalanceCents":{"type":"integer","minimum":0,"description":"Promotional credit available to pay for images."},"bulkImagePriceCents":{"type":"integer","const":16,"readOnly":true},"bulkMinimumImages":{"type":"integer","const":5,"readOnly":true}}},"File":{"type":"object","required":["filename","contentType","sizeBytes"],"properties":{"filename":{"type":"string"},"contentType":{"type":"string","enum":["image/jpeg","image/png","image/webp"]},"sizeBytes":{"type":"integer","minimum":1,"maximum":15728640}}},"Batch":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{32}$"},"state":{"type":"string"},"priceCents":{"type":"integer","readOnly":true,"enum":[16,20]},"complete":{"type":"boolean"},"uploadExpiresAt":{"type":"string","format":"date-time"},"processingDeadlineAt":{"type":"string","format":"date-time"},"accessExpiresAt":{"type":"string","format":"date-time"},"statusUrl":{"type":"string"},"zipUrl":{"type":"string"},"pollAfterSeconds":{"type":"integer"},"items":{"type":"array","items":{"type":"object","description":"The original input ordering, retaining rejected entries with a null id.","properties":{"id":{"type":["string","null"]},"state":{"type":"string","enum":["awaiting_upload","queued","processing","ready","failed","deleting","deleted","expired","not_started"]},"progress":{"type":"integer"},"message":{"type":"string"},"filename":{"type":"string"},"code":{"type":["string","null"]},"expiresAt":{"type":["string","null"],"format":"date-time"},"chargeCents":{"type":"integer"},"qualityTier":{"type":["string","null"]},"warning":{"type":["string","null"]},"warningCode":{"type":["string","null"],"enum":["texture_changed","quality_changed","visible_label_and_quality",null]},"statusUrl":{"type":"string"},"downloadUrl":{"type":["string","null"]},"pollAfterSeconds":{"type":"integer"},"batchId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"ordinal":{"type":"integer"}}}},"uploads":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{32}$"},"ordinal":{"type":"integer"},"url":{"type":"string","format":"uri"},"method":{"const":"PUT"},"headers":{"type":"object","properties":{"Content-Type":{"type":"string"}}},"contentType":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"confirmUrl":{"type":"string"}}}}}}},"responses":{"Error400":{"description":"Invalid request","headers":{"Retry-After":{"description":"Delay before retrying, expressed in seconds when supplied.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error401":{"description":"Invalid or revoked API key","headers":{"Retry-After":{"description":"Delay before retrying, expressed in seconds when supplied.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error402":{"description":"Insufficient prepaid balance","headers":{"Retry-After":{"description":"Delay before retrying, expressed in seconds when supplied.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error404":{"description":"Not found or not owned","headers":{"Retry-After":{"description":"Delay before retrying, expressed in seconds when supplied.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error409":{"description":"Idempotency conflict, active batch or price mismatch","headers":{"Retry-After":{"description":"Delay before retrying, expressed in seconds when supplied.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error410":{"description":"Expired or missing result","headers":{"Retry-After":{"description":"Delay before retrying, expressed in seconds when supplied.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error413":{"description":"Request too large","headers":{"Retry-After":{"description":"Delay before retrying, expressed in seconds when supplied.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error429":{"description":"Rate or upload concurrency limit","headers":{"Retry-After":{"description":"Delay before retrying, expressed in seconds when supplied.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error503":{"description":"Processing temporarily unavailable","headers":{"Retry-After":{"description":"Delay before retrying, expressed in seconds when supplied.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/account":{"get":{"operationId":"getAccount","summary":"Read balance and limits","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"410":{"$ref":"#/components/responses/Error410"},"413":{"$ref":"#/components/responses/Error413"},"429":{"$ref":"#/components/responses/Error429"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/images":{"post":{"operationId":"uploadImages","summary":"Upload one image or create a batch","description":"Send JSON metadata for 1-20 images, each up to 15 MiB, to create an operation with individual storage uploads. A direct multipart upload accepts one image, with a total request limit of 16 MiB. Pricing is determined by the service. Use the Python and Node.js helpers to handle JSON creation, image transfers and confirmations.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Keep content identical when reusing the key for retries. Scope is the account plus creation endpoint, with seven-day retention.","schema":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"additionalProperties":false,"properties":{"image":{"type":"string","format":"binary"}}},"encoding":{"image":{"contentType":"image/jpeg, image/png, image/webp"}}},"application/json":{"schema":{"type":"object","required":["files"],"properties":{"files":{"type":"array","minItems":1,"maxItems":20,"items":{"$ref":"#/components/schemas/File"}}},"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Batch"}}}},"202":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Image"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"410":{"$ref":"#/components/responses/Error410"},"413":{"$ref":"#/components/responses/Error413"},"429":{"$ref":"#/components/responses/Error429"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/images/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"get":{"operationId":"getImage","summary":"Read status, warnings and expiry","description":"Use 15-second queue polling and 5-second processing polling, ending at terminal states.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Image"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"410":{"$ref":"#/components/responses/Error410"},"413":{"$ref":"#/components/responses/Error413"},"429":{"$ref":"#/components/responses/Error429"},"503":{"$ref":"#/components/responses/Error503"}}},"delete":{"operationId":"deleteImage","summary":"Cancel or delete an image","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"202":{"description":"Cleanup pending"},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"410":{"$ref":"#/components/responses/Error410"},"413":{"$ref":"#/components/responses/Error413"},"429":{"$ref":"#/components/responses/Error429"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/images/{id}/download":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"get":{"operationId":"downloadImage","summary":"Download a ready result","responses":{"200":{"description":"Authenticated result stream","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"410":{"$ref":"#/components/responses/Error410"},"413":{"$ref":"#/components/responses/Error413"},"429":{"$ref":"#/components/responses/Error429"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/batches/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"get":{"operationId":"getBatch","summary":"Read ordered batch statuses","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Batch"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"410":{"$ref":"#/components/responses/Error410"},"413":{"$ref":"#/components/responses/Error413"},"429":{"$ref":"#/components/responses/Error429"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/batches/{id}/items/{imageId}/uploaded":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}},{"name":"imageId","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"post":{"operationId":"confirmUpload","summary":"Confirm a direct upload","responses":{"200":{"description":"Already handled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Image"}}}},"202":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"410":{"$ref":"#/components/responses/Error410"},"413":{"$ref":"#/components/responses/Error413"},"429":{"$ref":"#/components/responses/Error429"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/batches/{id}/cancel":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"post":{"operationId":"cancelBatch","summary":"Cancel unfinished items","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Batch"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"410":{"$ref":"#/components/responses/Error410"},"413":{"$ref":"#/components/responses/Error413"},"429":{"$ref":"#/components/responses/Error429"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/batches/{id}/zip":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"get":{"operationId":"downloadBatchZip","summary":"Stream ready results as a ZIP","responses":{"200":{"description":"Authenticated result stream","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"410":{"$ref":"#/components/responses/Error410"},"413":{"$ref":"#/components/responses/Error413"},"429":{"$ref":"#/components/responses/Error429"},"503":{"$ref":"#/components/responses/Error503"}}}}},"servers":[{"url":"https://removesynthid.com"}]}