How To Retrieve Test Results
Pulling student test results is the primary way most Apps will interact with NWEA. The test-results/v1/growth API will help you to directly access this data. An API specification can be found here: https://nwea-icp-api.docs.stoplight.io/bulk-test-results
The test results you receive back from this endpoint depend on two things. One, the school must have students rostered in the current term. Two, you must have a data sharing agreement with the school.
These test results are filtered by proprietary NWEA business logic. We return the most relevant test result for each student taken in the last year. You will at most receive one test result per subject, per student.
With our recommended approach retrieving test results can be made in as few as two api calls.
All GET endpoints require the request to have the following header parameters:
- Content-Type (This would be 'application/json')
- apikey (The unique Consumer Key for the App)
- Authorization (The OAuth2 bearer access token obtained from /auth/v1/token)
Finding Schools
The prefered method is to call the /schools endpoint to get back all schools you have access to. https://nwea-icp-api.docs.stoplight.io/schools/schools/get-schools
Assuming the App has a datasharing agreement with at least one organization calling the following url will return a list of schools:
https://api.nwea.org/organizations/v1/schools
Example cURL command and response:
curl --request GET \ --url https://api.nwea.org/organizations/v1/schools \ --header 'apikey: xNM70DRInasXls8lc8vWViHE6bCYyAAw' \ --header 'authorization: Bearer r9oW1trvk6ASqzb2gbkuZobyngOd' \ --header 'content-type: application/json'
HTTP/1.1 200 OK
- Connection:
- keep-alive
- Content-Length:
- 162718
- Content-Type:
- application/json; charset=utf-8
- Date:
- Tue, 25 Jul 2017 23:18:11 GMT
- ETag:
- W/"27b9e-/KmfKKc68HNggNYYhOiPWLnWB3A"
- Server:
- Apigee Router
- X-Powered-By:
- Express
[ { "schoolBid": "a897459f-72b2-41b5-8bb6-43bacc309ac1", "name": "Mt. Bachelor Middle", "districtBid": "977c9f9f-c378-4ae8-b0ce-4516deb831e5" }, { "schoolBid": "a98d4bd5-4446-42e2-9125-61b06c5f7ad2", "name": "Mt. Hood High", "districtBid": "977c9f9f-c378-4ae8-b0ce-4516deb831e5" },... ]
Pulling Test Results
An api specification for our bulk-test-result endpoint can be found here: https://nwea-icp-api.docs.stoplight.io/bulk-test-results
For each school returned by the /schools endpoint you can call our bulk test result api, including the schoolBid
as a query parameter.
https://api.nwea.org/test-results/v1/growth?school-bid=a897459f-72b2-41b5-8bb6-43bacc309ac1
Example cURL command and response:
curl --request GET \ --url 'https://api.nwea.org/test-results/v1/growth?school-bid=a897459f-72b2-41b5-8bb6-43bacc309ac1&=' \ --header 'authorization: Bearer r9oW1trvk6ASqzb2gbkuZobyngOd'
HTTP/1.1 200 OK
- Connection:
- keep-alive
- Content-Length:
- 883
- Content-Type:
- application/json; charset=utf-8
- Date:
- Tue, 25 Jul 2017 23:26:17 GMT
- ETag:
- W/"373-C5H5hNgOtIfsbcha/jHlZcjvjDk"
- Server:
- Apigee Router
- X-Powered-By:
- Express
{ "testResults": [ { "testResultBid": "45edd0d8-c567-11ea-b787-00505693f64a", "studentBid": "bd1f4465-1bcf-4086-aea4-964482e2f039", "schoolBid": "a897459f-72b2-41b5-8bb6-43bacc309ac1", "termBid": "40ddb54b-1672-4510-9849-833bad94fab2", "subjectArea": "Language Usage", "grade": "7", "testName": "Demo Growth: Language 2-12", "testKey": "MAP2-3057", "testType": "S/G", "growthEventYn": true, "duration": 3600000, "status": "COMPLETED", "rit": 227, "standardError": 2.6, "ritScoreHigh": 230, "ritScoreLow": 224, "items": { "shown": 20, "correct": 10, "total": 20 }, "responseDisengagedPercentage": 0, "impactOfDisengagement": 0, "administrationStartDateTime": "2020-09-27T00:00:00Z", "administrationEndDateTime": "2020-09-27T17:00:00Z", "norms": [ { "percentile": 84, "reference": "2020", "type": "achievement" } ], "modifiedDateTime": "2020-08-15T01:35:07.339Z", "instructionalAreas": [ { "instructionalAreaBid": "106857", "instructionalAreaName": "Writing: Write, Revise Texts for Purpose and Audience", "score": 225, "standardError": 5.4, "scoreLow": 219.6, "scoreHigh": 230.4 }, { "instructionalAreaBid": "106859", "instructionalAreaName": "Language: Understand, Edit for Mechanics", "score": 228, "standardError": 4.4, "scoreLow": 223.6, "scoreHigh": 232.4 }, { "instructionalAreaBid": "106858", "instructionalAreaName": "Language: Understand, Edit for Grammar, Usage", "score": 233, "standardError": 4.1, "scoreLow": 228.9, "scoreHigh": 237.1 } ] },... "pagination": { "hasNextPage": true, "nextPage": "45f04cc8-c567-11ea-b787-00505693f64a" } ]
Please note that this api uses pagination with page sizes of 1000. Fetching a subsequent page is done by including the nextPage
from the api response in your api call. The final page's hasNextPage
field will be set to false.
https://api.nwea.org/test-results/v1/growth?next-page=45f04cc8-c567-11ea-b787-00505693f64a&school-bid=a897459f-72b2-41b5-8bb6-43bacc309ac1
Example Curl command:
curl --request GET \ --url 'https://api.nwea.org/test-results/v1/growth?next-page=45f04cc8-c567-11ea-b787-00505693f64a&school-bid=a897459f-72b2-41b5-8bb6-43bacc309ac1&=' \ --header 'authorization: Bearer lbycxdl8ETpARcXKbEx1NP9BZB6f'
HTTP/1.1 200 OK
- Connection:
- keep-alive
- Content-Length:
- 883
- Content-Type:
- application/json; charset=utf-8
- Date:
- Tue, 25 Jul 2017 23:26:17 GMT
- ETag:
- W/"373-C5H5hNgOtIfsbcha/jHlZcjvjDk"
- Server:
- Apigee Router
{ "testResults": [ { "testResultBid": "45f04cc8-c567-11ea-b787-00505693f64a", "studentBid": "8a6d089e-1c44-4bff-82b4-f8c4f27dd847", "schoolBid": "a897459f-72b2-41b5-8bb6-43bacc309ac1", "termBid": "40ddb54b-1672-4510-9849-833bad94fab2", "subjectArea": "Language Usage", "grade": "7", "testName": "Demo Growth: Language 2-12", "testKey": "MAP2-3057", "testType": "S/G", "growthEventYn": true, "duration": 3600000, "status": "COMPLETED", "rit": 214, "standardError": 4, "ritScoreHigh": 218, "ritScoreLow": 210, "items": { "shown": 20, "correct": 10, "total": 20 }, "responseDisengagedPercentage": 0, "impactOfDisengagement": 0, "administrationStartDateTime": "2020-09-24T00:00:00Z", "administrationEndDateTime": "2020-09-24T17:00:00Z", "norms": [ { "percentile": 54, "reference": "2020", "type": "achievement" } ], "modifiedDateTime": "2020-08-15T01:41:48.745Z", "instructionalAreas": [ { "instructionalAreaBid": "106857", "instructionalAreaName": "Writing: Write, Revise Texts for Purpose and Audience", "score": 216, "standardError": 4.8, "scoreLow": 211.2, "scoreHigh": 220.8 }, { "instructionalAreaBid": "106859", "instructionalAreaName": "Language: Understand, Edit for Mechanics", "score": 222, "standardError": 5.3, "scoreLow": 216.7, "scoreHigh": 227.3 }, { "instructionalAreaBid": "106858", "instructionalAreaName": "Language: Understand, Edit for Grammar, Usage", "score": 220, "standardError": 5, "scoreLow": 215, "scoreHigh": 225 } ] },... ] "pagination": { "hasNextPage": false, "nextPage": "" } }