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

ParameterBusiness Rule / RegexDescription
limitnumber, 1-100Maximum number of students to return (default: 25)
districtleastringDistrict LEA code to search within (e.g., "1503000"). Required if no schoolleas provided.
schoolleasstring[]Array of school LEA codes to filter by (e.g., ["1503017"])
gradesstring[]Array of grade levels to filter by (e.g., ["09", "10", "11", "12"])
keywordsstringSearch 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

FieldTypeDescription
actionOkbooleantrue if the request succeeded
errorstring[]Array of error codes (empty on success)
totalnumberTotal number of matching students
studentsobjectKeyed by student PK — contains name, DOB, grade, stateId, enrollment info
schoolsobjectKeyed by school PK — name, LEA, address
districtsobjectKeyed by district PK — name, LEA
avatarsobjectKeyed 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-districtlea error
  • Responses larger than 20MB are uploaded to S3 and a signed URL is returned (302 redirect)
  • The keywords parameter searches across name, state ID, and other indexed fields