/1/assessment - GET
Overview
This api returns all the assessments for a given learner. We pass the learnerid and userid in headers and it returns the assessments data for that learner which contains different things like scores,grids,iep etc
Headers
| Key | Value | Example |
|---|---|---|
| User-Agent | <company identifier> | The exact value here is not important, but it should include something to identify your company |
| Accept | application/json | |
| Authorization | Bearer <your token> | Bearer ***************** |
| X-LearnerId (Required) | 123 | The learner Id of user for which you want to fetch the assessments data for |
| X-UserId (Optional) | 123 | The id of user to which this learner belongs, if left empty it will authenticate the learner against the Bearer Token. |
Params
| Key | Value | Description |
|---|---|---|
| scores (optional) | true | fetch assessment scores in the API response |
| grids (optional) | true | fetch grids in the API response |
| iep (optional) | true | fetch IEP in the API response |
| since (optional) | 2026-01-02T00:00:00Z | Only return assessments that have been modified after this date. Accepts ISO 8601 format (e.g. 2026-01-01T00:00:00Z) or just a date (e.g. 2026-01-01). When not provided, all assessments are returned as usual. |
| latest (optional) | true | Only return the most recent assessment for the learner. Can be combined with other params like scores, grids, iep, and since. |
Code Examples
Fetch all assessments with scores, grids, and IEP
Heavy JSON return This is only recommended if you need the PDF of the IEP - we recommend customers use the iframe to fetch the PDF itself. and omit the IEP fetching from this call.
curl --location 'https://api-sandbox.vbmappapp.com/1/assessment?scores=true&grids=true&iep=true' \
--header 'X-LearnerId: 19353' \
--header 'X-UserId: 320' \
--header 'Authorization: Bearer ***********'Fetch only assessments modified since a specific date
curl --location 'https://api-sandbox.vbmappapp.com/1/assessment?scores=true&since=2026-01-10T00:00:00Z' \
--header 'X-LearnerId: 19353' \
--header 'X-UserId: 320' \
--header 'Authorization: Bearer ***********'You can also pass just a date without the time:
curl --location 'https://api-sandbox.vbmappapp.com/1/assessment?scores=true&since=2026-01-10' \
--header 'X-LearnerId: 19353' \
--header 'X-UserId: 320' \
--header 'Authorization: Bearer ***********'The since filter checks the most recent modification timestamp across the assessment itself, its scores, knowns, and notes. Only assessments with activity after the provided date will be returned.
Fetch only the latest assessment
curl --location 'https://api-sandbox.vbmappapp.com/1/assessment?scores=true&latest=true' \
--header 'X-LearnerId: 19353' \
--header 'X-UserId: 320' \
--header 'Authorization: Bearer ***********'Combine latest with since
Returns the most recent assessment, but only if it has been modified after the given date. If the latest assessment has not been modified since that date, the response will contain an empty assessments array.
curl --location 'https://api-sandbox.vbmappapp.com/1/assessment?scores=true&latest=true&since=2026-01-10' \
--header 'X-LearnerId: 19353' \
--header 'X-UserId: 320' \
--header 'Authorization: Bearer ***********'Example Response
{
"vbmapp": {
"assessments": [
{
"id": 1264,
"assessor": "user2 rese",
"startDate": "2025-04-24T01:16:09Z",
"color": "#537fcd",
"scores": [
{
"score": 1,
"timestamp": "2025-06-02T06:20:44Z",
"area": "mand",
"group": "milestones",
"questionNum": 1
},
{
"score": 1,
"timestamp": "2025-06-02T06:20:47Z",
"area": "transitions",
"questionNum": 1
},
{
"score": 0.5,
"timestamp": "2025-06-02T06:20:47Z",
"area": "mand",
"group": "milestones",
"questionNum": 2
},
{
"score": 2,
"timestamp": "2025-06-02T06:49:46Z",
"area": "barriers",
"questionNum": 1
},
{
"score": 5,
"timestamp": "2025-06-02T08:45:59Z",
"area": "transitions",
"questionNum": 2
},
{
"score": -1,
"timestamp": "2025-06-02T06:49:46Z",
"area": "transitions",
"questionNum": 3
},
{
"score": 3,
"timestamp": "2025-06-02T06:49:48Z",
"area": "barriers",
"questionNum": 3
},
{
"score": 1,
"timestamp": "2025-06-02T08:45:59Z",
"area": "barriers",
"questionNum": 5
}
]
},
{
"id": 1265,
"assessor": "user2 rese",
"startDate": "2025-06-02T04:54:30Z",
"color": "#f7d41c",
"scores": [
{
"score": 1,
"timestamp": "2025-06-02T08:54:35Z",
"area": "mand",
"group": "milestones",
"questionNum": 1
},
{
"score": 1,
"timestamp": "2025-06-02T08:54:35Z",
"area": "transitions",
"questionNum": 1
},
{
"score": 1,
"timestamp": "2025-06-02T08:54:35Z",
"area": "mand",
"group": "milestones",
"questionNum": 2
},
{
"score": 1,
"timestamp": "2025-06-02T08:54:35Z",
"area": "mand",
"group": "milestones",
"questionNum": 3
},
{
"score": 1,
"timestamp": "2025-06-02T08:54:35Z",
"area": "mand",
"group": "milestones",
"questionNum": 4
},
{
"score": 1,
"timestamp": "2025-06-02T08:54:35Z",
"area": "mand",
"group": "milestones",
"questionNum": 5
}
]
}
]
}
}Error Response (invalid since format)
{
"errors": "since must be a valid timestamp (e.g., 2026-01-10T00:00:00Z or 2026-01-10)"
}Updated 7 months ago