Add a PDF signature field
A 200 by 50 point field placed at 72, 72 on a 612 by 792 Letter page fits, with 340 points to spare on the right and 670 above, in the bottom-left quadrant. Check a signature field's placement before stamping it. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Page width
- 612
- Page height
- 792
- X
- 72
- Y
- 72
- Width
- 200
- Height
- 50
- Coordinate system
- pdf_points_origin_bottom_left
- Quadrant
- bottom_left
- Area points
- 10,000
- Coverage percent
- 2.063115
You send the page size and the field position in PDF points; it confirms the field lies fully inside the page bounds and describes the placement — margins on every side, the quadrant where its center falls, and how much of the page it covers. If any edge falls outside the page, it rejects the placement with a precise explanation of which bound was crossed, before you burn a signing operation on a field nobody will ever see.
Why signature field placement fails in production
And every team that automates document signing eventually ships a layout bug — a contract template reflows, a scanned page arrives in A4 instead of Letter, a coordinate computed for a portrait page lands on a landscape one, and the signature field ends up off the visible page. The signature still gets applied in some tools, so the document looks signed in the dashboard but shows nothing on the page a human opens. One validation call replaces the downstream incident.
Coordinates, units and what you get back
All values are PDF points — seventy-two to the inch — with the origin at the bottom-left corner of the page, x growing to the right and y growing up, exactly the coordinate system that PDF signature-field annotations use natively. You pass the page width and height plus the field rectangle as x, y, width and height. On failure the error message carries the offending numbers: which coordinate fell below zero or which computed edge exceeded which page dimension.
The arithmetic is pure rectangle math with values rounded to six decimals, so the same request always produces byte-identical output on any machine.
Where it fits in a signing pipeline
Use it as the gate before any operation that writes a signature field: template builders validate each field when the template is saved, batch signing jobs validate per document right before stamping, and ingestion pipelines validate when a page-size mismatch is suspected between the template and the incoming file. Because the capability is pure geometry with no file I/O, it is fast enough to run on every document in a batch without a second thought, and deterministic enough that its output can be stored as evidence of a checked placement.
What you can do with it
Gate a signing template before publishing
Validate every signature field in a template against the target page size when the template is saved, so a misplaced field is caught by the author, not by the first signer.
Guard a batch signing job
Check the placement per document right before stamping; a job that would put the field off-page fails loudly on that document instead of silently shipping an invisible signature.
Debug a customer-reported missing signature
Replay the exact page size and rectangle from the support ticket and see instantly which page edge the field crossed, with the numbers to prove it.
FAQ
Does it modify my PDF?
No. It validates geometry only — you send six numbers, not a file. Nothing is uploaded, stored or written.
What coordinate system does it use?
Native PDF points: 72 points per inch, origin at the bottom-left corner of the page, x to the right and y up — the same system signature-field annotations use.
Does a field exactly at the page edge pass?
Yes. A field whose right edge equals the page width is fully inside; only edges strictly beyond the page bounds are rejected.
Is the result deterministic?
Yes. It is pure rectangle arithmetic with six-decimal rounding, so the same input always returns byte-identical output.
Why would a signature field end up off the page?
Usually a layout change: a template reflows, a scan arrives in A4 instead of Letter, or coordinates worked out for a portrait page land on a landscape one. Some tools still apply the signature, so the document looks signed but shows nothing.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/pdf/digital-sign-field \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"page_width":612,"page_height":792,"x":72,"y":72,"width":200,"height":50}'const res = await fetch("https://api.kit.forhosting.com/pdf/digital-sign-field", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"page_width": 612,
"page_height": 792,
"x": 72,
"y": 72,
"width": 200,
"height": 50
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/digital-sign-field",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"page_width": 612,
"page_height": 792,
"x": 72,
"y": 72,
"width": 200,
"height": 50
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/digital-sign-field", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"page_width":612,"page_height":792,"x":72,"y":72,"width":200,"height":50}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"page_width":612,"page_height":792,"x":72,"y":72,"width":200,"height":50}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/digital-sign-field", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"page_width": 612,
"page_height": 792,
"x": 72,
"y": 72,
"width": 200,
"height": 50
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.digital_sign_field",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_mb | 25 |
max_pages | 200 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
The add pdf signature field API checks one thing that breaks signing workflows silently: whether the rectangle you plan to use for a digital signature field actually fits on the page.
Why signature field placement fails in production
The add pdf signature field endpoint exists to catch that class of bug at the only moment it is cheap: before the field is created. You describe the page and the rectangle, and the API either confirms the placement with a full geometric description or rejects it, naming the exact edge that was crossed — off the left, off the bottom, past the right edge or past the top.
Coordinates, units and what the API returns
On success the response echoes the normalized rectangle, gives the four absolute bounds, the margin remaining on each side of the page, the center point, a human-readable quadrant such as bottom-left, the field area in square points and the percentage of the page it covers, plus a one-line description you can drop straight into a log or an audit trail.
Where it fits in a signing pipeline
The same code that answers the API runs free in your browser on this page, so a support engineer can reproduce a customer's bad placement by typing the same six numbers the pipeline sent. Pay per call at $0.002 only when you automate it; exploring layouts and debugging a specific failing coordinate costs nothing.
Technical questions
What does it cost?
$0.002 per request. It is also free to run in your browser on this page.
What happens if the field is outside the page?
The request fails with an invalid_input error whose message names the crossed bound and shows the offending numbers, for example a right edge of 700pt on a 612pt-wide page.