Categories API
Manage fundraising categories and retrieve category statistics.
List Categories
GET /api/v1/categories
Retrieve all active fundraising categories with statistics.
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const response = await fetch(`https://api.fundlyhub.org/api/v1/categories`);
const categories = await response.json();
// Response format
[
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Medical",
"slug": "medical",
"emoji": "🏥",
"description": "Healthcare and medical emergency campaigns",
"fundraiser_count": 145,
"total_raised": 2847500
},
{
"id": "456e7890-e89b-12d3-a456-426614174000",
"name": "Education",
"slug": "education",
"emoji": "📚",
"description": "School supplies, tuition, and educational programs",
"fundraiser_count": 87,
"total_raised": 1234000
}
]Get Single Category
GET /api/v1/categories/:slug
Retrieve detailed information about a specific category including statistics.
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const slug = 'medical';
const response = await fetch(`https://api.fundlyhub.org/api/v1/categories/${slug}`);
const category = await response.json();
console.log('Category:', category.name);
console.log('Active fundraisers:', category.fundraiser_count);
console.log('Total raised:', category.total_raised);Get Category Statistics
GET /api/v1/categories/stats
Get aggregated statistics across all categories.
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const response = await fetch(`https://api.fundlyhub.org/api/v1/categories/stats`);
const stats = await response.json();
// Response format
{
"total_categories": 12,
"total_fundraisers": 1543,
"total_raised": 15678900,
"categories": [
{
"category_name": "Medical",
"count": 145,
"total_raised": 2847500
},
{
"category_name": "Education",
"count": 87,
"total_raised": 1234000
}
]
}Get Fundraisers by Category
GET /api/v1/categories/:slug/fundraisers
Retrieve all fundraisers in a specific category.
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const categorySlug = 'medical';
const response = await fetch(
`https://api.fundlyhub.org/api/v1/categories/${categorySlug}/fundraisers?limit=20&offset=0`
);
const fundraisers = await response.json();
console.log(`Found ${fundraisers.length} medical fundraisers`);Common Use Cases
Display Category Navigation
Build a category navigation menu with counts:
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const response = await fetch(`https://api.fundlyhub.org/api/v1/categories`);
const categories = await response.json();
// Render category menu
categories.forEach(cat => {
console.log(`${cat.emoji} ${cat.name} (${cat.fundraiser_count})`);
});Get Top Categories by Activity
Sort categories by most active fundraisers or total raised:
javascript
const API_BASE = 'https://api.fundlyhub.org/api/v1';
const response = await fetch(`https://api.fundlyhub.org/api/v1/categories/stats`);
const { categories } = await response.json();
// Sort by amount raised
const topByAmount = [...categories]
.sort((a, b) => b.total_raised - a.total_raised)
.slice(0, 5);
console.log('Top 5 categories by amount raised:');
topByAmount.forEach((cat, i) => {
console.log(`${i+1}. ${cat.category_name}: $${cat.total_raised.toLocaleString()}`);
});Response Codes
200- Success404- Category not found429- Rate limit exceeded500- Server error