Appearance
Node.js SDK
Official Node.js SDK for OG Image API.
Installation
bash
npm install ogimageapiOr with yarn:
bash
yarn add ogimageapiQuick Start
javascript
const OGImageAPI = require('ogimageapi');
const client = new OGImageAPI('og_your_api_key');
// Generate an image
const imageBuffer = await client.generate({
title: 'Hello World',
subtitle: 'My first OG image',
theme: 'dark'
});
// Save to file
const fs = require('fs');
fs.writeFileSync('og-image.png', imageBuffer);ES Modules
javascript
import OGImageAPI from 'ogimageapi';
const client = new OGImageAPI(process.env.OG_IMAGE_API_KEY);TypeScript
Full TypeScript support is included:
typescript
import OGImageAPI, { GenerateParams, Templates, Themes } from 'ogimageapi';
const client = new OGImageAPI('og_your_api_key');
const params: GenerateParams = {
template: Templates.BLOG,
title: 'TypeScript is Great',
theme: Themes.DARK
};
const buffer = await client.generate(params);Methods
generate(params)
Generate an image and return as Buffer.
javascript
const buffer = await client.generate({
template: 'blog',
title: 'My Blog Post',
subtitle: 'A great article',
theme: 'dark',
author_name: 'John Doe',
category: 'Tech',
read_time: '5 min'
});generateToFile(params, outputPath)
Generate and save directly to a file.
javascript
await client.generateToFile({
title: 'Hello World'
}, './output/og-image.png');getImageUrl(params)
Get the URL that generates an image (for use in meta tags).
javascript
const url = client.getImageUrl({
title: 'My Page Title',
theme: 'gradient'
});
// Returns: https://ogimageapi.io/api/generate?title=My%20Page%20Title&theme=gradientgetUsage()
Check your current usage statistics.
javascript
const usage = await client.getUsage();
console.log(`${usage.current} / ${usage.quota} images used`);listTemplates()
List all available templates.
javascript
const templates = await client.listTemplates();Constants
Templates
javascript
import { Templates } from 'ogimageapi';
Templates.DEFAULT // 'default'
Templates.BLOG // 'blog'
Templates.PRODUCT // 'product'
Templates.PROFILE // 'profile'
Templates.STATS // 'stats'
Templates.EVENT // 'event'
Templates.SOCIAL // 'social'
Templates.MEME // 'meme'
Templates.REALESTATE // 'realestate'
Templates.GRID // 'grid'Themes
javascript
import { Themes } from 'ogimageapi';
Themes.DARK // 'dark'
Themes.LIGHT // 'light'
Themes.GRADIENT // 'gradient'
Themes.OCEAN // 'ocean'
Themes.SUNSET // 'sunset'
Themes.FOREST // 'forest'Error Handling
javascript
import { OGImageAPIError } from 'ogimageapi';
try {
await client.generate({ title: 'Test' });
} catch (error) {
if (error instanceof OGImageAPIError) {
console.log('Status:', error.statusCode);
console.log('Code:', error.code);
console.log('Message:', error.message);
}
}Framework Examples
Next.js API Route
javascript
// pages/api/og/[...slug].js
import OGImageAPI from 'ogimageapi';
const client = new OGImageAPI(process.env.OG_IMAGE_API_KEY);
export default async function handler(req, res) {
const { title, description } = req.query;
const imageBuffer = await client.generate({
template: 'blog',
title,
subtitle: description
});
res.setHeader('Content-Type', 'image/png');
res.setHeader('Cache-Control', 'public, max-age=86400');
res.send(imageBuffer);
}Express.js
javascript
const express = require('express');
const OGImageAPI = require('ogimageapi');
const app = express();
const client = new OGImageAPI(process.env.OG_IMAGE_API_KEY);
app.get('/og-image', async (req, res) => {
try {
const buffer = await client.generate({
title: req.query.title || 'Default Title',
theme: 'dark'
});
res.type('png').send(buffer);
} catch (error) {
res.status(500).json({ error: error.message });
}
});Batch Generation
javascript
const posts = [
{ title: 'Post 1', slug: 'post-1' },
{ title: 'Post 2', slug: 'post-2' },
{ title: 'Post 3', slug: 'post-3' }
];
// Generate images in parallel
await Promise.all(posts.map(post =>
client.generateToFile(
{ template: 'blog', title: post.title },
`./images/${post.slug}.png`
)
));Environment Variables
We recommend storing your API key in an environment variable:
bash
# .env
OG_IMAGE_API_KEY=og_your_api_keyjavascript
const client = new OGImageAPI(process.env.OG_IMAGE_API_KEY);Requirements
- Node.js 14.0.0 or higher
fetchAPI (built-in for Node 18+, or usenode-fetchfor older versions)