MASSARIdocsRequest access

Screener metrics

GET/v1/screener/metricsPromised whole

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.

Book a meeting