Skip to main content
POST
cURL
Step 1 of 2 in Analyze a classroom recording. This call starts a background job and returns the analysis id. Save it: it is the only way to read the result.

Rules

  • Send teacher_id, board_id, grade_id, subject_id, rubric_id, date, and link. institution_id is optional.
  • teacher_id and institution_id are your own identifiers, and must be 50 characters or fewer. The API stores them and does not check them.
  • board_id, grade_id, and subject_id must be IDs that exist. Get them from List boards, List grades, and List subjects.
  • rubric_id takes either the rubric’s UUID from List rubrics or its integer ID. The rubric’s criteria become the categories in the result.
  • date is the day of the lesson, as YYYY-MM-DD. Today is allowed, a future date is rejected.
  • link must start with https://, its path must end with .mp3 in lower case, and the file must be publicly reachable.
Send the token without the Bearer prefix on ClassTrack. This service reads the whole Authorization header as the token, so Authorization: YOUR_ACCESS_TOKEN works and Authorization: Bearer YOUR_ACCESS_TOKEN returns 401 Unauthorized User. Every other CrazyGoldFish API expects the prefix.
The API checks the link before it accepts the request:
A pre-signed storage URL with credentials in the query string is rejected, because the query string comes after .mp3. Host the file where the path itself ends in .mp3, and keep it reachable until the analysis finishes.
This call returns 200, not 201, and the message field in the response is called message, not msg.

Next step

Get a classroom analysis

Poll the analysis ID, or wait for the class_track_analysis webhook.

Authorizations

Authorization
string
header
required

Access token from Get an access token. ClassTrack reads the Authorization header as the token itself, so send the token with no Bearer prefix on these two endpoints.

Body

application/json
teacher_id
string
required

Your own identifier for the teacher being observed. Stored as sent, and not checked against anything.

Maximum string length: 50
board_id
string<uuid>
required

The education board. Must exist. Get it from List boards.

grade_id
string<uuid>
required

The grade. Must exist. Get it from List grades.

subject_id
string<uuid>
required

The subject. Must exist. Get it from List subjects.

rubric_id
required

The rubric to score the lesson against. Send its UUID from List rubrics, or its integer ID. Either way the rubric must exist, and its criteria become the categories in rubric_evaluation.

date
string<date>
required

The date of the lesson, as YYYY-MM-DD. Today is allowed. A future date is rejected.

A link to the recording. It must start with https://, its path must end with .mp3 in lower case, and it must be publicly reachable. Links to localhost or a private IP range are rejected.

institution_id
string | null

Optional. Your own identifier for the school.

Maximum string length: 50

Response

The job is queued. Save id: it is the only way to read the result. Note that this call returns 200, not 201, and that the message field is called message, not msg.

detail
object[]