{
  "openapi": "3.1.0",
  "info": {
    "title": "withoutbg API",
    "description": "\n<a class=\"navbar-brand\" href=\"https://withoutbg.com/\">\n    <img src=\"https://withoutbg.com/images/logo.png\" height=\"36\" alt=\"logo\">\n</a>\n\nCloud-hosted background removal and alpha matte extraction at\n`https://api.withoutbg.com`. Billed per successful image. Auth via `X-API-Key`.\n\n**Machine-readable spec (recommended LLM context):** [/openapi.json](/openapi.json) ·\n[/llms.txt](/llms.txt)\n\n## Shared rules\n\n| Rule | Value |\n|------|-------|\n| Base URL | `https://api.withoutbg.com` |\n| Auth header | `X-API-Key: YOUR_API_KEY` |\n| Rate limit (product) | 30 requests/minute per API key (gateway may return `429`) |\n| Max input size | 20.0 MB (hard reject) |\n| Prep downscale | Longest side > 5000 px or > 25 MP → auto-downscale (not rejected) |\n| Paid call cost | 1 credit on HTTP 200 (credits endpoint is free) |\n| Inference size | Max ~1024 px on the longer side; matte/cutout mapped back to full-res RGB. Edge detail is capped at inference resolution. |\n\n**Binary vs Base64:** Binary (`multipart/form-data`) fits servers, CLIs, and file I/O.\nBase64 JSON fits browsers, serverless, and JSON-only pipelines.\n\n**Cutout vs Alpha matte:** Cutout returns a ready RGBA PNG. Alpha matte returns a grayscale\nmask so you can keep a full-res original local, apply the matte yourself, and reuse one mask\nfor multiple composites.\n\n**Supported formats:** JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF\n\n**Human docs:** [Pro Model API](https://withoutbg.com/docs/pro-model)\n",
    "contact": {
      "name": "withoutbg - contact",
      "url": "https://withoutbg.com/contact"
    },
    "version": "1.5.0"
  },
  "servers": [
    {
      "url": "https://api.withoutbg.com",
      "description": "Production"
    }
  ],
  "paths": {
    "/v1.0/alpha-channel": {
      "post": {
        "tags": [
          "Get Alpha Matte"
        ],
        "summary": "Get alpha matte (PNG)",
        "description": "Return a grayscale alpha matte as a PNG.\n\n**Cost:** 1 credit on HTTP 200.\n\nPrefer this over the cutout endpoint when you need a full-resolution master: keep the original locally, optionally send a ~1024 px proxy, then apply the matte yourself. Edge detail is capped at model inference resolution (~1024 long side).\n\nBinary sibling of `/v1.0/alpha-channel-base64`. Response metadata is returned in `X-Input-Dimensions`, `X-Processed-Dimensions`, `X-Was-Downscaled`, and optional `X-Image-Type-*` headers.",
        "operationId": "alpha_channel_v1_0_alpha_channel_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/AlphaChannelRequest",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "Image file (JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF). Maximum size: 20.0 MB."
                  }
                },
                "type": "object",
                "required": [
                  "file"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success — PNG image body",
            "headers": {
              "X-Input-Dimensions": {
                "description": "Decoded input size as `width,height` (pixels).",
                "schema": {
                  "type": "string",
                  "example": "5568,3712"
                }
              },
              "X-Processed-Dimensions": {
                "description": "Size after server prep downscale (longest side / megapixel caps) as `width,height`. Not the model inference resolution (~1024 long side).",
                "schema": {
                  "type": "string",
                  "example": "5000,3333"
                }
              },
              "X-Was-Downscaled": {
                "description": "Whether the input was downscaled during server prep (`true`/`false`).",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ],
                  "example": "true"
                }
              },
              "X-Image-Type-Photo": {
                "description": "Optional photo-class probability from image-type classifier.",
                "schema": {
                  "type": "string",
                  "example": "0.87"
                }
              },
              "X-Image-Type-Graphic": {
                "description": "Optional graphic-class probability from image-type classifier.",
                "schema": {
                  "type": "string",
                  "example": "0.13"
                }
              }
            },
            "content": {
              "image/png": {}
            }
          },
          "401": {
            "description": "Invalid API Key",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Invalid API Key"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credit. Please top up API credits.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Insufficient credit. Please top up API credits."
                }
              }
            }
          },
          "403": {
            "description": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated."
                }
              }
            }
          },
          "413": {
            "description": "File size too large. Maximum file size is 20.0 MB.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "File size too large. Maximum file size is 20.0 MB"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type. Supported formats are: JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Unsupported Media Type. Supported formats are: JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (product policy: 30 requests/minute per API key). May be returned by the API gateway. Retry with exponential backoff.",
            "content": {
              "application/json": {
                "example": {
                  "error": "Too Many Requests",
                  "status": 429,
                  "message": "Rate limit exceeded. Please try again later"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Internal Server Error. Please contact support: contact@withoutbg.com"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/v1.0/image-without-background": {
      "post": {
        "tags": [
          "Remove Background"
        ],
        "summary": "Remove background (PNG)",
        "description": "Remove the background and return an RGBA PNG cutout.\n\n**Cost:** 1 credit on HTTP 200.\n\nBest for servers, CLIs, and batch pipelines that want raw PNG bytes (no JSON/base64 overhead). For a full-resolution compositing workflow, prefer the alpha-matte endpoints.\n\nBinary sibling of `/v1.0/image-without-background-base64`. Response metadata is returned in `X-Input-Dimensions`, `X-Processed-Dimensions`, `X-Was-Downscaled`, and optional `X-Image-Type-*` headers.",
        "operationId": "with_transparent_background_v1_0_image_without_background_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ImageWithoutBackgroundRequest",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "Image file (JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF). Maximum size: 20.0 MB."
                  }
                },
                "type": "object",
                "required": [
                  "file"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success — PNG image body",
            "headers": {
              "X-Input-Dimensions": {
                "description": "Decoded input size as `width,height` (pixels).",
                "schema": {
                  "type": "string",
                  "example": "5568,3712"
                }
              },
              "X-Processed-Dimensions": {
                "description": "Size after server prep downscale (longest side / megapixel caps) as `width,height`. Not the model inference resolution (~1024 long side).",
                "schema": {
                  "type": "string",
                  "example": "5000,3333"
                }
              },
              "X-Was-Downscaled": {
                "description": "Whether the input was downscaled during server prep (`true`/`false`).",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ],
                  "example": "true"
                }
              },
              "X-Image-Type-Photo": {
                "description": "Optional photo-class probability from image-type classifier.",
                "schema": {
                  "type": "string",
                  "example": "0.87"
                }
              },
              "X-Image-Type-Graphic": {
                "description": "Optional graphic-class probability from image-type classifier.",
                "schema": {
                  "type": "string",
                  "example": "0.13"
                }
              }
            },
            "content": {
              "image/png": {}
            }
          },
          "401": {
            "description": "Invalid API Key",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Invalid API Key"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credit. Please top up API credits.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Insufficient credit. Please top up API credits."
                }
              }
            }
          },
          "403": {
            "description": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated."
                }
              }
            }
          },
          "413": {
            "description": "File size too large. Maximum file size is 20.0 MB.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "File size too large. Maximum file size is 20.0 MB"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type. Supported formats are: JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Unsupported Media Type. Supported formats are: JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (product policy: 30 requests/minute per API key). May be returned by the API gateway. Retry with exponential backoff.",
            "content": {
              "application/json": {
                "example": {
                  "error": "Too Many Requests",
                  "status": 429,
                  "message": "Rate limit exceeded. Please try again later"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Internal Server Error. Please contact support: contact@withoutbg.com"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/v1.0/image-without-background-base64": {
      "post": {
        "tags": [
          "Remove Background"
        ],
        "summary": "Remove background (Base64 JSON)",
        "description": "Remove the background and return a Base64 RGBA PNG in JSON.\n\n**Cost:** 1 credit on HTTP 200.\n\nBest for browsers, serverless, and JSON-only pipelines. Send a raw Base64 string (no `data:` URI prefix). Binary sibling: `/v1.0/image-without-background`.\n\nFor full-resolution compositing, prefer the alpha-matte endpoints.",
        "operationId": "image_without_background_base64_v1_0_image_without_background_base64_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageBase64Request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImageWithoutBackgroundResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid API Key",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Invalid API Key"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credit. Please top up API credits.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Insufficient credit. Please top up API credits."
                }
              }
            }
          },
          "403": {
            "description": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (product policy: 30 requests/minute per API key). May be returned by the API gateway. Retry with exponential backoff.",
            "content": {
              "application/json": {
                "example": {
                  "error": "Too Many Requests",
                  "status": 429,
                  "message": "Rate limit exceeded. Please try again later"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Internal Server Error. Please contact support: contact@withoutbg.com"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/v1.0/alpha-channel-base64": {
      "post": {
        "tags": [
          "Get Alpha Matte"
        ],
        "summary": "Get alpha matte (Base64 JSON)",
        "description": "Return a grayscale alpha matte as Base64 PNG in JSON.\n\n**Cost:** 1 credit on HTTP 200.\n\nRecommended when you keep a full-res original locally, send a ~1024 px proxy, then upscale/apply the matte yourself. Binary sibling: `/v1.0/alpha-channel`.",
        "operationId": "alpha_channel_base64_v1_0_alpha_channel_base64_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageBase64Request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlphaChannelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid API Key",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Invalid API Key"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credit. Please top up API credits.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Insufficient credit. Please top up API credits."
                }
              }
            }
          },
          "403": {
            "description": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (product policy: 30 requests/minute per API key). May be returned by the API gateway. Retry with exponential backoff.",
            "content": {
              "application/json": {
                "example": {
                  "error": "Too Many Requests",
                  "status": 429,
                  "message": "Rate limit exceeded. Please try again later"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Internal Server Error. Please contact support: contact@withoutbg.com"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/v1.0/car-image-without-background": {
      "post": {
        "tags": [
          "Remove Background (Cars)"
        ],
        "summary": "Remove car background (PNG)",
        "description": "Remove background from a car photo and return an RGBA PNG.\n\n**Cost:** 1 credit on HTTP 200.\n\nPreferred migration path for vehicle clients. Accepts reserved form fields `include_shadow` and `translucent_windows` (currently ignored).\n\nBinary sibling of `/v1.0/car-image-without-background-base64`. Response metadata is returned in `X-Input-Dimensions`, `X-Processed-Dimensions`, `X-Was-Downscaled`, and optional `X-Image-Type-*` headers.",
        "operationId": "car_image_without_background_v1_0_car_image_without_background_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CarImageWithoutBackgroundRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success — PNG image body",
            "headers": {
              "X-Input-Dimensions": {
                "description": "Decoded input size as `width,height` (pixels).",
                "schema": {
                  "type": "string",
                  "example": "5568,3712"
                }
              },
              "X-Processed-Dimensions": {
                "description": "Size after server prep downscale (longest side / megapixel caps) as `width,height`. Not the model inference resolution (~1024 long side).",
                "schema": {
                  "type": "string",
                  "example": "5000,3333"
                }
              },
              "X-Was-Downscaled": {
                "description": "Whether the input was downscaled during server prep (`true`/`false`).",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ],
                  "example": "true"
                }
              },
              "X-Image-Type-Photo": {
                "description": "Optional photo-class probability from image-type classifier.",
                "schema": {
                  "type": "string",
                  "example": "0.87"
                }
              },
              "X-Image-Type-Graphic": {
                "description": "Optional graphic-class probability from image-type classifier.",
                "schema": {
                  "type": "string",
                  "example": "0.13"
                }
              }
            },
            "content": {
              "image/png": {}
            }
          },
          "401": {
            "description": "Invalid API Key",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Invalid API Key"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credit. Please top up API credits.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Insufficient credit. Please top up API credits."
                }
              }
            }
          },
          "403": {
            "description": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated."
                }
              }
            }
          },
          "413": {
            "description": "File size too large. Maximum file size is 20.0 MB.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "File size too large. Maximum file size is 20.0 MB"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type. Supported formats are: JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Unsupported Media Type. Supported formats are: JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (product policy: 30 requests/minute per API key). May be returned by the API gateway. Retry with exponential backoff.",
            "content": {
              "application/json": {
                "example": {
                  "error": "Too Many Requests",
                  "status": 429,
                  "message": "Rate limit exceeded. Please try again later"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Internal Server Error. Please contact support: contact@withoutbg.com"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/v1.0/car-image-without-background-base64": {
      "post": {
        "tags": [
          "Remove Background (Cars)"
        ],
        "summary": "Remove car background (Base64 JSON)",
        "description": "Remove background from a car photo; return Base64 RGBA PNG in JSON.\n\n**Cost:** 1 credit on HTTP 200.\n\nAccepts reserved JSON fields `include_shadow` and `translucent_windows` (currently ignored). Binary sibling: `/v1.0/car-image-without-background`.",
        "operationId": "car_image_without_background_base64_v1_0_car_image_without_background_base64_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CarImageBase64Request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImageWithoutBackgroundResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid API Key",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Invalid API Key"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credit. Please top up API credits.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Insufficient credit. Please top up API credits."
                }
              }
            }
          },
          "403": {
            "description": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Credits Expired. Please top up API credits. If you have existing credits, they will be reactivated."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (product policy: 30 requests/minute per API key). May be returned by the API gateway. Retry with exponential backoff.",
            "content": {
              "application/json": {
                "example": {
                  "error": "Too Many Requests",
                  "status": 429,
                  "message": "Rate limit exceeded. Please try again later"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Internal Server Error. Please contact support: contact@withoutbg.com"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/available-credit": {
      "get": {
        "tags": [
          "Get API Credit Information"
        ],
        "summary": "Get available API credits",
        "description": "Return the current credit balance and expiration date for the API key.\n\n**Cost:** free (does not consume credits).\n\nUse for monitoring, dashboards, pre-flight checks, and recovering from 402 (insufficient credits) or 403 (expired credits) on paid endpoints.",
        "operationId": "get_your_available_credit_available_credit_get",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreditInfo"
                }
              }
            }
          },
          "401": {
            "description": "Invalid API Key",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Invalid API Key"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (product policy: 30 requests/minute per API key). May be returned by the API gateway. Retry with exponential backoff.",
            "content": {
              "application/json": {
                "example": {
                  "error": "Too Many Requests",
                  "status": 429,
                  "message": "Rate limit exceeded. Please try again later"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Internal Server Error. Please contact support: contact@withoutbg.com"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AlphaChannelRequest": {
        "properties": {
          "file": {
            "type": "string",
            "format": "binary",
            "title": "File"
          }
        },
        "type": "object",
        "required": [
          "file"
        ],
        "title": "AlphaChannelRequest"
      },
      "AlphaChannelResponse": {
        "properties": {
          "input_dimensions": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Input Dimensions",
            "description": "Decoded input size as `[width, height]` (pixels).",
            "examples": [
              [
                5568,
                3712
              ]
            ]
          },
          "processed_dimensions": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Processed Dimensions",
            "description": "Size after server prep downscale (longest-side / megapixel caps) as `[width, height]`. Distinct from model inference resolution (~1024 long side).",
            "examples": [
              [
                5000,
                3333
              ]
            ]
          },
          "was_downscaled": {
            "type": "boolean",
            "title": "Was Downscaled",
            "description": "True when the input was downscaled during server prep.",
            "examples": [
              true
            ]
          },
          "image_type": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "number"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Type",
            "description": "Optional probabilities for photo vs graphic image-type classes.",
            "examples": [
              {
                "graphic": 0.13,
                "photo": 0.87
              }
            ]
          },
          "alpha_base64": {
            "type": "string",
            "title": "Alpha Base64",
            "description": "Grayscale alpha matte as Base64 PNG. Prepend `data:image/png;base64,` to display in a browser.",
            "examples": [
              "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="
            ]
          }
        },
        "type": "object",
        "required": [
          "input_dimensions",
          "processed_dimensions",
          "was_downscaled",
          "alpha_base64"
        ],
        "title": "AlphaChannelResponse",
        "description": "Base64 alpha channel matte."
      },
      "CarImageBase64Request": {
        "properties": {
          "image_base64": {
            "type": "string",
            "title": "Image Base64",
            "description": "Input image as a raw Base64 string (no `data:` URI prefix). Supported formats: JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF. Maximum decoded size: 20.0 MB.",
            "examples": [
              "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="
            ]
          },
          "include_shadow": {
            "type": "boolean",
            "title": "Include Shadow",
            "description": "When true, keep/generate a soft shadow under the car. Reserved for an upcoming model feature; currently ignored.",
            "default": false
          },
          "translucent_windows": {
            "type": "boolean",
            "title": "Translucent Windows",
            "description": "When true, treat car windows as translucent rather than opaque. Reserved for an upcoming model feature; currently ignored.",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "image_base64"
        ],
        "title": "CarImageBase64Request",
        "description": "Car remove-bg request with reserved model options."
      },
      "CarImageWithoutBackgroundRequest": {
        "properties": {
          "file": {
            "type": "string",
            "format": "binary",
            "title": "File",
            "description": "Car image file (JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF). Maximum size: 20.0 MB."
          },
          "include_shadow": {
            "type": "boolean",
            "title": "Include Shadow",
            "description": "When true, keep/generate a soft shadow under the car. Reserved for an upcoming model feature; currently ignored.",
            "default": false
          },
          "translucent_windows": {
            "type": "boolean",
            "title": "Translucent Windows",
            "description": "When true, treat car windows as translucent rather than opaque. Reserved for an upcoming model feature; currently ignored.",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "file"
        ],
        "title": "CarImageWithoutBackgroundRequest"
      },
      "CreditInfo": {
        "properties": {
          "credit": {
            "type": "integer",
            "title": "Credit",
            "description": "Credits available to spend right now.",
            "examples": [
              138
            ]
          },
          "expiration_date": {
            "type": "string",
            "title": "Expiration Date",
            "description": "When credits expire, as `YYYY-MM-DD HH:MM:SS`.",
            "examples": [
              "2026-12-31 23:59:59"
            ]
          }
        },
        "type": "object",
        "required": [
          "credit",
          "expiration_date"
        ],
        "title": "CreditInfo"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "ImageBase64Request": {
        "properties": {
          "image_base64": {
            "type": "string",
            "title": "Image Base64",
            "description": "Input image as a raw Base64 string (no `data:` URI prefix). Supported formats: JPEG, PNG, WebP, AVIF, HEIC, TIFF, BMP, GIF. Maximum decoded size: 20.0 MB.",
            "examples": [
              "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="
            ]
          }
        },
        "type": "object",
        "required": [
          "image_base64"
        ],
        "title": "ImageBase64Request",
        "description": "Base64 image model with enhanced validation."
      },
      "ImageWithoutBackgroundRequest": {
        "properties": {
          "file": {
            "type": "string",
            "format": "binary",
            "title": "File"
          }
        },
        "type": "object",
        "required": [
          "file"
        ],
        "title": "ImageWithoutBackgroundRequest"
      },
      "ImageWithoutBackgroundResponse": {
        "properties": {
          "input_dimensions": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Input Dimensions",
            "description": "Decoded input size as `[width, height]` (pixels).",
            "examples": [
              [
                5568,
                3712
              ]
            ]
          },
          "processed_dimensions": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Processed Dimensions",
            "description": "Size after server prep downscale (longest-side / megapixel caps) as `[width, height]`. Distinct from model inference resolution (~1024 long side).",
            "examples": [
              [
                5000,
                3333
              ]
            ]
          },
          "was_downscaled": {
            "type": "boolean",
            "title": "Was Downscaled",
            "description": "True when the input was downscaled during server prep.",
            "examples": [
              true
            ]
          },
          "image_type": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "number"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Type",
            "description": "Optional probabilities for photo vs graphic image-type classes.",
            "examples": [
              {
                "graphic": 0.13,
                "photo": 0.87
              }
            ]
          },
          "img_without_background_base64": {
            "type": "string",
            "title": "Img Without Background Base64",
            "description": "Result image as Base64 PNG (RGBA) with transparent background. Prepend `data:image/png;base64,` to display in a browser.",
            "examples": [
              "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
            ]
          }
        },
        "type": "object",
        "required": [
          "input_dimensions",
          "processed_dimensions",
          "was_downscaled",
          "img_without_background_base64"
        ],
        "title": "ImageWithoutBackgroundResponse",
        "description": "Base64 image with transparent background."
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      }
    },
    "securitySchemes": {
      "APIKeyHeader": {
        "type": "apiKey",
        "description": "API key for authentication. Pass as `X-API-Key` on every request.",
        "in": "header",
        "name": "X-API-Key"
      }
    }
  },
  "tags": [
    {
      "name": "Remove Background",
      "description": "Remove image background and return an RGBA PNG cutout (transparent background).",
      "externalDocs": {
        "description": "Detailed Documentation",
        "url": "https://withoutbg.com/docs/pro-model/background-removal-binary"
      }
    },
    {
      "name": "Remove Background (Cars)",
      "description": "Car-photo background removal. Accepts reserved options include_shadow and translucent_windows (currently ignored). Preferred migration path for vehicle clients.",
      "externalDocs": {
        "description": "Detailed Documentation",
        "url": "https://withoutbg.com/docs/pro-model/background-removal-binary"
      }
    },
    {
      "name": "Get Alpha Matte",
      "description": "Generate a grayscale alpha matte (opacity mask) for compositing onto your own full-resolution RGB.",
      "externalDocs": {
        "description": "Detailed Documentation",
        "url": "https://withoutbg.com/docs/pro-model/alpha-matte-binary"
      }
    },
    {
      "name": "Get API Credit Information",
      "description": "Returns your available credits and the expiration date.",
      "externalDocs": {
        "description": "Detailed Documentation",
        "url": "https://withoutbg.com/docs/pro-model/credits"
      }
    }
  ]
}