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. Connect Google Drive or Dropbox once and choose a target folder; from then on every PDF your organisation generates is uploaded there the moment it is ready, named with the filename you set on the job.
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.
On the same page, paste the Google Drive folder URL or ID, or the Dropbox folder path (the default is /PDFox). Your /v1/generate calls don't change; set meta.filename if you want a specific file name.
When a job completes, PDFox uploads the PDF to every connected integration. The outcome for each destination is recorded in the job's event log as integration_delivery_complete or integration_delivery_failed.
Generate as usual · Node.js
// Nothing delivery-specific in the call: the connected integrations do the rest
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: '8d0f2b4a-6c8e-4a1c-b3e5-9f1a3c5e7b9d',
data: {
report: { month: 'May 2026', period: '2026-05-01/2026-05-31' },
client: { name: 'Meridian Software Ltd', ref: 'MSL-0042' },
},
meta: { filename: 'report-2026-05-meridian' }, // becomes report-2026-05-meridian.pdf
}),
});
const { jobId } = await res.json();
// When the PDF is ready, PDFox uploads it to every connected integration's folder Check delivery results
// Check the delivery outcome in the job's event log
const res = await fetch(
`https://api.pdf-fox.com/v1/generate/jobs/${jobId}/events`,
{ headers: { 'Authorization': `Bearer ${process.env.PDFOX_API_KEY}` } },
);
const { events } = await res.json();
const delivered = events.filter(e => e.eventType === 'integration_delivery_complete');
// e.g. [{ eventType: 'integration_delivery_complete',
// details: { provider: 'google_drive', fileId: '1a2B...', fileUrl: 'https://drive.google.com/...' } }]
const failed = events.filter(e => e.eventType === 'integration_delivery_failed');
// the message explains why, e.g. an expired connection or a missing folder Delivery is configured per organisation in Settings → Integrations, not per request, so existing calls work unchanged.
Each destination's result appears in GET /v1/generate/jobs/:jobId/events.
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.
Pick one target folder per integration and every generated PDF lands there — dashboard runs, API calls and AI-agent jobs alike. Pause an integration at any time without disconnecting it.
Set meta.filename programmatically — interpolate the client reference, date, or document type. PDFox adds .pdf and a numeric suffix if a name is already taken, so month-end runs produce consistently named files with zero manual cleanup.
Each job's event log shows the outcome for each destination — the Drive file ID and link, or the Dropbox file, plus the error message if an upload failed. Connection problems also show on the integration card in the dashboard.
Connecting storage doesn't remove the download URL. Your existing code that calls /download for a signed URL keeps working — delivery is a parallel output, not a replacement.
Connect Google Drive and Dropbox at the same time and every PDF is uploaded to both. Useful for redundant archival or when different stakeholders use different storage systems.
Getting connected
drive.file scope — it can only see files it creates, not your entire Drive./PDFox/Reports.Storage integrations are included on Standard plans and above. Authorize in two minutes.