Generate PDFs and push them straight to your cloud storage ”” no manual download, no re-upload, no naming-convention drift. Authorize once; every job delivers automatically.
The problem
Most PDF generation workflows end the same way: a developer polls for a signed download URL, saves the file locally, then uploads it to the right Drive folder or Dropbox path ”” usually with a slightly wrong name. When that step is manual, files pile up in the wrong places, folder structures drift, and clients receive documents from personal Google accounts instead of the company folder.
PDFox delivers to cloud storage as part of the generate job itself. You specify the destination folder and filename in the same API call that triggers rendering. The file lands exactly where you point it, the moment the PDF is ready.
How it works
Go to Settings → Integrations and click Connect next to Google Drive or Dropbox. Complete the standard OAuth flow ”” PDFox stores an access token scoped to the folders you approve. No service accounts or API credentials to manage.
delivery key to your generate callInclude a delivery object in your existing /v1/generate payload. Specify the target folder_id and filename for Drive, or a full path for Dropbox. Everything else stays the same.
When the PDF render job completes, PDFox pushes the file to your configured destination before marking the job complete. Poll the job status endpoint or use a webhook ”” the delivery status is included in the job response.
Google Drive delivery · Node.js
const res = await fetch('https://api.pdf-fox.com/v1/generate', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.PDFOX_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
templateId: 'tpl_monthly_report',
data: {
report: { month: 'May 2026', period: '2026-05-01/2026-05-31' },
client: { name: 'Meridian Software Ltd', ref: 'MSL-0042' },
},
delivery: {
google_drive: {
folder_id: '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs',
filename: 'report-2026-05-meridian.pdf',
},
},
}),
});
const { jobId } = await res.json();
// PDF renders async ”” Drive receives the file automatically on completion Dropbox delivery ”” or both at once
// Dropbox delivery ”” same generate call, different delivery key
delivery: {
dropbox: {
path: '/Reports/2026/May/meridian-report.pdf',
autorename: true, // avoid collisions
},
}
// Both at once ”” useful for redundant archival
delivery: {
google_drive: { folder_id: '1BxiMV...', filename: 'report-may.pdf' },
dropbox: { path: '/Reports/2026/May/report-may.pdf' },
} The delivery key is optional and additive ”” existing calls without it continue to work unchanged.
Delivery status is exposed on the job object: job.delivery.google_drive.status.
Why teams switch to this
Authorize with your Google or Dropbox account in two clicks. No JSON key files, no service account setup, no IAM policy to maintain. Revoke access from your Google or Dropbox security settings at any time.
Different jobs can land in different folders. Route client A's invoices to their shared Drive folder, client B's reports to a separate path ”” all from a single integration, controlled per API call.
Set the filename programmatically ”” interpolate the client reference, date, or document type. End-of-month batch runs produce consistently named files with zero manual cleanup.
The job response includes a delivery block with the outcome for each destination ”” Drive file ID, Dropbox path, and error details if the upload failed. No separate webhook to wire up.
Adding a delivery destination doesn't remove the download URL. Your existing code that retrieves the signed URL continues to work ”” delivery is a parallel output, not a replacement.
Include both a google_drive and a dropbox key in the same delivery object. Useful for redundant archival or when different stakeholders access different storage systems.
Getting connected
drive.file scope ”” it can only see files it creates, not your entire Drive./PDFox/Reports.delivery key to your next generate call. That's it ”” no redeployment, no new credentials, no config file changes.Free tier included. No card required. Authorize in two minutes.