Add a stamp
POST
/v1/pdf/stamp
curl -H "X-Api-Key: $KEY" -F files=@a.pdf -F files=@logo.png \ -F position=top-right -F scale=0.2 \ http://localhost:9027/v1/pdf/stamp -o branded.pdfimport { openAsBlob } from 'node:fs';import { writeFile } from 'node:fs/promises';
const form = new FormData();form.append('files', await openAsBlob('a.pdf'), 'a.pdf');form.append('files', await openAsBlob('logo.png'), 'logo.png');form.append('position', 'top-right');form.append('scale', '0.2');
const response = await fetch('http://localhost:9027/v1/pdf/stamp', { method: 'POST', headers: { 'X-Api-Key': process.env.KEY }, body: form,});if (!response.ok) throw new Error(await response.text());await writeFile('branded.pdf', Buffer.from(await response.arrayBuffer()));import osfrom pathlib import Path
import requests
response = requests.post( "http://localhost:9027/v1/pdf/stamp", headers={"X-Api-Key": os.environ["KEY"]}, files=[("files", open("a.pdf", "rb")), ("files", open("logo.png", "rb"))], data={"position": "top-right", "scale": "0.2"},)response.raise_for_status()Path("branded.pdf").write_bytes(response.content)package main
import ( "bytes" "io" "log" "mime/multipart" "net/http" "os" "path/filepath")
func main() { var body bytes.Buffer form := multipart.NewWriter(&body) attach(form, "files", "a.pdf") attach(form, "files", "logo.png") form.WriteField("position", "top-right") form.WriteField("scale", "0.2") form.Close()
request, err := http.NewRequest("POST", "http://localhost:9027/v1/pdf/stamp", &body) if err != nil { log.Fatal(err) } request.Header.Set("X-Api-Key", os.Getenv("KEY")) request.Header.Set("Content-Type", form.FormDataContentType())
response, err := http.DefaultClient.Do(request) if err != nil { log.Fatal(err) } defer response.Body.Close() if response.StatusCode >= 300 { message, _ := io.ReadAll(response.Body) log.Fatalf("%s: %s", response.Status, message) }
out, err := os.Create("branded.pdf") if err != nil { log.Fatal(err) } defer out.Close() if _, err := io.Copy(out, response.Body); err != nil { log.Fatal(err) }}
// attach adds the file at path to the form as the named field.func attach(form *multipart.Writer, field, path string) { file, err := os.Open(path) if err != nil { log.Fatal(err) } defer file.Close() part, err := form.CreateFormFile(field, filepath.Base(path)) if err != nil { log.Fatal(err) } if _, err := io.Copy(part, file); err != nil { log.Fatal(err) }}Puts text, an image or a PDF over the content of each page.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typemultipart/form-data
object
colour
Hex colour such as #ff0000. Default #808080.
string | null
files
required
The PDF, and optionally an image or PDF to use as the mark.
Array<string>
fontSize
Size of a text mark in points. Default 24.
number | null format: float
opacity
0 to 1.
number | null format: float
outputFilename
string | null
pages
Page selection such as 1-3,5.
string | null
position
top-left, top-center, top-right, center, bottom-left, bottom-center, bottom-right.
string | null
rotation
Degrees.
number | null format: float
scale
Relative to the page width, 0 to 1.
number | null format: float
text
Text for a text mark; omit when sending an image or PDF.
string | null
Responses
Section titled “Responses”The stamped PDF
Media typeapplication/pdf
The file, as bytes.
string format: binary
The request is wrong
Media typeapplication/json
The JSON body of every error response.
object
error
required
A stable, machine-readable kind.
string
message
required
What went wrong, for a person.
string
Example
{ "error": "invalid_request", "message": "unknown step 'teleport'"}