Image Processing API
Developer guide for image conversion and compression APIs.
Image Processing API
Use Developer API Keys with the image scope to convert and compress one image
per synchronous request. API requests consume Processing Credits, write Image API
Request Logs, and return inline Base64 output.
Authentication
Send a Developer API Key with either header:
Authorization: Bearer sk_dev_...
# or
x-api-key: sk_dev_...Keys must include the image API Scope. OCR-only keys are rejected.
Limits and Billing
- Input: JPEG, PNG, WebP, AVIF, GIF, or TIFF static image.
- Output: JPEG, PNG, WebP, or AVIF.
- Sources: multipart
file, JSONimage_url, or JSONimage_base64. - Limits: 25 MB input, 50 MP pixels, 20 MB raw output, 30 seconds.
- Billing: larger of input/output pixel count, minimum 1 Processing Credit.
- Metadata is stripped by default. Set
preserve_metadata=truefor best-effort preservation.
Convert
curl -X POST https://image-to-text.org/api/v1/images/convert \
-H "Authorization: Bearer sk_dev_..." \
-F "[email protected]" \
-F "output_format=webp" \
-F "width=1200" \
-F "fit=inside"The response includes data.output.base64, filename, content type, dimensions,
size, data.metrics, and data.usage.
Compress
Quality compression:
curl -X POST https://image-to-text.org/api/v1/images/compress \
-H "Authorization: Bearer sk_dev_..." \
-F "[email protected]" \
-F "quality=72" \
-F "output_format=webp"Target-size compression:
curl -X POST https://image-to-text.org/api/v1/images/compress \
-H "Authorization: Bearer sk_dev_..." \
-H "Idempotency-Key: image-demo-001" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/photo.jpg",
"output_format": "jpeg",
"target_size_kb": 200
}'Target-size compression is best effort. A successful response includes
target_reached and quality_used.
Errors, Idempotency, and Rate Limits
All errors use:
{
"success": false,
"request_id": "...",
"error": {
"code": "invalid_input",
"message": "...",
"retryable": false
}
}Use Idempotency-Key for retry-safe billable requests. Exact replays within 24
hours return the stored response without another credit charge. Reusing the same
key with different input or options returns idempotency_conflict. Image API
daily limits and minimum request intervals are separate from OCR limits.
The unified OpenAPI contract is available at /api/v1/openapi.