curl --request GET \
--url https://api.alpha-1edtech.ai/goals/{studentId}/subjects \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.alpha-1edtech.ai/goals/{studentId}/subjects"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.alpha-1edtech.ai/goals/{studentId}/subjects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.alpha-1edtech.ai/goals/{studentId}/subjects",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.alpha-1edtech.ai/goals/{studentId}/subjects"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.alpha-1edtech.ai/goals/{studentId}/subjects")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.alpha-1edtech.ai/goals/{studentId}/subjects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"studentId": "<string>",
"dailyTargetXPTotal": 121,
"subjects": [
{
"subject": "<string>",
"baseline": {
"goalId": "<string>",
"dailyTargetXP": 123,
"defaultDailyTargetXP": 123,
"startDate": "<string>",
"updatedAt": "<string>",
"manualOverrideExpiresAt": "2023-11-07T05:31:56Z"
},
"goal": {
"id": "<string>",
"type": "grade_mastery",
"status": "active",
"startDate": "<string>",
"updatedAt": "<string>",
"objective": {
"type": "grade_mastery",
"value": "<string>"
},
"pacing": {
"mode": "target_date",
"endDate": "<string>",
"dailyTargetXP": 123
}
},
"execution": {
"stageId": "<string>",
"courseIds": [
"<string>"
]
},
"computed": {
"xp": {
"total": 123,
"earned": 123,
"remaining": 123,
"pctComplete": 123
},
"pace": {
"requiredDailyXP": 123,
"effectiveDailyXP": 123,
"schoolDaysRemaining": 123
},
"projection": {
"currentGrade": "<string>",
"daysToNextGrade": 123,
"gradeTimeline": [
{
"grade": "<string>",
"remainingXP": 123,
"daysToComplete": 123,
"projectedDate": "<string>",
"status": "completed",
"totalXP": 123,
"earnedXP": 123,
"courseIds": [
"<string>"
]
}
]
},
"resolution": {
"strategy": "percentile",
"resolvedTargetGrade": "<string>",
"targetRit": 123
},
"issue": {
"code": "starting_grade_missing",
"message": "<string>",
"service": "<string>",
"path": "<string>",
"status": 123
}
}
}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "invaliddata"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "unauthorisedrequest"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "forbidden"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "unknownobject"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "invaliddata"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "server_busy"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "internal_server_error"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "server_busy"
}
]
},
"imsx_error_details": [
{}
]
}List subject goal snapshots for a student
Primary K-8 goals read model. Returns one product-shaped row per subject with the managed baseline minimum, active learner-facing outcome goal, saved routed execution snapshot, and current computed pace/projection state.
curl --request GET \
--url https://api.alpha-1edtech.ai/goals/{studentId}/subjects \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.alpha-1edtech.ai/goals/{studentId}/subjects"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.alpha-1edtech.ai/goals/{studentId}/subjects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.alpha-1edtech.ai/goals/{studentId}/subjects",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.alpha-1edtech.ai/goals/{studentId}/subjects"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.alpha-1edtech.ai/goals/{studentId}/subjects")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.alpha-1edtech.ai/goals/{studentId}/subjects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"studentId": "<string>",
"dailyTargetXPTotal": 121,
"subjects": [
{
"subject": "<string>",
"baseline": {
"goalId": "<string>",
"dailyTargetXP": 123,
"defaultDailyTargetXP": 123,
"startDate": "<string>",
"updatedAt": "<string>",
"manualOverrideExpiresAt": "2023-11-07T05:31:56Z"
},
"goal": {
"id": "<string>",
"type": "grade_mastery",
"status": "active",
"startDate": "<string>",
"updatedAt": "<string>",
"objective": {
"type": "grade_mastery",
"value": "<string>"
},
"pacing": {
"mode": "target_date",
"endDate": "<string>",
"dailyTargetXP": 123
}
},
"execution": {
"stageId": "<string>",
"courseIds": [
"<string>"
]
},
"computed": {
"xp": {
"total": 123,
"earned": 123,
"remaining": 123,
"pctComplete": 123
},
"pace": {
"requiredDailyXP": 123,
"effectiveDailyXP": 123,
"schoolDaysRemaining": 123
},
"projection": {
"currentGrade": "<string>",
"daysToNextGrade": 123,
"gradeTimeline": [
{
"grade": "<string>",
"remainingXP": 123,
"daysToComplete": 123,
"projectedDate": "<string>",
"status": "completed",
"totalXP": 123,
"earnedXP": 123,
"courseIds": [
"<string>"
]
}
]
},
"resolution": {
"strategy": "percentile",
"resolvedTargetGrade": "<string>",
"targetRit": 123
},
"issue": {
"code": "starting_grade_missing",
"message": "<string>",
"service": "<string>",
"path": "<string>",
"status": 123
}
}
}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "invaliddata"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "unauthorisedrequest"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "forbidden"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "unknownobject"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "invaliddata"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "server_busy"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "internal_server_error"
}
]
},
"imsx_error_details": [
{}
]
}{
"imsx_codeMajor": "failure",
"imsx_severity": "error",
"imsx_description": "<string>",
"imsx_CodeMinor": {
"imsx_codeMinorField": [
{
"imsx_codeMinorFieldName": "TargetEndSystem",
"imsx_codeMinorFieldValue": "server_busy"
}
]
},
"imsx_error_details": [
{}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
Student sourcedId
Response
Subject goal snapshots returned
Student sourcedId
Student daily XP goal, calculated from canonical subject baseline.dailyTargetXP values with a minimum of 120 XP. This Goals aggregate does not apply organization metadata or enrollment filtering. The co-returned subjects array is raw (duplicate aliases are not removed; each baseline.dailyTargetXP is normalized so malformed or negative stored targets fall back to the subject default while intentional zeros are preserved), so summing its baseline.dailyTargetXP values may not equal this total.
x >= 120Show child attributes
Show child attributes