Screener metrics
Every metric the screener can filter or sort on.
Response contract
Every field in the response is part of the contract.
Response fields
The top level keys a live response actually returned, read off the API rather than written down here.
categoriesoperatorsmetricsdefault_columns
How this was verified
This endpoint takes no subject to vary, so one response is its whole population. Every field it returned, at every level, was compared with the contract above. Last checked August 18, 2026.
Request
curl "https://api.massari.ai/v1/screener/metrics" \
-H "Authorization: Bearer $MASSARI_TOKEN"Example response
{
"categories": [
{
"id": "identifiers",
"label": "Identifiers",
"order": 0
},
{
"id": "industry",
"label": "Industry Classification",
"order": 1
}
],
"operators": {
"eq": {
"id": "eq",
"label": "is",
"arity": 1
},
"neq": {
"id": "neq",
"label": "is not",
"arity": 1
},
"gt": {
"id": "gt",
"label": ">",
"arity": 1
},
"gte": {
"id": "gte",
"label": "≥",
"arity": 1
},
"lt": {
"id": "lt",
"label": "<",
"arity": 1
},
"lte": {
"id": "lte",
"label": "≤",
"arity": 1
},
"between": {
"id": "between",
"label": "between",
"arity": 2
},
"is_one_of": {
"id": "is_one_of",
"label": "is one of",
"arity": "n"
},
"is_not_in": {
"id": "is_not_in",
"label": "is not in",
"arity": "n"
},
"contains": {
"id": "contains",
"label": "contains",
"arity": 1
},
"starts_with": {
"id": "starts_with",
"label": "starts with",
"arity": 1
},
"is_true": {
"id": "is_true",
"label": "is true",
"arity": 0
},
"is_false": {
"id": "is_false",
"label": "is false",
"arity": 0
},
"has_any_of": {
"id": "has_any_of",
"label": "has any of",
"arity": "n"
},
"has_all_of": {
"id": "has_all_of",
"label": "has all of",
"arity": "n"
},
"has_none_of": {
"id": "has_none_of",
"label": "has none of",
"arity": "n"
},
"matches_any": {
"id": "matches_any",
"label": "matches any of",
"arity": "n"
},
"matches_all": {
"id": "matches_all",
"label": "matches all of",
"arity": "n"
},
"matches_none": {
"id": "matches_none",
"label": "matches none of",
"arity": "n"
}
},
"metrics": [
{
"id": "symbol",
"label": "Symbol",
"units": null,
"category": "identifiers",
"type": "string",
"operators": [
"is_one_of",
"is_not_in"
],
"default_displayed": true,
"default_sort_dir": null,
"format": "text",
"help": "Ticker symbol as listed (no exchange suffix). Paste a comma-separated list for is_one_of.",
"window": null,
"definition": null,
"stocks_only": false,
"etfs_only": false,
"enum_values": null,
"enum_kind": null,
"presets": null
},
{
"id": "name",
"label": "Name",
"units": null,
"category": "identifiers",
"type": "string",
"operators": [
"contains",
"starts_with"
],
"default_displayed": true,
"default_sort_dir": null,
"format": "text",
"help": null,
"window": null,
"definition": null,
"stocks_only": false,
"etfs_only": false,
"enum_values": null,
"enum_kind": null,
"presets": null
}
],
"default_columns": [
"symbol",
"name"
]
}A real response from the live API, captured August 18, 2026. This one is CUT: long arrays, wide objects and long strings were trimmed to keep it readable, so treat it as a sample of the shape rather than all of it. Either way it is valid JSON.