POST /v1/students — Search Students
Search for students within your authorized districts and schools. Returns student records along with related school, district, and avatar data.
Request
POST https://api.triand.com/v1/students
Content-Type: application/json
x-api-key: {your-api-key}
Authorization: Bearer {your-pjwt-token} Parameters
| Parameter | Business Rule / Regex | Description |
|---|---|---|
| limit | number, 1-100 | Maximum number of students to return (default: 25) |
| districtlea | string | District LEA code to search within (e.g., "1503000"). Required if no schoolleas provided. |
| schoolleas | string[] | Array of school LEA codes to filter by (e.g., ["1503017"]) |
| grades | string[] | Array of grade levels to filter by (e.g., ["09", "10", "11", "12"]) |
| keywords | string | Search term — matches against student name, state ID, or other indexed fields |
Example Request
{
"limit": 25,
"districtlea": "1503000",
"schoolleas": ["1503017"],
"grades": ["09", "10"],
"keywords": "smith"
} Response
| Field | Type | Description |
|---|---|---|
| actionOk | boolean | true if the request succeeded |
| error | string[] | Array of error codes (empty on success) |
| total | number | Total number of matching students |
| students | object | Keyed by student PK — contains name, DOB, grade, stateId, enrollment info |
| schools | object | Keyed by school PK — name, LEA, address |
| districts | object | Keyed by district PK — name, LEA |
| avatars | object | Keyed by user PK — avatar URL |
Example Response
{
"actionOk": true,
"error": [],
"total": 3,
"students": {
"12345": {
"firstName": "John",
"lastName": "Smith",
"stateId": "1234567890",
"grade": "10",
"dob": "2010-05-15",
"schoolPk": 987,
"districtPk": 45,
"enrollmentStatus": "active"
}
},
"schools": {
"987": { "name": "DeWitt High School", "lea": "1503017" }
},
"districts": {
"45": { "name": "DeWitt School District", "lea": "1503000" }
},
"avatars": {
"67890": "default-avatar.gif"
}
} Notes
- You can only search within districts/schools authorized in your PJWT token
- Requests for unauthorized districts return a
no-districtleaerror - Responses larger than 20MB are uploaded to S3 and a signed URL is returned (302 redirect)
- The
keywordsparameter searches across name, state ID, and other indexed fields