Node.js Integration
Generate QR codes in Node.js with built-in fetch or any HTTP client.
Quick Start (Node 18+)
// qr-client.js
async function generateQR(data, options = {}) {
const params = new URLSearchParams({
data,
size: options.size || 300,
format: options.format || 'png',
...options
});
const response = await fetch(
`https://qrcodeapi.io/api/generate?${params}`,
{
headers: {
'Authorization': `Bearer ${process.env.QR_API_KEY}`
}
}
);
return Buffer.from(await response.arrayBuffer());
}
// Usage
const fs = require('fs');
const qr = await generateQR('https://example.com');
fs.writeFileSync('qr.png', qr);
Express.js Middleware
const express = require('express');
const app = express();
app.get('/api/qr', async (req, res) => {
const { url, size } = req.query;
const response = await fetch(
`https://qrcodeapi.io/api/generate?data=${encodeURIComponent(url)}&size=${size || 300}`,
{
headers: { 'Authorization': `Bearer ${process.env.QR_API_KEY}` }
}
);
const buffer = Buffer.from(await response.arrayBuffer());
res.set('Content-Type', 'image/png');
res.send(buffer);
});
app.listen(3000);
Next.js API Route
// app/api/qr/route.js
export async function GET(request) {
const { searchParams } = new URL(request.url);
const data = searchParams.get('data');
const response = await fetch(
`https://qrcodeapi.io/api/generate?data=${encodeURIComponent(data)}`,
{
headers: { 'Authorization': `Bearer ${process.env.QR_API_KEY}` }
}
);
const buffer = await response.arrayBuffer();
return new Response(buffer, {
headers: { 'Content-Type': 'image/png' }
});
}
TypeScript Helper
interface QROptions {
size?: number;
format?: 'png' | 'svg';
color?: string;
background?: string;
}
export async function generateQR(
data: string,
options: QROptions = {}
): Promise<Buffer> {
const params = new URLSearchParams({ data, ...options } as any);
const res = await fetch(`https://qrcodeapi.io/api/generate?${params}`, {
headers: { Authorization: `Bearer ${process.env.QR_API_KEY}` }
});
return Buffer.from(await res.arrayBuffer());
}