Watermark
Apply a logo watermark to any image. Position, opacity, scale, and padding are all configurable so the watermark can match your brand without manual compositing work.
Overview
The watermark endpoint takes two public image URLs — the base image and the logo — and produces a watermarked version with your logo composited over the base. The base image composition is preserved; only the logo is added.
Watermark is commonly chained after another tool (image enhance, drone stills, virtual staging) to brand the final asset before it is handed to a partner or end user.
Quick Example
Submit the base image URL and your logo URL:
curl -X POST \
-H "X-API-Key: dome_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/photos/exterior.jpg",
"logo_url": "https://example.com/brand/logo.png"
}' \
https://api.dometech.com.au/v1/watermark/applyResponse (202):
{
"data": {
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-04-12T10:00:00.000Z",
"mode": "live"
}
}Step-by-Step
1. Prepare Your Image and Logo
Both the base image and the logo must be hosted at publicly accessible HTTPS URLs. A PNG logo with a transparent background usually gives the cleanest result.
2. Submit the Watermark Request
Send a POST request to /v1/watermark/apply with the image and logo URLs and any optional positioning tweaks.
curl -X POST \
-H "X-API-Key: dome_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/photos/exterior.jpg",
"logo_url": "https://example.com/brand/logo.png",
"position": "bottom-right",
"options": {
"opacity": 0.8,
"scale": 0.2,
"padding": 40
}
}' \
https://api.dometech.com.au/v1/watermark/applyThe API returns a 202 Accepted response with a job_id.
3. Poll for Completion
Poll the job status endpoint until the status changes to completed. Watermark application is fast — usually a few seconds.
curl -H "X-API-Key: dome_live_your_key_here" \
https://api.dometech.com.au/v1/jobs/550e8400-e29b-41d4-a716-4466554400004. Retrieve the Watermarked Image
When the job completes, the output field contains the URL of the watermarked image.
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"job_type": "watermark_apply",
"status": "completed",
"mode": "live",
"input": {
"image_url": "https://example.com/photos/exterior.jpg",
"logo_url": "https://example.com/brand/logo.png",
"position": "bottom-right",
"opacity": 0.8,
"scale": 0.2,
"padding": 40
},
"output": {
"image_url": "https://storage.example.com/watermarked.jpg",
"generation_time_seconds": 2.1
},
"completed_at": "2026-04-12T10:00:02.000Z"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-04-12T10:00:02.000Z",
"mode": "live"
}
}Options
| Parameter | Type | Required | Description |
|---|---|---|---|
image_url | string (URI) | Yes | Public URL of the base image to watermark |
logo_url | string (URI) | Yes | Public URL of the logo image (PNG with transparent background recommended) |
position | string | No | One of top-left, top-right, bottom-left, bottom-right, center. Default: bottom-right |
options.opacity | number (0–1) | No | Watermark opacity. Default: 0.8 |
options.scale | number (0–1) | No | Logo size as a fraction of the base image width. Default: 0.2 |
options.padding | number (px) | No | Distance from the edge of the image in pixels. Default: 40 |
webhook_url | string (URI) | No | URL to receive the completion webhook |
callback_metadata | object | No | Opaque data returned in webhook payloads |
See the API Reference for full parameter details and response schemas.
Next Steps
- Image Enhance — Enhance photos before applying your watermark
- Drone Stills — Generate aerial stills that you can brand with this endpoint
- Jobs & Webhooks — Polling and webhook delivery patterns