School APIs
Develop comprehensive school management and analytics solutions. The School API suite provides the data and tools you need to build institution-level platforms.
Quick Start
Access school-wide analytics and resource management from a single API.
const plum = require('@plum/sdk');
const client = new plum.Client({
apiKey: process.env.PLUM_API_KEY
});
// Get school-wide analytics dashboard
const analytics = await client.analytics.overview({
school_id: 'sch_abc123',
period: 'term'
});Analytics API
Access school-wide metrics, trends, and insights to drive data-informed decisions.
/v1/analyticsRetrieve aggregated analytics for a school. Includes enrollment, performance, attendance, and engagement data.
Query Parameters
school_idstring required - School identifierperiodstring - Time period (week,month,term,year)metricsstring[] - Specific metrics to includecompare_tostring - Compare with previous period (previous_term,previous_year)
{
"data": {
"school_id": "sch_abc123",
"period": "term",
"overview": {
"total_students": 1250,
"total_teachers": 68,
"active_classes": 95,
"avg_attendance_rate": 0.94,
"avg_performance_score": 78.3
},
"trends": {
"attendance": { "current": 0.94, "previous": 0.91, "change": "+3.3%" },
"performance": { "current": 78.3, "previous": 75.1, "change": "+4.3%" },
"engagement": { "current": 8.2, "previous": 7.8, "change": "+5.1%" }
},
"top_subjects": [
{ "subject": "mathematics", "avg_score": 82.1 },
{ "subject": "science", "avg_score": 79.4 },
{ "subject": "english", "avg_score": 77.8 }
]
}
}/v1/analytics/reportsGenerate detailed reports with charts, breakdowns, and exportable data.
Query Parameters
school_idstring required - School identifiertypestring - Report type (performance,attendance,engagement,comprehensive)formatstring - Output format (json,csv,pdf)
Resources API
Manage shared educational resources, materials, and digital assets across the school.
/v1/resourcesList all shared resources. Filter by type, subject, grade, or department.
Query Parameters
typestring - Resource type (document,video,presentation,template)subjectstring - Filter by subject areadepartmentstring - Filter by departmentshared_withstring - Filter by access level (all,teachers,students)
/v1/resourcesUpload and share a new resource with the school community.
const resource = await client.resources.create({
title: 'Term 2 Mathematics Curriculum',
type: 'document',
subject: 'mathematics',
department: 'STEM',
shared_with: 'teachers',
file_url: 'https://storage.example.com/curriculum.pdf',
tags: ['curriculum', 'term-2', 'mathematics']
});/v1/resources/:idUpdate a resource's metadata, access permissions, or replace its content.
/v1/resources/:idRemove a resource. Files are retained for 30 days before permanent deletion.
Communication API
Send announcements, notifications, and messages to teachers, students, and parents.
/v1/communicationRetrieve sent communications and their delivery status.
Query Parameters
typestring - Message type (announcement,notification,direct)audiencestring - Target audience (all,teachers,students,parents)statusstring - Delivery status (sent,delivered,read)
/v1/communicationSend an announcement or notification to a targeted audience.
await client.communication.send({
type: 'announcement',
audience: 'all',
title: 'School Reopening Notice',
message: 'School resumes on Monday, March 3rd. All students are expected by 8:00 AM.',
channels: ['email', 'push', 'sms'],
priority: 'high'
});