PDFSignify provides a straightforward REST API for digitally signing PDF documents with cryptographic certificates. Unlike traditional eSignature platforms that manage signers, emails, and workflows, PDFSignify focuses on one thing: applying real digital signatures to your PDFs using your own .pfx or .p12 certificate. Send a PDF in, get a signed PDF back — it's that simple.
Why Use the PDFSignify API?
If your application needs to apply certificate-based digital signatures to PDF documents, PDFSignify eliminates the complexity. There are no document storage systems to manage, no webhook endpoints to configure, and no signer workflows to build. The API is fully synchronous: you POST your PDF and certificate, and you receive the signed PDF in the response.
- Digitally sign PDFs with your own .pfx or .p12 certificate
- Synchronous API — send files, get the signed PDF back immediately
- Set PDF metadata (author, title, keywords, etc.) programmatically
- Verify certificate passwords before signing
- Customize signature appearance, position, size, and message
- No document storage — your files are never retained on our servers
Step 1: Get Your API Credentials
Sign up at pdfsignify.com and navigate to your dashboard. You'll receive two credentials: an AccessKey and a SecretKey. Both must be included as headers in every API request. Keep these credentials secure and never expose them in client-side code.
Step 2: Authenticate Your Requests
PDFSignify uses a simple header-based authentication system. Every request must include both your AccessKey and SecretKey as HTTP headers. There are no Bearer tokens, no OAuth flows, and no session management — just two headers on every request.
curl -X POST https://api.pdfsignify.com/api/v1/sign-pdf \
-H "AccessKey: YOUR_ACCESS_KEY" \
-H "SecretKey: YOUR_SECRET_KEY" \
-F "[email protected]" \
-F "certificatePassword=your_cert_password" \
-F "[email protected]" \
--output signed-document.pdfStep 3: Sign Your First PDF
The core endpoint is POST /sign-pdf. It accepts multipart/form-data with your PDF file, your digital certificate (.pfx or .p12), and the certificate password. The response is the signed PDF returned as binary data. Here's a complete JavaScript example using axios:
import axios from "axios";
import * as fs from "fs";
import FormData from "form-data";
const cert = fs.readFileSync("certificate.pfx");
const pdf = fs.readFileSync("document.pdf");
const formData = new FormData();
formData.append("certificate", cert, {
filename: "certificate.pfx",
contentType: "application/x-pkcs12"
});
formData.append("certificatePassword", "your_cert_password");
formData.append("pdf", pdf, {
filename: "document.pdf",
contentType: "application/pdf"
});
const response = await axios.post(
"https://api.pdfsignify.com/api/v1/sign-pdf",
formData,
{
headers: {
...formData.getHeaders(),
"AccessKey": "YOUR_ACCESS_KEY",
"SecretKey": "YOUR_SECRET_KEY"
},
responseType: "arraybuffer"
}
);
fs.writeFileSync("signed-document.pdf", response.data);
console.log("PDF signed successfully!");Customizing the Signature Appearance
PDFSignify gives you full control over how the signature appears on the PDF. You can set the position, size, background image, message, date format, and which pages show the signature. All of these are optional fields appended to the same multipart form.
formData.append("signatureBackgroundImage", backgroundImage, {
filename: "logo.png",
contentType: "image/png"
});
formData.append("signaturePageAppearance", "-1"); // -1 for all pages
formData.append("signatureMessage", "Digitally signed by ACME Corp");
formData.append("signatureDateFormat", "Y-m-d H:i:s");
formData.append("timezone", "UTC");
formData.append("signatureHeight", "100");
formData.append("signatureWidth", "150");
formData.append("signatureXPosition", "180");
formData.append("signatureYPosition", "100");Endpoint 2: Set PDF Metadata
The set-pdf-metadata endpoint lets you update a PDF's metadata fields (author, title, subject, keywords, etc.) without signing it. This is useful when you need to stamp documents with organizational information before archiving or distribution.
const formData = new FormData();
formData.append("pdf", fs.readFileSync("document.pdf"), {
filename: "document.pdf",
contentType: "application/pdf"
});
formData.append("pdfMetadataAuthor", "ACME Corporation");
formData.append("pdfMetadataTitle", "Q1 Financial Report");
formData.append("pdfMetadataSubject", "Quarterly Financials");
formData.append("pdfMetadataKeywords", "finance,report,Q1,2026");
const response = await axios.post(
"https://api.pdfsignify.com/api/v1/set-pdf-metadata",
formData,
{
headers: {
...formData.getHeaders(),
"AccessKey": "YOUR_ACCESS_KEY",
"SecretKey": "YOUR_SECRET_KEY"
},
responseType: "arraybuffer"
}
);
fs.writeFileSync("document-with-metadata.pdf", response.data);Endpoint 3: Check Certificate Password
Before attempting to sign, you can verify that a certificate file and password combination is valid. This is useful for user-facing applications where you want to validate credentials before processing a batch of documents.
const formData = new FormData();
formData.append("certificate", fs.readFileSync("certificate.pfx"), {
filename: "certificate.pfx",
contentType: "application/x-pkcs12"
});
formData.append("certificatePassword", "your_cert_password");
const response = await axios.post(
"https://api.pdfsignify.com/api/v1/check-certificate-password",
formData,
{
headers: {
...formData.getHeaders(),
"AccessKey": "YOUR_ACCESS_KEY",
"SecretKey": "YOUR_SECRET_KEY"
}
}
);
console.log(response.data); // { success: true }API Reference Summary
- POST /api/v1/sign-pdf — Sign a PDF with a digital certificate. Returns signed PDF binary.
- POST /api/v1/set-pdf-metadata — Update PDF metadata fields. Returns updated PDF binary.
- POST /api/v1/check-certificate-password — Validate a certificate and password. Returns JSON.
What's Next?
You now have everything you need to start signing PDFs programmatically. The PDFSignify API is designed to be stateless and simple — there are no complex workflows to orchestrate, no callback URLs to set up, and no polling for status. Every request is a self-contained operation that returns a result immediately. Build it into your CI/CD pipeline, your document generation system, or your backend API to give your users signed PDFs on demand.
The simplest integration is the best integration. Send a PDF and a certificate, get a signed PDF back. That's PDFSignify.