Appearance
Profile Card Template
Display team members, user profiles, or personal branding cards.
Template ID
template: "profile"Preview
Person-focused layout featuring:
- Large circular avatar
- Name and role/title
- Tagline or bio
- Professional styling
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Person's name |
subtitle | string | No | Role, title, or company |
author_avatar_url | string | No | Profile photo URL |
tagline | string | No | Short bio or tagline |
theme | string | No | dark (default) or light |
logo_url | string | No | Company/brand logo |
Example Request
bash
curl -X POST https://ogimageapi.io/api/generate \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"title": "Alex Johnson",
"subtitle": "Senior Software Engineer at TechCorp",
"author_avatar_url": "https://example.com/alex.jpg",
"tagline": "Building the future of developer tools",
"template": "profile",
"theme": "dark"
}' \
--output profile-og.pngLayout Structure
┌─────────────────────────────────────────┐
│ [Logo] │
│ │
│ ┌─────────────┐ │
│ │ │ │
│ │ Avatar │ │
│ │ (Circle) │ │
│ │ │ │
│ └─────────────┘ │
│ │
│ Alex Johnson │
│ Senior Software Engineer │
│ at TechCorp │
│ │
│ "Building the future of dev tools" │
│ │
└─────────────────────────────────────────┘Theme Variations
Dark Theme
- Professional, modern look
- Avatar stands out
- Great for tech profiles
Light Theme
- Clean, approachable
- Soft colors
- Better for corporate profiles
Use Cases
| Context | Recommended Setup |
|---|---|
| Team pages | Both themes, consistent across team |
| Speaker profiles | Dark theme + tagline |
| Directory listings | Light theme |
| Personal branding | Dark theme |
| LinkedIn shares | Either theme |
Best Practices
- Use professional photos — Quality matters for first impressions
- Keep titles short — Name + primary role
- Add a memorable tagline — What makes this person unique
- Consistent branding — Use same style for entire team
Integration Examples
Team Page Generator
javascript
async function generateTeamOGImages(team) {
for (const member of team) {
const response = await fetch('https://ogimageapi.io/api/generate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.OG_IMAGE_API_KEY
},
body: JSON.stringify({
title: member.name,
subtitle: `${member.role} at ${member.company}`,
author_avatar_url: member.avatar,
tagline: member.bio,
logo_url: 'https://mycompany.com/logo.png',
template: 'profile',
theme: 'dark'
})
});
const buffer = await response.arrayBuffer();
fs.writeFileSync(`./public/team/${member.slug}.png`, Buffer.from(buffer));
}
}Dynamic Profile Cards
javascript
// API route for dynamic profile images
export default async function handler(req, res) {
const { name, role, avatar } = req.query;
const imageResponse = await fetch('https://ogimageapi.io/api/generate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.OG_IMAGE_API_KEY
},
body: JSON.stringify({
title: name,
subtitle: role,
author_avatar_url: avatar,
template: 'profile',
theme: 'dark'
})
});
const imageBuffer = await imageResponse.arrayBuffer();
res.setHeader('Content-Type', 'image/png');
res.setHeader('Cache-Control', 'public, max-age=86400');
res.send(Buffer.from(imageBuffer));
}Avatar Specifications
| Property | Recommendation |
|---|---|
| Format | PNG or JPG |
| Size | 400×400 px minimum |
| Aspect ratio | 1:1 (square) |
| Quality | High resolution |
| Background | Any (will be masked to circle) |
Related Templates
- Blog Post — Author-attributed content
- Social Share — Engagement-focused