# Remove text Remove text overlays and watermarks from images. #### Request Body (multipart/form-data) **`provider`** string required Provider to use. Values: `openai`, `clipdrop`. **`organization_id`** string required Organization ID (org_ prefixed string). **`image_file`** file required Image file to process (PNG, JPEG, WebP). **`mask_file`** file conditional Mask file (PNG with alpha channel). Required for OpenAI, optional for Clipdrop. ## Provider Notes **Clipdrop:** Automatically detects and removes text without requiring a mask. **OpenAI:** Requires mask file with dimensions matching the source image. ## Returns Returns raw image bytes (PNG format) with provider metadata in response headers. ### Response Headers - `X-Provider` - Provider that processed the request - `X-Provider-Request-Id` - Provider's request ID - `X-Provider-Credits-Consumed` - Credits consumed (Clipdrop only) Clipdrop (no mask) ```bash curl -X POST "https://api.aitronos.com/api/v1/images/remove-text" \ -H "X-API-Key: $FREDDY_API_KEY" \ -F "provider=clipdrop" \ -F "organization_id=org_123abc" \ -F "image_file=@image.jpg" ``` ```python import os import requests api_key = os.environ["FREDDY_API_KEY"] url = "https://api.aitronos.com/api/v1/images/remove-text" files = {"image_file": open("image.jpg", "rb")} data = { "provider": "clipdrop", "organization_id": "org_123abc" } response = requests.post( url, headers={"X-API-Key": api_key}, files=files, data=data ) if response.status_code == 200: with open("output.png", "wb") as f: f.write(response.content) ``` ```javascript const formData = new FormData(); formData.append("provider", "clipdrop"); formData.append("organization_id", "org_123abc"); formData.append("image_file", imageFile); const response = await fetch( "https://api.aitronos.com/api/v1/images/remove-text", { method: "POST", headers: { Authorization: `Bearer ${process.env.FREDDY_API_KEY}`, }, body: formData, } ); const blob = await response.blob(); ``` OpenAI (with mask) ```bash curl -X POST "https://api.aitronos.com/api/v1/images/remove-text" \ -H "X-API-Key: $FREDDY_API_KEY" \ -F "provider=openai" \ -F "organization_id=org_123abc" \ -F "image_file=@image.png" \ -F "mask_file=@mask.png" ``` ```python import os import requests api_key = os.environ["FREDDY_API_KEY"] url = "https://api.aitronos.com/api/v1/images/remove-text" files = { "image_file": open("image.png", "rb"), "mask_file": open("mask.png", "rb") } data = { "provider": "openai", "organization_id": "org_123abc" } response = requests.post( url, headers={"X-API-Key": api_key}, files=files, data=data ) if response.status_code == 200: with open("output.png", "wb") as f: f.write(response.content) ``` ```javascript const formData = new FormData(); formData.append("provider", "openai"); formData.append("organization_id", "org_123abc"); formData.append("image_file", imageFile); formData.append("mask_file", maskFile); const response = await fetch( "https://api.aitronos.com/api/v1/images/remove-text", { method: "POST", headers: { Authorization: `Bearer ${process.env.FREDDY_API_KEY}`, }, body: formData, } ); const blob = await response.blob(); ``` ## Response ```text Content-Type: image/png X-Provider: clipdrop X-Provider-Request-Id: req_abc123 X-Provider-Credits-Consumed: 1 [PNG image bytes] ``` ```json { "success": false, "error": { "code": "MASK_REQUIRED", "message": "OpenAI requires mask for this operation", "type": "client_error", "status": 422 } } ``` ```json { "success": false, "error": { "code": "INVALID_MASK_FORMAT", "message": "Mask must be PNG with alpha channel", "type": "client_error", "status": 422 } } ``` ```json { "success": false, "error": { "code": "PROVIDER_NOT_CONFIGURED", "message": "Provider not configured for organization", "type": "client_error", "status": 404 } } ```