Endpoints
All extract responses are wrapped as {"data": ...}.
GET
/public/v1/school
School bound to the API key.
curl -H "Authorization: Bearer $PUBLIC_API_KEY" "$HOST/public/v1/school"
{
"data": {
"short_name": "Lycée Ada",
"full_name": "Lycée Ada Lovelace",
"school_code": "ABC123",
"url": "https://solfy.education/schools/ABC123"
}
}
GET
/public/v1/classes
Active, non-archived classes, sorted by name.
curl -H "Authorization: Bearer $PUBLIC_API_KEY" "$HOST/public/v1/classes"
{
"data": [
{
"name": "4e A",
"description": "Solfège",
"class_code": "XYZ789",
"url": "https://solfy.education/schools/ABC123/classes/XYZ789"
}
]
}
GET
/public/v1/classes/{class_code}/homeworks
Homeworks of a class, sorted by homework_order.
curl -H "Authorization: Bearer $PUBLIC_API_KEY" \
"$HOST/public/v1/classes/$CLASS_CODE/homeworks"
{
"data": [
{
"homework_order": 1,
"started_at": "2026-09-01T08:00:00+00:00",
"expired_at": "2026-09-08T08:00:00+00:00",
"memo": "Week 1"
}
]
}
GET
/public/v1/classes/{class_code}/homeworks/{homework_order}/results
One average score per current student (0–100): the rounded mean
of their exercise progress on that class homework. Students with no work appear with score: 0.
curl -H "Authorization: Bearer $PUBLIC_API_KEY" \
"$HOST/public/v1/classes/$CLASS_CODE/homeworks/$HOMEWORK_ORDER/results"
{
"data": {
"homework_order": 1,
"started_at": "2026-09-01T08:00:00+00:00",
"expired_at": "2026-09-08T08:00:00+00:00",
"memo": "Week 1",
"students": [
{ "user_id": "e55d4931-fcd6-443a-9df8-06d2a1f869cb", "pseudo": "Ada", "score": 73 }
]
}
}