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.

javascript
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.

GET /v1/analytics

Retrieve aggregated analytics for a school. Includes enrollment, performance, attendance, and engagement data.

Query Parameters

  • school_id string required - School identifier
  • period string - Time period (week, month, term, year)
  • metrics string[] - Specific metrics to include
  • compare_to string - Compare with previous period (previous_term, previous_year)
response
{
  "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 }
    ]
  }
}
GET /v1/analytics/reports

Generate detailed reports with charts, breakdowns, and exportable data.

Query Parameters

  • school_id string required - School identifier
  • type string - Report type (performance, attendance, engagement, comprehensive)
  • format string - Output format (json, csv, pdf)

Resources API

Manage shared educational resources, materials, and digital assets across the school.

GET /v1/resources

List all shared resources. Filter by type, subject, grade, or department.

Query Parameters

  • type string - Resource type (document, video, presentation, template)
  • subject string - Filter by subject area
  • department string - Filter by department
  • shared_with string - Filter by access level (all, teachers, students)
POST /v1/resources

Upload and share a new resource with the school community.

javascript
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']
});
PUT /v1/resources/:id

Update a resource's metadata, access permissions, or replace its content.

DELETE /v1/resources/:id

Remove a resource. Files are retained for 30 days before permanent deletion.

Communication API

Send announcements, notifications, and messages to teachers, students, and parents.

GET /v1/communication

Retrieve sent communications and their delivery status.

Query Parameters

  • type string - Message type (announcement, notification, direct)
  • audience string - Target audience (all, teachers, students, parents)
  • status string - Delivery status (sent, delivered, read)
POST /v1/communication

Send an announcement or notification to a targeted audience.

javascript
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'
});