Integre el marcado de agua invisible en sus aplicaciones
/embedAutenticaciónTodas las solicitudes API requieren autenticación mediante una clave API o cookie de sesión. Incluya su clave API en el encabezado de la solicitud:
curl -X POST https://copyseal.online/embed \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@example.png" \
-F "watermarkText=hello"// Browser / Deno / Node 18+
const form = new FormData();
form.append("file", fileInput.files[0]);
form.append("watermarkText", "hello");
const res = await fetch("https://copyseal.online/embed", {
method: "POST",
headers: { "Authorization": "Bearer YOUR_API_KEY" },
body: form,
});
const data = await res.json();import requests
res = requests.post(
"https://copyseal.online/embed",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": open("example.png", "rb")},
data={"watermarkText": "hello"},
)
print(res.json())import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Path;
HttpRequest req = HttpRequest.newBuilder(URI.create("https://copyseal.online/embed"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "multipart/form-data; boundary=---xyz")
.POST(HttpRequest.BodyPublishers.ofFile(Path.of("example.png")))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());Las claves API están disponibles en los planes Business y Enterprise. Los usuarios Free y Creator pueden usar el panel web o la autenticación basada en sesión.
/embedIncrustar marca de aguaOculte texto de marca de agua invisible en una imagen o PDF. El endpoint unificado acepta ambos formatos mediante despacho por Content-Type.
Content-Type: multipart/form-data
{
"file": <binary>, // Image (PNG/JPG/WebP) or PDF
"watermarkText": "string", // Text to hide
}{
"id": "uuid",
"file_type": "image" | "pdf",
"wm_shape": 42,
"watermark_content": "hello",
"download_url": "/api/download/{id}",
"expires_at": "2024-01-02T00:00:00Z"
}curl -X POST https://copyseal.online/embed \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@example.png" \
-F "watermarkText=hello"const form = new FormData();
form.append("file", fileInput.files[0]);
form.append("watermarkText", "hello");
const res = await fetch("https://copyseal.online/embed", {
method: "POST",
headers: { "Authorization": "Bearer YOUR_API_KEY" },
body: form,
});
const { id, download_url, watermark_content } = await res.json();import requests
res = requests.post(
"https://copyseal.online/embed",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": open("example.png", "rb")},
data={"watermarkText": "hello"},
)
data = res.json()
print(data["id"], data["download_url"], data["watermark_content"])import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Path;
HttpRequest req = HttpRequest.newBuilder(URI.create("https://copyseal.online/embed"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "multipart/form-data; boundary=---xyz")
.POST(HttpRequest.BodyPublishers.ofFile(Path.of("example.png")))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());POST /embed despacha según el Content-Type del archivo subido: image/* ejecuta la rama de imagen (watermarkText obligatorio) y application/pdf ejecuta la rama de PDF (watermarkText opcional, solo trazador). La forma de la respuesta siempre es la misma: los campos de imagen (wm_shape, watermark_content) o los campos de PDF (key_id, pages_marked, page_count, frame) se rellenan según la subida; el otro conjunto es null.
/extractExtraer marca de aguaRevele la marca de agua oculta de una imagen previamente incrustada.
Content-Type: multipart/form-data
{
"file": <binary>,
"wmShape": 42,
}{
"watermark_content": "Copyright 2024"
}curl -X POST https://copyseal.online/extract \
-H "Authorization: Bearer wsk_your_api_key" \
-F "file=@watermarked_photo.png" \
-F "wmShape=42"const form = new FormData();
form.append("file", fileInput.files[0]);
form.append("wmShape", "42");
const res = await fetch("https://copyseal.online/extract", {
method: "POST",
headers: { "Authorization": "Bearer YOUR_API_KEY" },
body: form,
});
const { watermark_content } = await res.json();import requests
res = requests.post(
"https://copyseal.online/extract",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": open("watermarked_photo.png", "rb")},
data={"wmShape": 42},
)
print(res.json()["watermark_content"])import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Path;
HttpRequest req = HttpRequest.newBuilder(URI.create("https://copyseal.online/extract"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "multipart/form-data; boundary=---xyz")
.POST(HttpRequest.BodyPublishers.ofFile(Path.of("watermarked_photo.png")))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());/extract/pdfExtraer marca de agua de PDFExtraiga la key_id por página de un PDF con marca de agua. Use la key_id para rastrear qué usuario/cuenta incrustó el archivo.
curl -X POST https://copyseal.online/extract/pdf \
-H "Authorization: Bearer wsk_your_api_key" \
-H "Content-Type: application/pdf" \
--data-binary "@watermarked_contract.pdf"const res = await fetch("https://copyseal.online/extract/pdf", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/pdf",
},
body: fileInput.files[0], // File object
});
const { key_id, frame, page_index, plaintext } = await res.json();import requests
with open("watermarked_contract.pdf", "rb") as f:
res = requests.post(
"https://copyseal.online/extract/pdf",
headers={"Authorization": "Bearer YOUR_API_KEY"},
data=f, # raw bytes; requests sets Content-Type automatically
)
data = res.json()
print(data["key_id"], data["page_index"], data["plaintext"])import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Path;
HttpRequest req = HttpRequest.newBuilder(URI.create("https://copyseal.online/extract/pdf"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "application/pdf")
.POST(HttpRequest.BodyPublishers.ofFile(Path.of("watermarked_contract.pdf")))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());{
"key_id": "8f3a2b1c4d5e6f70",
"frame": 0,
"page_index": 3,
"plaintext": "optional-payload"
}Devuelve 404 si no se encuentra ninguna marca de agua o si la key_id no pertenece al usuario autenticado.
Los límites de tasa de la API dependen de su plan de suscripción.
| Tier | Monthly | File size | API/day | Batch |
|---|---|---|---|---|
| Free | 5 | 5MB | -- | -- |
| Creator | 100 | 25MB | -- | 10 |
| Business | 500 | 50MB | 100 | 50 |
| Enterprise | 2,000 | 100MB | Unlimited | 500 |
No autorizado - Clave API inválida o faltante
Prohibido - Función no disponible en su plan
Demasiadas solicitudes - Límite mensual de imágenes alcanzado
Error interno del servidor - El procesamiento falló
Cree una cuenta gratuita y comience a proteger sus imágenes.