⚙️ 水印 API

组合水印能力的 B 端开放接口:可见水印盲水印嵌入/提取AI 内容标识——渲染内核与前端工具完全一致,配置 schema 相同。

快速开始

Base URLhttp://localhost:8787(自部署;上线后替换为正式域名)

鉴权Authorization: Bearer p5_xxx 或 query 参数 ?key=p5_xxx。文档站演示 Key:p5_demo0000000000000000000000000(100 次/月)

curl -X POST "http://localhost:8787/v1/watermark/apply?text=Hello&key=p5_demo0000000000000000000000000" \
  -H "Content-Type: image/png" \
  --data-binary @photo.png \
  -o out.png

端点

端点方法说明计费
/v1/watermark/applyPOST可见水印(文字/Logo 混排、平铺/角标)1 次
/v1/blind/embedPOST盲水印嵌入(响应头 X-Blind-Psnr)1 次
/v1/blind/detectPOST盲水印零原图提取(payload + 置信度)1 次
/v1/label/aiPOSTAI 内容标识(显式角标 + IPTC 元数据)1 次
/v1/text/blindPOST文本盲水印(零宽字符):mode=encode/decode/strip1 次
/v1/usageGET用量查询免费

输入形态

二进制体Content-Type: image/png|jpeg,配置走 query;② JSON{"image": "dataURL或base64", "config": {...}}

响应:图像端点返回原始字节;blind/detect 返回 JSON。所有鉴权响应带 X-RateLimit-Limit / -Remaining / -Reset,超限返回 429 + Retry-After

配置参数(/watermark/apply)

参数默认说明
text水印文案(与 logo 至少一项)
logoLogo 图片(base64/dataURL,JSON 形态)
modebrtile|center|tl|tr|bl|br
density3平铺密度 2~10(tile 模式)
size3字号 = 图长边 × n%(1~10)
logoSize6Logo 高度 = 长边 × n%
color#ffffff文字颜色 hex
opacity90不透明度 20~100
stroke1文字描边(0 关闭)
format跟随输入png|jpeg
quality0.92JPEG 质量 0.5~1
keepExif0=1 时回植 EXIF 并抹 GPS(JPEG)

盲水印参数

参数说明
payload溯源信息,≤48 字节 UTF-8(embed 必填)
secret提取密钥(embed/detect 必填,必须一致)
strengthlow|mid|high(默认 mid;抗性指标见盲水印工具站攻击实测)

错误码

HTTPerror含义
400missing_image / missing_text_or_logo / missing_payload / missing_secret / invalid_json参数缺失/非法
401missing_api_key / invalid_api_key鉴权失败
413payload_too_large请求体超 40MB
415unsupported_image_format仅支持 PNG/JPEG/WebP
429quota_exceeded月配额用尽(带 Retry-After)

各语言示例

// Node.js
const fs = require('fs');
fetch('http://localhost:8787/v1/watermark/apply?text=BrandMark', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer p5_xxx', 'Content-Type': 'image/png' },
  body: fs.readFileSync('photo.png'),
}).then(r => r.arrayBuffer()).then(b => fs.writeFileSync('out.png', Buffer.from(b)));
# 文本盲水印(给合同/文案埋不可见标记)
curl -X POST "http://localhost:8787/v1/text/blind" \
  -H "Authorization: Bearer p5_xxx" \
  -H "Content-Type: application/json" \
  -d '{"mode":"encode","payload":"confidential-42","carrier":"合同正文…"}'
# → {"mode":"encode","text":"合同正文…<不可见零宽字符>"}
# mode=decode 传 text 提取;mode=strip 清除并计数
# Python
import requests
r = requests.post(
    "http://localhost:8787/v1/blind/embed",
    headers={"Authorization": "Bearer p5_xxx"},
    json={"image": open("photo.png", "rb").read().hex(), "payload": "user-42", "secret": "s3cret"},
)
# 或 base64:json={"image": b64, "payload": ..., "secret": ...}

在线试用(Playground)

选择图片后点击调用(浏览器直连你部署的服务)

套餐(对照价)

档位月额度价格
试用(demo key)100 次免费
入门5,000¥49/月
标准50,000¥399/月
盲水印接口可见水印 3~5 倍计费(按次折算)

自部署:见仓库 README(单 Node 进程,npm install && npm start)。© 2026 watermark-api · 使用即表示同意仅对自有内容调用本服务。