qrcode-api-sdk
v1.0.0
Published
Official TypeScript/JavaScript SDK for QR Code API - Generate QR codes with a simple REST API
Maintainers
Readme
@qrcodeapi/sdk
Official TypeScript/JavaScript SDK for QR Code API.
Generate QR codes with a simple REST API. Dynamic links, analytics, custom styling, and more.
Installation
npm install @qrcodeapi/sdk
# or
yarn add @qrcodeapi/sdk
# or
pnpm add @qrcodeapi/sdkQuick Start
import { QRCodeAPI } from '@qrcodeapi/sdk';
const client = new QRCodeAPI({
apiKey: process.env.QRCODE_API_KEY
});
// Generate a QR code
const qr = await client.generate({
data: 'https://example.com',
size: 400,
color: '22c55e'
});
// Save to file (Node.js)
import { writeFileSync } from 'fs';
writeFileSync('qr.png', Buffer.from(await qr.arrayBuffer()));Features
- ✅ Full TypeScript support
- ✅ Automatic retries with exponential backoff
- ✅ Rate limit handling
- ✅ Dynamic links with analytics
- ✅ Batch generation support
- ✅ Works in Node.js and browsers
API Reference
Generate QR Code
const qr = await client.generate({
data: 'https://example.com', // Required
size: 400, // 50-2000 (default: 300)
format: 'png', // 'png' or 'svg'
color: '000000', // Hex without #
background: 'ffffff', // Hex without #
errorCorrection: 'M', // 'L', 'M', 'Q', 'H'
margin: 4, // 0-10
logo: 'https://...', // Logo URL (Pro plan)
logoSize: 20 // 10-40 as %
});Dynamic Links
// Create
const link = await client.links.create({
name: 'My Campaign',
targetUrl: 'https://example.com'
});
// List
const links = await client.links.list();
// Get
const link = await client.links.get('link-id');
// Update
await client.links.update('link-id', {
targetUrl: 'https://new-url.com'
});
// Delete
await client.links.delete('link-id');Analytics
const analytics = await client.analytics.get({
linkId: 'link-id',
startDate: '2024-01-01',
endDate: '2024-01-31'
});
console.log(analytics.analytics.totalScans);
console.log(analytics.analytics.scansByCountry);Batch Generation
const zip = await client.batch.generate({
items: [
{ data: 'https://example.com/1', filename: 'qr1.png' },
{ data: 'https://example.com/2', filename: 'qr2.png' }
],
defaults: {
size: 400,
color: '4f46e5'
}
});Error Handling
import {
QRCodeAPI,
QRCodeAPIError,
RateLimitError,
AuthenticationError
} from '@qrcodeapi/sdk';
try {
const qr = await client.generate({ data: 'test' });
} catch (error) {
if (error instanceof RateLimitError) {
console.log(`Rate limited. Retry after ${error.retryAfter}s`);
} else if (error instanceof AuthenticationError) {
console.log('Invalid API key');
} else if (error instanceof QRCodeAPIError) {
console.log(`API Error: ${error.message}`);
}
}Configuration
const client = new QRCodeAPI({
apiKey: 'your-api-key',
baseUrl: 'https://www.qrcodeapi.io/api', // Custom URL
timeout: 30000, // Request timeout
retry: {
maxRetries: 3,
retryDelay: 1000
}
});License
MIT
