Using Fetch (Node.js 18+)
Copy
const FILELOOM_API_KEY = process.env.FILELOOM_API_KEY;
async function generatePdf(html, options = {}) {
const response = await fetch('https://api.fileloom.io/v1/pdf/generate', {
method: 'POST',
headers: {
'X-API-Key': FILELOOM_API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ htmlContent: html, ...options })
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error?.message || 'PDF generation failed');
}
return response.json();
}
// Usage
const result = await generatePdf('<h1>Hello World</h1>');
console.log('PDF URL:', result.data.url);
With Template
Copy
async function generateFromTemplate(templateId, data, filename) {
const response = await fetch('https://api.fileloom.io/v1/pdf/generate', {
method: 'POST',
headers: {
'X-API-Key': process.env.FILELOOM_API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ templateId, templateData: data, filename })
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error?.message || 'Failed');
}
return response.json();
}
const invoice = await generateFromTemplate('tpl_invoice_v2', {
invoiceNumber: 'INV-2024-001',
customer: { name: 'Acme Corp' },
items: [{ description: 'Web Dev', quantity: 10, price: 150 }],
total: 1500
}, 'invoice.pdf');
Download to File
Copy
import { writeFile } from 'fs/promises';
async function generateAndDownload(html, outputPath) {
const result = await generatePdf(html);
const pdfResponse = await fetch(result.data.url);
const buffer = await pdfResponse.arrayBuffer();
await writeFile(outputPath, Buffer.from(buffer));
}
await generateAndDownload('<h1>Report</h1>', './report.pdf');
Using Axios
Copy
const axios = require('axios');
const fileloom = axios.create({
baseURL: 'https://api.fileloom.io/v1',
headers: { 'X-API-Key': process.env.FILELOOM_API_KEY },
timeout: 60000
});
async function generatePdf(html, options = {}) {
const { data } = await fileloom.post('/pdf/generate', {
htmlContent: html,
...options
});
return data;
}
Express.js Integration
Copy
const express = require('express');
const app = express();
app.post('/api/invoices/:id/pdf', async (req, res) => {
try {
const invoice = await getInvoice(req.params.id);
const response = await fetch('https://api.fileloom.io/v1/pdf/generate', {
method: 'POST',
headers: {
'X-API-Key': process.env.FILELOOM_API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
templateId: 'tpl_invoice_v2',
templateData: invoice,
filename: `invoice-${invoice.number}.pdf`
})
});
const result = await response.json();
res.json({ pdfUrl: result.data.url });
} catch (error) {
res.status(500).json({ error: 'Failed to generate PDF' });
}
});

