Generate images on the fly by adding text + overlay to any image URL. Perfect for Make.com, social posts, quotes, thumbnails, product promos, and email marketing visuals.
Tip: Use URL encoding for text and image. New lines in text can be sent using %0A.
Runs on your own server (WordPress REST). No Glitch, no 3rd party hosting issues.
Just a GET request returns a PNG. Add apiKey to remove watermark.
Use it inside Make.com to generate unlimited visuals programmatically.
https://textoverimg.com/wp-json/shakels/v1/image?text=Hello%20World%0Afrom%20TextOverImages&image=https%3A%2F%2Fi.ibb.co%2FF7z59LM%2Fdelivery-man-with-folder-1368-230.jpg&fontSize=18px&fontColor=%23000000&x_align=160&y_align=90&textAlign=center&margin=10&overlay_color=2800f030
https://textoverimg.com/wp-json/shakels/v1/image?text=Hello%20World%0APro%20Mode&image=https%3A%2F%2Fi.ibb.co%2FF7z59LM%2Fdelivery-man-with-folder-1368-230.jpg&fontSize=18px&fontColor=%23ffffff&x_align=160&y_align=90&textAlign=center&margin=10&overlay_color=90000080&apiKey=PROxxxxxxxxxxxxxx
If your key is expired or usage limit reached → it switches to Free Mode automatically.
This preview loads the real PNG from your API endpoint so it matches exactly.
You call the API endpoint with your image URL + text + style parameters. The API instantly returns a PNG.
Free mode: no apiKey (or invalid key) → adds watermark randomly on edges.
Paid mode: valid apiKey → no watermark.
In Make.com, use an HTTP module (GET), pass the parameters, and you’ll get an image. You can then upload it to social platforms, email tools, or storage.
If you want, you can also add a step to upload the PNG to ImgBB (optional).
Base URL
https://textoverimg.com/wp-json/shakels/v1/image
Method: GET
Response: image/png (PNG bytes)
| Parameter | Required | Example | Description |
|---|---|---|---|
| image | Yes | https%3A%2F%2F... |
Background image URL (must be public, URL-encoded). |
| text | No | Hello%20World%0Aline2 |
Text to draw. New lines via %0A. URL-encode text. |
| fontSize | No | 15px |
Approx size (maps to built-in fonts). Bigger px → bigger font. |
| fontColor | No | %23000000 |
Text color hex (URL-encoded #). Example black = %23000000 |
| x_align | No | 150 |
X coordinate in pixels. |
| y_align | No | 100 |
Y coordinate in pixels. |
| textAlign | No | center |
left, center, or right. |
| margin | No | 18 |
Extra padding added to placement. |
| overlay_color | No | 2800f030 |
Overlay color in AARRGGBB hex. Example: 2800f030. |
| apiKey | Optional | PROxxxx... |
If valid → watermark removed. If missing/invalid/limit reached → watermark stays. |
https://textoverimg.com/wp-json/shakels/v1/image?text=none%20of%20this%0Aworks&image=https%3A%2F%2Fi.ibb.co%2FF7z59LM%2Fdelivery-man-with-folder-1368-230.jpg&fontSize=15px&fontColor=%23000000&x_align=100&y_align=100&textAlign=center&margin=18&overlay_color=2800f030
https://textoverimg.com/wp-json/shakels/v1/image?text=none%20of%20this%0Aworks&image=https%3A%2F%2Fi.ibb.co%2FF7z59LM%2Fdelivery-man-with-folder-1368-230.jpg&fontSize=15px&fontColor=%23000000&x_align=100&y_align=100&textAlign=center&margin=18&overlay_color=2800f030&apiKey=PROxxxxxxxxxxxxxx
✅ Missing apiKey → watermark shown
✅ Invalid / expired / usage limit reached → watermark shown
✅ Valid apiKey → watermark removed
✅ Watermark position is randomized (top/bottom/left/right) per request
Your endpoint can work in two modes: PNG mode (preview) and ImgBB mode (returns JSON with the final URL).
Use this when you want to preview in browser. It returns raw PNG bytes.
https://textoverimg.com/wp-json/shakels/v1/image?image=IMAGE_URL&text=TEXT&fontSize=18px&fontColor=%23000&x_align=240&y_align=270&textAlign=center&margin=18&rotate=-27&overlay_color=292800f0&apiKey=YOUR_PLAN_KEY
Add imgbbApiKey and your endpoint will upload the final PNG to ImgBB,
then return JSON that contains img_url (the final image link).
https://textoverimg.com/wp-json/shakels/v1/image?image=IMAGE_URL&text=TEXT&fontSize=18px&fontColor=%23000&x_align=240&y_align=270&textAlign=center&margin=18&rotate=-27&overlay_color=292800f0&apiKey=YOUR_PLAN_KEY&imgbbApiKey=YOUR_IMGBB_KEY
img_url as the final image link.{
"ok": true,
"img_url": "https://i.ibb.co/xxxx/final.png",
"delete_url": "https://ibb.co/delete/xxxx",
"paid": true,
"watermark": false,
"expiresAt": "2026-02-02T00:00:00.000Z"
}
img_url and send it anywhere:
WhatsApp, Google Sheets, Email, etc.
Use your custom app fields (Text, Image URL, Overlay, Rotation, API Key, ImgBB API Key). The important part is: ImgBB API Key must be filled.
Map:
img_url → your final image URL
expiresAt → expiration date (optional)
paid / watermark → status (optional)
Skip setup, skip debugging.
Get the ready-to-use Make.com custom app for generating
text over images with ImgBB support.
Capture any public website URL in your browser and return a Scrolling MP4 — perfect for Make.com, product demos, landing previews, and automation.
1) You send toi_snap (the page URL) + your Browserless token.
2) We capture the page and render a scrolling video.
3) You receive JSON that contains the final MP4 URL.
✅ No key / invalid key → watermark ON
✅ Valid key → watermark OFF
✅ If key expires → automatically falls back to free mode (watermarked)
Base URL
https://textoverimg.com/?toi=1&toi_snap=WEBSITE_URL&toi_browserapi=BROWSERLESS_TOKEN&toi_format=mp4
Method: GET
Response: JSON with output.url (MP4 saved to WP Media for 24h)
| Parameter | Required | Example | Description |
|---|---|---|---|
| toi | Yes | 1 |
Enables capture mode. |
| toi_snap | Yes | https://example.com |
Website URL to capture (must be public). |
| toi_browserapi | Yes | YOUR_TOKEN |
Your Browserless token used to screenshot the page. |
| toi_format | Yes | mp4 |
Always MP4 (scrolling video). |
| key | Optional | GIF_xxxxx |
Paid key removes watermark and charges credits (optional). |
| toi_w | Optional | 1200 |
Viewport width (px). Min 480, max 1920. |
| toi_h | Optional | 900 |
Viewport height (px). Min 300, max 2000. |
| toi_wait | Optional | 900 |
Wait before capture (0–8000 ms). Useful for heavy sites. |
| toi_duration | Optional | 12 |
Video length in seconds (e.g. 8–20). Higher = slower scroll. |
| toi_scroll_px | Optional | 20 |
Scroll step (px). Lower = smoother. |
| toi_fps | Optional | 20 |
Frames per second. Lower = smaller file. |
| toi_loop | Optional | 0 |
0 = no loop, 1 = loop (if your renderer supports looping). |
| toi_wm_text | Optional | textoverimages.com |
Free only: watermark text override. |
| toi_wm_pos | Optional | br |
Free only: watermark position: br, bl, tr, tl, center. |
https://textoverimg.com/?toi=1&toi_snap=https%3A%2F%2Fexample.com&toi_browserapi=YOUR_BROWSERLESS_TOKEN&toi_format=mp4&toi_w=1200&toi_h=900&toi_wait=900&toi_duration=12&toi_scroll_px=20&toi_fps=20&key=GIF_YOURKEY
Use an HTTP module → call the URL above → your response includes
output.url which is the final MP4 link.
output.url anywhere ✅Your request returns JSON with the saved MP4 URL (stored for 24h).
{
"ok": true,
"mode": "mp4_scroll",
"key": {
"provided": true,
"valid": true,
"freeMode": false,
"planType": "paid",
"cost": 1,
"remaining_credits": 999
},
"watermark": { "enabled": false },
"output": {
"format": "mp4",
"url": "https://textoverimg.com/wp-content/uploads/2026/01/toi-xxxx.mp4",
"seconds": 12,
"bytes": 2345678
}
}
Does Free plan work without apiKey?
Yes — just call the endpoint without apiKey. Watermark will appear.
What happens if I hit usage limit?
Your apiKey switches to freeMode and watermark returns until you renew.
Can I use it in Make.com?
Yes. Use an HTTP GET module and pass the URL parameters.