Combine multiple images into a single PDF, one image per page, in list order
Combine multiple images into a single PDF, one image per page, in list order.
Supports jpg, png, heic, webp, gif, bmp and tiff. JPEG and opaque PNG files are embedded losslessly without re-encoding; other formats are converted first (transparency is flattened onto white and EXIF rotation is applied). Maximum 50 images.
POST https://eranol.com/api/v1/ffmpeg/convert/images/to/pdf
{
"urls": [
"https://cdn.example.com/page1.jpg",
"https://cdn.example.com/page2.png"
],
"page_size": "a4"
}
| Name | Type | Default | Description |
|---|---|---|---|
urls | array | required | Image URLs, one per page, in order (max 50) |
page_size | string | original | original, a4 or letter |
original — each page matches its image's pixel size.a4 / letter — the image is scaled to fit and centred on a white page. Landscape images get a landscape page.[
{
"job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
"status": "pending",
"message": "Job created. Poll status_url for progress.",
"result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
"status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
}
]
Combine scanned pages into a single A4 PDF, in reading order.
Request Body
{
"urls": [
"https://cdn.example.com/scan-1.jpg",
"https://cdn.example.com/scan-2.jpg",
"https://cdn.example.com/scan-3.jpg"
],
"page_size": "a4"
}
Keep the default original page size so each page matches its image exactly. JPEG and opaque PNG files are embedded without re-encoding.
Request Body
{
"urls": [
"https://cdn.example.com/artwork-1.png",
"https://cdn.example.com/artwork-2.jpg"
]
}
Mix formats freely; HEIC, WebP, GIF, BMP and TIFF are converted automatically.
Request Body
{
"urls": [
"https://cdn.example.com/cover.heic",
"https://cdn.example.com/chart.webp"
],
"page_size": "letter"
}
Response (all examples)
{
"job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
"status": "pending",
"message": "Job created. Poll status_url for progress.",
"result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
"status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
}
| Code | Meaning |
|---|---|
401 | Missing or invalid API key |
402 | Insufficient credits |
422 | Validation error — check your request body (e.g. more than 50 images, invalid page_size) |
429 | Rate limit exceeded — slow down requests |
500 | Internal server error — try again or contact support |