Skip to content

API documentation

Smrt English Client API

A read-only API that returns student and class records to your institution’s systems. Each API key only reaches its own institution’s data.

Open the testing hub

How it works

How a request works.

Your system asks for a student or a class with its own API key, and the API returns the records read-only.

Your systemYour student information system or reporting tool.
Your API keySent with every request and tied to your school.
Smrt English APIRead-only endpoints for students and classes.
Your recordsGrades, attendance and class rosters as JSON.
keyboard_arrow_up

Smrt English API

class Get Classes List Endpoint

Endpoint Details

Endpoint: GET /smrtapi/v1/classes

Purpose: Retrieve a paginated list of classes with summary statistics. Perfect for class roster management, teacher assignment tracking, and institutional reporting.

Query Parameters

Parameter Type Default Description
page integer 1 Page number (must be ≥ 1)
limit integer 50 Results per page (1-100)
status integer - Filter by status (0=inactive, 1=active)
course_id integer - Filter by specific course
teacher_id integer - Filter by teacher ID
teacher_email string - Filter by teacher email address
search string - Search by class title or class code

Headers Required

X-API-Key: your_institution_api_key

Example Requests

# Get first page (default 50 classes)
curl -H "X-API-Key: your_institution_api_key" \
  https://smrtenglish.com/smrtapi/v1/classes

# Get specific page with custom limit
curl -H "X-API-Key: your_institution_api_key" \
  "https://smrtenglish.com/smrtapi/v1/classes?page=2&limit=25"

# Filter by active classes only
curl -H "X-API-Key: your_institution_api_key" \
  "https://smrtenglish.com/smrtapi/v1/classes?status=1"

# Filter by teacher email
curl -H "X-API-Key: your_institution_api_key" \
  "https://smrtenglish.com/smrtapi/v1/[email protected]"

# Filter by course
curl -H "X-API-Key: your_institution_api_key" \
  "https://smrtenglish.com/smrtapi/v1/classes?course_id=12"

Response Example (abbreviated):

{
  "success": true,
  "data": [
    {
      "class_id": 456,
      "class_title": "English 101 - Section A",
      "class_code": "ENG101-A",
      "class_status": 1,
      "class_room": "Room 204",
      "class_dateadded": "2024-01-10",
      "course": {
        "course_id": 12,
        "course_name": "General English"
      },
      "teacher": {
        "teacher_id": 78,
        "name": "Jane Smith",
        "email": "[email protected]"
      },
      "student_count": 25,
      "summary": {
        "average_completion_rate": 82.5,
        "average_score": 78.3,
        "total_engagement_minutes": 1250.5
      },
      "assignment_activity": {
        "has_assignments": true,
        "assignment_count": 15,
        "first_assignment_date": "2024-01-15",
        "last_assignment_date": "2024-10-05",
        "students_enrolled": 25,
        "students_with_submissions": 22,
        "students_without_submissions": 3
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total_count": 15,
    "total_pages": 1,
    "has_next": false,
    "has_prev": false
  }
}

Use Cases

  • Class Roster Export - Pull complete class lists for institutional reporting
  • Teacher Workload Analysis - Track how many classes each teacher manages
  • Course Enrollment Reports - See how many sections exist for each course
  • Performance Comparison - Compare performance metrics across different classes
  • Active Class Monitoring - Track which classes are currently active vs archived
  • Integration with Scheduling - Sync class data with scheduling systems

Response Format

Returns a paginated list of classes with summary statistics:

Response Fields - Class Object

Field Type Description
class_id integer Unique class identifier
class_title string Class name/title
class_code string Class code/section identifier
class_status integer Status (0=inactive, 1=active)
student_count integer Number of enrolled students
course.course_id integer Associated course ID
teacher.name string Primary teacher name
summary.average_completion_rate float Average completion rate (0-100)
summary.average_score float Average assignment score (0-100)

Pagination Object:

  • page - Current page number
  • limit - Results per page
  • total_count - Total classes matching filter
  • total_pages - Total pages available
  • has_next - Boolean, true if more pages exist
  • has_prev - Boolean, true if previous page exists

Filtering Best Practices

  • Use status=1 to get only active classes for current reporting
  • Use teacher_email to get all classes for a specific teacher
  • Use course_id to see all sections of a particular course
  • Combine filters for precise queries (e.g., active classes for a specific teacher)

Example: Get All Classes for a Teacher

import requests

api_key = "your_institution_api_key"
teacher_email = "[email protected]"
base_url = "https://smrtenglish.com/smrtapi/v1/classes"
headers = {"X-API-Key": api_key}

response = requests.get(
    base_url,
    headers=headers,
    params={"teacher_email": teacher_email, "status": 1}
)

data = response.json()
classes = data["data"]

print(f"Teacher {teacher_email} has {len(classes)} active classes")
for cls in classes:
    print(f"  - {cls['class_title']} ({cls['student_count']} students)")

Note: For detailed class data including full student roster with individual progress, use the Get Single Class endpoint.