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 ParameterDefaultRequiredDescription
dataSetId 1 Data set ID is optional Selects the US data set. May be omitted to use data set 1.
effectiveDate2026-11-01Effective date is optionalThe ALG edition to list vehicles from. Effective dates lists the editions available to you.
modelYearNewest publishedModel year is optionalThe 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 optionalLimits the tree to a single make.
model—Model is optionalLimits the tree to a single model.

Examples

curl -X POST 'https://api.alg.com/product/tree?modelYear=2026' \
  -H 'Authorization: Bearer YOUR_API_KEY'
curl -X POST 'https://api.alg.com/product/tree?modelYear=2026&make=ACURA' \
  -H 'Authorization: Bearer YOUR_API_KEY'
curl -X POST 'https://api.alg.com/product/tree?modelYear=2026&make=ACURA&model=ADX%20AWD' \
  -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.

PropertyTypeDescription
modelYearIntegerThe model year that was listed, whether supplied or resolved to the newest published.
dataSetIdIntegerThe data set the vehicles came from.
effectiveDateDateThe ALG edition that was applied. Returns the resolved most-recent date when omitted.
truncatedBooleantrue when the model year holds more styles than one response returns. Narrow the request with make to see the rest.
makesObjectKeyed by make name. Pass a key as make to Residual by YMMT.
makes[make].modelsObjectKeyed by model name. Pass a key as model to Residual by YMMT.
makes[make].models[model].trimsObjectKeyed by trim name. Pass a key as trim to Residual by YMMT.
makes[make].models[model].trims[trim]ObjectEmpty 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' \
  -H 'Authorization: Bearer YOUR_API_KEY'
{
  "modelYear": 2026,
  "dataSetId": 1,
  "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
AuthorizationBearer YOUR_API_KEYAn 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' \
  -H 'Authorization: Bearer YOUR_API_KEY'

curl -X POST 'https://api.alg.com/product/tree?modelYear=2026'
{
  "errors": [
    {
      "status": 401,
      "code": null,
      "message": "Please provide a Bearer token in the Authorization header"
    }
  ]
}