# Image Processing

Transform, resize, or annotate images with simple HTTPS requests.

## Remove background (JSON or PNG)

> Remove the background from a single image. By default the endpoint returns a JSON\
> description from the upstream background-removal worker. To receive raw PNG bytes,\
> set \`raw=true\` (query or form field) or set \`Accept: image/png\`.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"headers":{"RequestId":{"description":"Unique identifier for this request. Include it when contacting support.","schema":{"type":"string"}}},"responses":{"BadRequestError":{"description":"The input had a mistake. Fix the parameters or body and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"BridgeAPI encountered an internal problem. Retry later or contact support with the `requestId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotConfiguredError":{"description":"The feature is turned off on this deployment. Contact support if you expected it to work.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}}},"paths":{"/v1/transparent":{"post":{"summary":"Remove background (JSON or PNG)","operationId":"removeBackground","tags":["Image Processing"],"description":"Remove the background from a single image. By default the endpoint returns a JSON\ndescription from the upstream background-removal worker. To receive raw PNG bytes,\nset `raw=true` (query or form field) or set `Accept: image/png`.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The source image."},"raw":{"type":"boolean","description":"When true, return PNG bytes instead of JSON."},"model":{"type":"string","description":"Optional model hint for the upstream worker."},"alphaMatte":{"type":"boolean","description":"Return alpha matte if supported by the model."}}}}}},"responses":{"200":{"description":"JSON envelope by default or PNG bytes when `raw=true`.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"type":"object","description":"Upstream JSON response; exact fields depend on the worker.","additionalProperties":true}},"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"500":{"$ref":"#/components/responses/ServerError"},"501":{"$ref":"#/components/responses/NotConfiguredError"}}}}}}
```

## Remove background (PNG bytes)

> Always returns PNG bytes with the background removed.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"headers":{"RequestId":{"description":"Unique identifier for this request. Include it when contacting support.","schema":{"type":"string"}}},"responses":{"BadRequestError":{"description":"The input had a mistake. Fix the parameters or body and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"BridgeAPI encountered an internal problem. Retry later or contact support with the `requestId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotConfiguredError":{"description":"The feature is turned off on this deployment. Contact support if you expected it to work.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}}},"paths":{"/v1/transparent/png":{"post":{"summary":"Remove background (PNG bytes)","operationId":"removeBackgroundPng","tags":["Image Processing"],"description":"Always returns PNG bytes with the background removed.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The source image."},"model":{"type":"string","description":"Optional model hint for the upstream worker."},"alphaMatte":{"type":"boolean","description":"Return alpha matte if supported by the model."}}}}}},"responses":{"200":{"description":"PNG image bytes with background removed.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"500":{"$ref":"#/components/responses/ServerError"},"501":{"$ref":"#/components/responses/NotConfiguredError"}}}}}}
```

## Convert image

> Upload a single image and BridgeAPI will change it to the format you need. This is handy when a website only\
> accepts JPEG but you currently have a PNG, or when you want to shrink a photo before placing it in a slide deck.\
> You must include your image file and can optionally control the output format and quality.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"headers":{"RequestId":{"description":"Unique identifier for this request. Include it when contacting support.","schema":{"type":"string"}}},"responses":{"BadRequestError":{"description":"The input had a mistake. Fix the parameters or body and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"BridgeAPI encountered an internal problem. Retry later or contact support with the `requestId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}}},"paths":{"/v1/image/convert":{"post":{"summary":"Convert image","operationId":"convertImage","tags":["Image Processing"],"description":"Upload a single image and BridgeAPI will change it to the format you need. This is handy when a website only\naccepts JPEG but you currently have a PNG, or when you want to shrink a photo before placing it in a slide deck.\nYou must include your image file and can optionally control the output format and quality.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The source image you want to convert."},"format":{"type":"string","enum":["webp","jpeg","png","avif","heic"],"description":"Choose the desired output format. Leave blank to keep the original format."},"quality":{"type":"integer","minimum":1,"maximum":100,"description":"Optional compression quality (higher means better quality but larger files)."}}}}}},"responses":{"200":{"description":"Binary image data in the chosen format.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"type":"object","description":"Base64 encoded image when `Accept: application/json` is provided.","properties":{"contentType":{"type":"string"},"sizeBytes":{"type":"integer"},"bytesBase64":{"type":"string","description":"Image encoded as Base64 text"}}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"500":{"$ref":"#/components/responses/ServerError"}}}}}}
```

## Convert image to target size

> Compress an image until it lands near a size that you choose. This is perfect for upload forms that only allow\
> files under a certain number of kilobytes. BridgeAPI will try different quality levels automatically while\
> preserving as much visual clarity as possible.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"headers":{"RequestId":{"description":"Unique identifier for this request. Include it when contacting support.","schema":{"type":"string"}}},"responses":{"BadRequestError":{"description":"The input had a mistake. Fix the parameters or body and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnprocessableError":{"description":"BridgeAPI tried to fulfil the request but could not reach the target goal (for example, compression target).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"BridgeAPI encountered an internal problem. Retry later or contact support with the `requestId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}}},"paths":{"/v1/image/convert/target":{"post":{"summary":"Convert image to target size","operationId":"convertImageToTarget","tags":["Image Processing"],"description":"Compress an image until it lands near a size that you choose. This is perfect for upload forms that only allow\nfiles under a certain number of kilobytes. BridgeAPI will try different quality levels automatically while\npreserving as much visual clarity as possible.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The original image file you would like to shrink."},"format":{"type":"string","description":"Desired output format. Leave blank to keep original format."},"targetKB":{"type":"integer","description":"Aim for this many kilobytes (KB). BridgeAPI stops when it gets as close as possible."},"targetMB":{"type":"integer","description":"Alternative target in megabytes (MB). Use either `targetKB` or `targetMB`."},"tolerancePct":{"type":"integer","minimum":1,"maximum":30,"description":"How far above the target size is acceptable. A tolerance of 10 means ±10%."}}}}}},"responses":{"200":{"description":"Binary image data that lands close to the requested target size.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"type":"object","description":"Base64 encoded image when requesting JSON output.","properties":{"contentType":{"type":"string"},"targetKB":{"type":"integer","description":"Requested kilobyte target"},"achievedKB":{"type":"integer","description":"Actual kilobyte size after compression"},"bytesBase64":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"422":{"$ref":"#/components/responses/UnprocessableError"},"500":{"$ref":"#/components/responses/ServerError"}}}}}}
```

## Text overlay

> Place a text caption on top of an image. Use this when you want to watermark social-media posts, add a label\
> or version number, or write a short note on screenshots before sharing them.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"headers":{"RequestId":{"description":"Unique identifier for this request. Include it when contacting support.","schema":{"type":"string"}}},"responses":{"BadRequestError":{"description":"The input had a mistake. Fix the parameters or body and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"BridgeAPI encountered an internal problem. Retry later or contact support with the `requestId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}}},"paths":{"/v1/image/text":{"post":{"summary":"Text overlay","operationId":"overlayImageText","tags":["Image Processing"],"description":"Place a text caption on top of an image. Use this when you want to watermark social-media posts, add a label\nor version number, or write a short note on screenshots before sharing them.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The base image you want to label."},"text":{"type":"string","description":"The words that should appear on the image."}}}}}},"responses":{"200":{"description":"Image with the added text overlay.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"type":"object","properties":{"contentType":{"type":"string"},"bytesBase64":{"type":"string"},"message":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"500":{"$ref":"#/components/responses/ServerError"}}}}}}
```

## Watermark overlay

> Stamp a watermark image onto another image so that screenshots or documents keep your branding. Supply either\
> a watermark file directly or reference a stored branding preset.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"headers":{"RequestId":{"description":"Unique identifier for this request. Include it when contacting support.","schema":{"type":"string"}}},"responses":{"BadRequestError":{"description":"The input had a mistake. Fix the parameters or body and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ForbiddenError":{"description":"The request was understood but cannot be performed for this account or plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"BridgeAPI encountered an internal problem. Retry later or contact support with the `requestId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}}},"paths":{"/v1/image/watermark":{"post":{"summary":"Watermark overlay","operationId":"addImageWatermark","tags":["Image Processing"],"description":"Stamp a watermark image onto another image so that screenshots or documents keep your branding. Supply either\na watermark file directly or reference a stored branding preset.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Base image to watermark."},"mark":{"type":"string","format":"binary","description":"Optional watermark graphic. Provide this or `brandId`."},"brandId":{"type":"string","description":"Use an existing branding preset instead of uploading `mark` each time."}}}}}},"responses":{"200":{"description":"Image with the watermark applied.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"image/*":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"type":"object","properties":{"contentType":{"type":"string"},"bytesBase64":{"type":"string"},"message":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/ServerError"}}}}}}
```

## Batch convert images

> Convert many images in one call. Send multiple files and BridgeAPI will process them sequentially so you can\
> download them as a zip or JSON envelope. Ideal for preparing product photos or marketing assets at once.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"headers":{"RequestId":{"description":"Unique identifier for this request. Include it when contacting support.","schema":{"type":"string"}}},"schemas":{"ZipJson":{"type":"object","description":"JSON envelope for zip responses when Accept includes application/json.","properties":{"contentType":{"type":"string"},"sizeBytes":{"type":"integer"},"files":{"type":"integer","nullable":true,"description":"Number of files in archive"},"durationMs":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"to":{"type":"string","nullable":true},"dpi":{"type":"integer","nullable":true},"pages":{"type":"string","nullable":true},"bytesBase64":{"type":"string"}}},"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}},"responses":{"BadRequestError":{"description":"The input had a mistake. Fix the parameters or body and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"BridgeAPI encountered an internal problem. Retry later or contact support with the `requestId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/v1/image/convert/batch":{"post":{"summary":"Batch convert images","operationId":"batchConvertImages","tags":["Image Processing"],"description":"Convert many images in one call. Send multiple files and BridgeAPI will process them sequentially so you can\ndownload them as a zip or JSON envelope. Ideal for preparing product photos or marketing assets at once.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file[]":{"type":"array","items":{"type":"string","format":"binary"},"description":"Each image you want to convert."},"formats":{"type":"string","description":"Comma-separated list of desired output formats. If fewer formats than files are provided, the last one is reused."}}}}}},"responses":{"200":{"description":"Zip archive containing converted images or JSON with Base64 content when requested.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/zip":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"$ref":"#/components/schemas/ZipJson"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"500":{"$ref":"#/components/responses/ServerError"}}}}}}
```

## Strip image metadata

> Remove EXIF and other metadata from an image. Optionally re-encode to a target format.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"responses":{"BadRequestError":{"description":"The input had a mistake. Fix the parameters or body and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"BridgeAPI encountered an internal problem. Retry later or contact support with the `requestId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}}},"paths":{"/v1/image/strip-metadata":{"post":{"summary":"Strip image metadata","operationId":"stripImageMetadata","tags":["Image Processing"],"description":"Remove EXIF and other metadata from an image. Optionally re-encode to a target format.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Source image."},"format":{"type":"string","enum":["jpeg","jpg","png","webp","avif","heic"]}}}}}},"responses":{"200":{"description":"Binary image with metadata removed, or JSON when requested.","content":{"image/*":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"type":"object","properties":{"contentType":{"type":"string"},"sizeBytes":{"type":"integer"},"bytesBase64":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"500":{"$ref":"#/components/responses/ServerError"}}}}}}
```

## Extract image metadata

> Return EXIF and decoder metadata as JSON.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"responses":{"BadRequestError":{"description":"The input had a mistake. Fix the parameters or body and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServerError":{"description":"BridgeAPI encountered an internal problem. Retry later or contact support with the `requestId`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}}},"paths":{"/v1/image/metadata":{"post":{"summary":"Extract image metadata","operationId":"extractImageMetadata","tags":["Image Processing"],"description":"Return EXIF and decoder metadata as JSON.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Source image."}}}}}},"responses":{"200":{"description":"JSON with metadata fields.","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"object","additionalProperties":true}}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"500":{"$ref":"#/components/responses/ServerError"}}}}}}
```

## Image options and limits

> Learn the current plan limits for image endpoints, including max file sizes, supported formats, and quotas.

```json
{"openapi":"3.0.3","info":{"title":"BridgeAPI","version":"1.0.0"},"tags":[{"name":"Image Processing","description":"Transform, resize, or annotate images with simple HTTPS requests."}],"servers":[{"url":"https://api.bridgeapi.store/","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"headers":{"RequestId":{"description":"Unique identifier for this request. Include it when contacting support.","schema":{"type":"string"}}},"responses":{"UnauthorizedError":{"description":"Missing or incorrect `X-API-Key`. BridgeAPI cannot process anonymous calls.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","description":"Friendly error payload returned by BridgeAPI when something goes wrong.","properties":{"error":{"type":"string","description":"Short machine-readable error code such as `bad_request` or `unauthorized`."},"message":{"type":"string","description":"Human explanation written in plain language."},"requestId":{"type":"string","description":"Internal trace ID you can share with support if you need help."},"helpUrl":{"type":"string","nullable":true,"description":"Optional link with more guidance for resolving the error."}},"required":["error","message"]}}},"paths":{"/v1/image/options":{"get":{"summary":"Image options and limits","operationId":"getImageOptions","tags":["Image Processing"],"description":"Learn the current plan limits for image endpoints, including max file sizes, supported formats, and quotas.","responses":{"200":{"description":"Plan-based limits, supported formats, and parameter ranges","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"planId":{"type":"string","nullable":true},"quotaLeft":{"type":"integer","nullable":true},"maxFileMB":{"type":"integer"},"monthlyLimit":{"type":"integer"}}},"limits":{"type":"object","properties":{"maxFileMB":{"type":"integer"},"monthlyLimit":{"type":"integer"},"quotaLeft":{"type":"integer","nullable":true},"burstPerMinute":{"type":"integer"}}},"formats":{"type":"object","properties":{"input":{"type":"array","items":{"type":"string"}},"output":{"type":"array","items":{"type":"string"}}}},"params":{"type":"object"},"responses":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bridgeapi.gitbook.io/bridgeapi/image-processing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
