# Tanod imagepeek – Image Watermark

> Tanod imagepeek – Image Watermark is a paid API for AI agents from tanod.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-11).

Adds a text watermark (single placement or tiled staggered grid) to an image, with control over position, opacity, color, angle, font size, and output format.

## Facts

- Endpoint: POST https://tanod.dev/v1/image/watermark?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-imagepeek-image-watermark-4b41946f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_WlOVz6fhuaiR1c2ewoMW1

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tanod-imagepeek-image-watermark-4b41946f -d '<json body>'
```

Example prompt: Add a tiled, white '© MyBrand 2025' watermark at 40% opacity, angled 30 degrees, to this image URL: https://example.com/photo.jpg — output as PNG.

## When to prefer this

Choose this endpoint when you need server-side, programmatic text watermarking of images without requiring any local image processing libraries or GPU resources. It's ideal for agents that need to protect, brand, or annotate images on the fly, supporting both single-placement and tiled patterns with fine-grained control over appearance. Prefer this over client-side solutions when operating in a stateless agent pipeline.

## Known failure modes

- Image URL not publicly accessible or larger than 10 MB — returns error
- Base64 payload exceeds 13 MB limit — returns error
- Invalid color hex code format — validation error
- Font size or angle out of allowed range — validation error
- Unsupported output format requested — validation error
- Watermark text empty or exceeds 200 characters — validation error
- Network timeout fetching remote image URL — returns error

## How this service works

One MCP server and HTTP API with 193 pay-per-call tools for AI agents (security checks, chain data, finance, aviation, documents), plus free uptime and MikroTik monitoring and 130+ free browser tools. No signup; free daily tier. Operated by an AI.

## Output

Returns the processed image binary (or equivalent) with the text watermark applied. The output format matches the input by default, or can be overridden. For lossy formats, quality can be controlled. The watermark can appear at a specific position or tiled across the image in a staggered grid pattern.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 2048
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Public http(s) URL of the image (at most 10 MB; private, internal and IP-literal hosts are refused); or use image_base64."
  },
  "text": {
   "type": "string",
   "maxLength": 200,
   "minLength": 1,
   "description": "1-200 printable characters."
  },
  "tile": {
   "type": "boolean",
   "default": false,
   "description": "A staggered grid (at most 2,500 marks)."
  },
  "angle": {
   "type": "number",
   "default": 0,
   "maximum": 180,
   "minimum": -180,
   "description": "Text rotation in degrees, clockwise (-180 to 180, default 0)."
  },
  "color": {
   "type": "string",
   "default": "#ffffff",
   "pattern": "^(#?[0-9a-fA-F]{6}([0-9a-fA-F]{2})?|transparent)$",
   "description": "Text colour as #rrggbb or #rrggbbaa (default #ffffff)."
  },
  "format": {
   "anyOf": [
    {
     "enum": [
      "png",
      "jpeg",
      "webp",
      "gif",
      "tiff",
      "bmp",
      "ico",
      "avif"
     ],
     "type": "string"
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Output format (default: the input's; ICO in, PNG out)."
  },
  "margin": {
   "anyOf": [
    {
     "type": "integer",
     "maximum": 10000,
     "minimum": 0
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Pixels from the edge (default half the font size, at least 4); with tile, the gap between marks."
  },
  "output": {
   "enum": [
    "base64",
    "url"
   ],
   "type": "string",
   "default": "base64",
   "description": "base64 (default): the file comes back inline as base64. url: the file is stored for 24 hours and the reply carries a download link (url, expires_at, bytes, content_type, sha256) instead of the base64, which keeps the file out of your context window."
  },
  "opacity": {
   "type": "number",
   "default": 0.5,
   "maximum": 1,
   "minimum": 0,
   "description": "0 (invisible) to 1 (opaque); default 0.5."
  },
  "quality": {
   "anyOf": [
    {
     "type": "integer",
     "maximum": 100,
     "minimum": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Encoder quality 1-100 (lossy formats)."
  },
  "position": {
   "enum": [
    "center",
    "top",
    "bottom",
    "left",
    "right",
    "top-left",
    "top-right",
    "bottom-left",
    "bottom-right"
   
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "font": "DejaVu Sans Mono",
  "bytes": 134354,
  "input": {
   "bytes": 161713,
   "width": 640,
   "format": "jpeg",
   "frames": 1,
   "height": 480,
   "animated": false,
   "has_alpha": false
  },
  "marks": 18,
  "notes": [],
  "width": 640,
  "format": "jpeg",
  "height": 480,
  "source": {
   "url": "https://python-pillow.org",
   "library": "Pillow",
   "license": "MIT-CMU (HPND)"
  },
  "final_url": "https://raw.githubusercontent.com/ianare/exif-samples/master/jpg/gps/DSCN0010.jpg",
  "font_size": 24,
  "operation": "watermark",
  "source_url": "https://raw.githubusercontent.com/ianare/exif-samples/master/jpg/gps/DSCN0010.jpg",
  "data_base64": "/9j/4AAQSkZJRgAB... (trimmed: 179,140 base64 characters in the reply)",
  "content_type": "image/jpeg"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-imagepeek-image-watermark-4b41946f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tanod.dev](https://www.zero.xyz/host/tanod.dev/llms.txt)
