ALG Residual API
Vehicle tree.
Walk the makes, models, and trims available to assemble the values Residual by YMMT expects.
Input
Pass parameters in the request query string. The tree always covers a single model year: omit modelYear and the newest model year the edition publishes is used, which runs ahead of the calendar year. Supply make, or make and model, to narrow the tree to one branch.
| URL Parameter | Default | Required | Description |
|---|---|---|---|
dataSetId |
2 |
✓ | Required for Canada and must be set to data set 2. |
effectiveDate | 2026-11-01 | Effective date is optional | The ALG edition to list vehicles from. Effective dates lists the editions available to you. |
modelYear | Newest published | Model year is optional | The model year to list. Defaults to the newest model year the edition publishes, which is typically the next calendar year. Effective dates lists the model years each edition publishes. |
make | — | Make is optional | Limits the tree to a single make. |
model | — | Model is optional | Limits the tree to a single model. |
Examples
curl -X POST 'https://api.alg.com/product/tree?modelYear=2026&dataSetId=2' \
-H 'Authorization: Bearer YOUR_API_KEY'
curl -X POST 'https://api.alg.com/product/tree?modelYear=2026&make=ACURA&dataSetId=2' \
-H 'Authorization: Bearer YOUR_API_KEY'
curl -X POST 'https://api.alg.com/product/tree?modelYear=2026&make=ACURA&model=ADX%20AWD&dataSetId=2' \
-H 'Authorization: Bearer YOUR_API_KEY'
Output
Every level is an object keyed by name, so a caller can look a vehicle up directly rather than scanning a list. Keys are ordered alphabetically. Each trim maps to an empty object, reserved for per-trim metadata later. A trim is the style name, which is the value to pass as trim to Residual by YMMT.
| Property | Type | Description |
|---|---|---|
modelYear | Integer | The model year that was listed, whether supplied or resolved to the newest published. |
dataSetId | Integer | The data set the vehicles came from. |
effectiveDate | Date | The ALG edition that was applied. Returns the resolved most-recent date when omitted. |
truncated | Boolean | true when the model year holds more styles than one response returns. Narrow the request with make to see the rest. |
makes | Object | Keyed by make name. Pass a key as make to Residual by YMMT. |
makes[make].models | Object | Keyed by model name. Pass a key as model to Residual by YMMT. |
makes[make].models[model].trims | Object | Keyed by trim name. Pass a key as trim to Residual by YMMT. |
makes[make].models[model].trims[trim] | Object | Empty today, reserved for per-trim metadata. |
Examples
Trimmed for length -- 2026 returns 41 makes. The nesting is the same at every level.
curl -X POST 'https://api.alg.com/product/tree?modelYear=2026&dataSetId=2' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"modelYear": 2026,
"dataSetId": 2,
"effectiveDate": "2026-11-01",
"truncated": false,
"makes": {
"ACURA": {
"models": {
"ADX 2WD": {
"trims": {
"4dr Wgn": {},
"4dr Wgn A-Spec": {},
"4dr Wgn A-Spec Advance": {}
}
},
"ADX AWD": {
"trims": {
"4dr Wgn": {},
"4dr Wgn A-Spec": {},
"4dr Wgn A-Spec Advance": {}
}
}
// ... 4 more ACURA models
}
},
"ALFA ROMEO": {
"models": {
"GIULIA": {
"trims": {
"4dr Sdn": {},
"4dr Sdn AWD": {}
}
},
"STELVIO AWD": {
"trims": {
"4dr Wgn": {}
}
}
}
}
// ... 39 more makes
}
}
Authentication
Every request must be authenticated with an API key issued to you by ALG, sent as a bearer token.
| Header | Value | Description |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | An API key issued to you by ALG. Tied to your company. Keep it server-side. |
Examples
curl -X POST 'https://api.alg.com/product/tree?modelYear=2026&dataSetId=2' \
-H 'Authorization: Bearer YOUR_API_KEY'
curl -X POST 'https://api.alg.com/product/tree?modelYear=2026&dataSetId=2'
{
"errors": [
{
"status": 401,
"code": null,
"message": "Please provide a Bearer token in the Authorization header"
}
]
}