Browse and copy pre-built sample templates and data for quick project starts.
---
https://app.datapublisher.io/api/sample-library
---
All endpoints require JWT authentication via Authorization: Bearer header.
---
The Sample Library API provides:
Sample Categories:
---
Get all available sample templates.
Endpoint: GET /samples
Headers:
Authorization: Bearer
Query Parameters:
category (optional): Filter by category
industry (optional): Filter by industry
search (optional): Search by name or keyword
Response (200 OK):
{
"success": true,
"samples": [
{
"id": "sample-uuid-1",
"name": "Sales Report Q4 2025",
"description": "Quarterly sales performance report with charts",
"category": "business-reports",
"industry": "sales",
"thumbnail": "https://app.datapublisher.io/samples/thumbnails/sales-report-q4.png",
"previewUrl": "https://app.datapublisher.io/samples/previews/sales-report-q4.pdf",
"features": [
"Executive summary section",
"Sales charts and graphs",
"Regional breakdown",
"Year-over-year comparison"
],
"dataFields": 12,
"dataRows": 50,
"complexity": "medium",
"estimatedSetupTime": "5 minutes"
},
{
"id": "sample-uuid-2",
"name": "Employee Handbook",
"description": "Complete employee handbook template",
"category": "hr-documents",
"industry": "human-resources",
"thumbnail": "https://app.datapublisher.io/samples/thumbnails/employee-handbook.png",
"previewUrl": "https://app.datapublisher.io/samples/previews/employee-handbook.pdf",
"features": [
"Company policies",
"Benefits overview",
"Code of conduct",
"Emergency procedures"
],
"dataFields": 8,
"dataRows": 1,
"complexity": "simple",
"estimatedSetupTime": "2 minutes"
}
],
"totalCount": 2,
"categories": [
"business-reports",
"sales-documents",
"marketing-materials",
"financial-reports",
"hr-documents",
"legal-documents",
"educational-materials"
]
}
---
Get detailed information about a specific sample.
Endpoint: GET /samples/:sampleId
Headers:
Authorization: Bearer
Path Parameters:
sampleId: Sample UUID
Response (200 OK):
{
"success": true,
"sample": {
"id": "sample-uuid-1",
"name": "Sales Report Q4 2025",
"description": "Quarterly sales performance report with charts",
"longDescription": "A comprehensive quarterly sales report template featuring executive summary, detailed sales analytics, regional performance breakdowns, and year-over-year comparisons. Perfect for sales managers and executives.",
"category": "business-reports",
"industry": "sales",
"thumbnail": "https://app.datapublisher.io/samples/thumbnails/sales-report-q4.png",
"previewImages": [
"https://app.datapublisher.io/samples/previews/sales-report-q4-page1.png",
"https://app.datapublisher.io/samples/previews/sales-report-q4-page2.png"
],
"previewPdf": "https://app.datapublisher.io/samples/previews/sales-report-q4.pdf",
"features": [
"Executive summary section",
"Sales charts and graphs",
"Regional breakdown",
"Year-over-year comparison"
],
"manifest": {
"templateName": "Sales Report Q4 Template.docx",
"csvFileName": "sales-data-q4.csv",
"dataFields": [
{ "name": "SalesRep", "type": "string", "description": "Sales representative name" },
{ "name": "Region", "type": "string", "description": "Sales region" },
{ "name": "Q4Sales", "type": "number", "description": "Q4 total sales" },
{ "name": "Q3Sales", "type": "number", "description": "Q3 total sales for comparison" },
{ "name": "YoYGrowth", "type": "percentage", "description": "Year-over-year growth rate" }
],
"dataRows": 50,
"templateSize": "245 KB",
"csvSize": "15 KB"
},
"complexity": "medium",
"estimatedSetupTime": "5 minutes",
"usageCount": 1250,
"rating": 4.8,
"createdAt": "2025-12-01T00:00:00Z",
"updatedAt": "2026-01-15T10:00:00Z"
}
}
---
Get sample preview image or PDF.
Endpoint: GET /samples/:sampleId/preview
Headers:
Authorization: Bearer
Query Parameters:
format (optional): image or pdf (default: pdf)
Response (200 OK):
application/pdf or image/png
---
Copy sample template and data to user's account.
Endpoint: POST /samples/:sampleId/copy
Headers:
Authorization: Bearer
Content-Type: application/json
Request Body:
{
"templateName": "My Sales Report",
"csvFileName": "my-sales-data.csv",
"description": "Copied from Sales Report Q4 sample"
}
Response (200 OK):
{
"success": true,
"copiedResources": {
"template": {
"id": "template-uuid",
"name": "My Sales Report",
"fileName": "my-sales-report.docx",
"fileSize": 245000
},
"csvFile": {
"id": "csv-file-uuid",
"fileName": "my-sales-data.csv",
"rowCount": 50,
"columnCount": 12
}
},
"message": "Sample copied successfully to your account"
}
What Gets Copied:
---
Get all available sample categories.
Endpoint: GET /categories
Headers:
Authorization: Bearer
Response (200 OK):
{
"success": true,
"categories": [
{
"id": "business-reports",
"name": "Business Reports",
"description": "Performance reports, analytics, and dashboards",
"sampleCount": 15,
"icon": "📊"
},
{
"id": "sales-documents",
"name": "Sales Documents",
"description": "Proposals, quotes, and invoices",
"sampleCount": 12,
"icon": "💼"
},
{
"id": "marketing-materials",
"name": "Marketing Materials",
"description": "Brochures, flyers, and promotional content",
"sampleCount": 10,
"icon": "📢"
},
{
"id": "financial-reports",
"name": "Financial Reports",
"description": "Budget reports, P&L statements, forecasts",
"sampleCount": 8,
"icon": "💰"
},
{
"id": "hr-documents",
"name": "HR Documents",
"description": "Employee handbooks, policies, job descriptions",
"sampleCount": 7,
"icon": "👥"
}
],
"totalCategories": 5
}
---
Get all samples in a specific category.
Endpoint: GET /categories/:categoryId/samples
Headers:
Authorization: Bearer
Path Parameters:
categoryId: Category ID (e.g., "business-reports")
Response: (Same structure as /samples endpoint)
---
Get most-used samples.
Endpoint: GET /popular
Headers:
Authorization: Bearer
Query Parameters:
limit (optional): Max results (default: 10)
Response (200 OK):
{
"success": true,
"popularSamples": [
{
"id": "sample-uuid-1",
"name": "Sales Report Q4 2025",
"category": "business-reports",
"usageCount": 1250,
"rating": 4.8,
"thumbnail": "https://app.datapublisher.io/samples/thumbnails/sales-report-q4.png"
}
],
"totalCount": 1
}
---
Search samples by name, description, or features.
Endpoint: GET /search
Headers:
Authorization: Bearer
Query Parameters:
q: Search query (required)
category (optional): Filter by category
limit (optional): Max results (default: 20)
Response (200 OK):
{
"success": true,
"query": "sales report",
"samples": [
{
"id": "sample-uuid-1",
"name": "Sales Report Q4 2025",
"category": "business-reports",
"relevance": 0.95,
"matchedFields": ["name", "description", "features"]
}
],
"totalCount": 1
}
---
---
| Status Code | Description |
|-------------|-------------|
| 400 | Invalid category or search query |
| 401 | Unauthorized - invalid JWT |
| 404 | Sample not found |
| 429 | Rate limit exceeded |
| 500 | Copy operation failed |
---
// List all samples
async function listSamples() {
const response = await fetch('https://app.datapublisher.io/api/sample-library/samples', {
headers: { 'Authorization': Bearer ${jwtToken} }
});
const { samples } = await response.json();
return samples;
}
// Get sample details
async function getSampleDetails(sampleId) {
const response = await fetch(https://app.datapublisher.io/api/sample-library/samples/${sampleId}, {
headers: { 'Authorization': Bearer ${jwtToken} }
});
const { sample } = await response.json();
return sample;
}
// Copy sample to account
async function copySample(sampleId) {
const response = await fetch(https://app.datapublisher.io/api/sample-library/samples/${sampleId}/copy, {
method: 'POST',
headers: {
'Authorization': Bearer ${jwtToken},
'Content-Type': 'application/json'
},
body: JSON.stringify({
templateName: 'My Custom Name',
csvFileName: 'my-data.csv'
})
});
const { copiedResources } = await response.json();
return copiedResources;
}
// Search samples
async function searchSamples(query) {
const response = await fetch(https://app.datapublisher.io/api/sample-library/search?q=${encodeURIComponent(query)}, {
headers: { 'Authorization': Bearer ${jwtToken} }
});
const { samples } = await response.json();
return samples;
}
// Get samples by category
async function getSamplesByCategory(categoryId) {
const response = await fetch(https://app.datapublisher.io/api/sample-library/categories/${categoryId}/samples, {
headers: { 'Authorization': Bearer ${jwtToken} }
});
const { samples } = await response.json();
return samples;
}
// Get popular samples
async function getPopularSamples() {
const response = await fetch('https://app.datapublisher.io/api/sample-library/popular?limit=10', {
headers: { 'Authorization': Bearer ${jwtToken} }
});
const { popularSamples } = await response.json();
return popularSamples;
}
---
---