Transaction Filters and Vocabulary

Introduction

GET /lookup/transactions is the discovery endpoint for the transactions resource. It returns the exact set of filter fields you can send to POST /transactions and POST /transactions/aggregate, the type and operators each field accepts, the enum vocabulary for category fields (deal types, deal subtypes, regions), the valid sort keys, and the aggregate methodology constants (metrics, time buckets, small-sample suppression, outlier rule). Call it once to drive a UI's filter controls or to confirm valid values before building a query - it returns no transaction data itself.

Set up

Endpoint

GET https://multiples.vc/api/private/v1/lookup/transactions

Request - no path or query parameters. This is a static vocabulary document; a single authenticated call returns everything.

GET https://multiples.vc/api/private/v1/lookup/transactions

There is nothing to filter or paginate. The shape of the response is fixed; only the enum values lists grow over time as new categories appear in the dataset.

How to read the result - each entry in filters tells you how to use that field on POST /transactions:

element

meaning

field

The key to put in the filters object of your transactions request (date_from / date_to and the rest are all keys inside that same filters object).

type

Value type the field expects (see types below).

operators

How the value is matched. in = match any of the listed values; overlaps = array shares at least one value; gte / lte = lower / upper bound; eq = exact match.

values

Present only on enum-backed fields. The full allowed vocabulary - send values exactly as shown.

description

Present only on the few fields that need a usage note (units, change-feed semantics).

Field type values you will see here: array_uuid, array_string, number, date, datetime, boolean.

Response - the live document (this endpoint returns no null/empty keys to drop):

{
  "data": {
    "filters": [
      {
        "field": "id",
        "type": "array_uuid",
        "operators": [
          "in"
        ]
      },
      {
        "field": "target_id",
        "type": "array_uuid",
        "operators": [
          "in"
        ]
      },
      {
        "field": "investor_id",
        "type": "array_uuid",
        "operators": [
          "in"
        ],
        "description": "Companies that participated as a lead investor or buyer."
      },
      {
        "field": "deal_type",
        "type": "array_string",
        "operators": [
          "in"
        ],
        "values": [
          "Early",
          "Growth",
          "M&A",
          "Public listing",
          "Secondary",
          "Venture"
        ]
      },
      {
        "field": "deal_subtype",
        "type": "array_string",
        "operators": [
          "in"
        ],
        "values": [
          "Angel",
          "ICO",
          "PE buyout",
          "Pre-seed",
          "Secondary - private",
          "Secondary - public",
          "Seed",
          "Series A",
          "Series B",
          "Series C",
          "Series D",
          "Series E",
          "Series F",
          "Series G",
          "Series H",
          "Series I",
          "Series J",
          "Strategic M&A",
          "Strategic investment",
          "Undisclosed stage"
        ]
      },
      {
        "field": "date_from",
        "type": "date",
        "operators": [
          "gte"
        ]
      },
      {
        "field": "date_to",
        "type": "date",
        "operators": [
          "lte"
        ]
      },
      {
        "field": "valuation_min",
        "type": "number",
        "operators": [
          "gte"
        ],
        "description": "Millions USD."
      },
      {
        "field": "valuation_max",
        "type": "number",
        "operators": [
          "lte"
        ]
      },
      {
        "field": "raised_min",
        "type": "number",
        "operators": [
          "gte"
        ]
      },
      {
        "field": "raised_max",
        "type": "number",
        "operators": [
          "lte"
        ]
      },
      {
        "field": "revenue_min",
        "type": "number",
        "operators": [
          "gte"
        ]
      },
      {
        "field": "revenue_max",
        "type": "number",
        "operators": [
          "lte"
        ]
      },
      {
        "field": "ebitda_min",
        "type": "number",
        "operators": [
          "gte"
        ]
      },
      {
        "field": "ebitda_max",
        "type": "number",
        "operators": [
          "lte"
        ]
      },
      {
        "field": "ev_revenue_min",
        "type": "number",
        "operators": [
          "gte"
        ]
      },
      {
        "field": "ev_revenue_max",
        "type": "number",
        "operators": [
          "lte"
        ]
      },
      {
        "field": "ev_ebitda_min",
        "type": "number",
        "operators": [
          "gte"
        ]
      },
      {
        "field": "ev_ebitda_max",
        "type": "number",
        "operators": [
          "lte"
        ]
      },
      {
        "field": "target_country",
        "type": "array_string",
        "operators": [
          "in"
        ]
      },
      {
        "field": "target_region",
        "type": "array_string",
        "operators": [
          "in"
        ],
        "values": [
          "Africa",
          "Central Asia",
          "East Asia",
          "Eastern Europe",
          "Latin America",
          "Middle East",
          "North America",
          "Northern Europe",
          "Oceania",
          "South Asia",
          "South-East Asia",
          "Southern Europe",
          "Western Europe"
        ]
      },
      {
        "field": "target_verticals",
        "type": "array_string",
        "operators": [
          "overlaps"
        ]
      },
      {
        "field": "target_themes",
        "type": "array_string",
        "operators": [
          "overlaps"
        ]
      },
      {
        "field": "target_client_focus",
        "type": "array_string",
        "operators": [
          "overlaps"
        ]
      },
      {
        "field": "target_revenue_model",
        "type": "array_string",
        "operators": [
          "overlaps"
        ]
      },
      {
        "field": "target_company_type",
        "type": "array_string",
        "operators": [
          "overlaps"
        ]
      },
      {
        "field": "updated_at",
        "type": "datetime",
        "operators": [
          "gte"
        ],
        "description": "Change-feed checkpoint."
      },
      {
        "field": "include_deleted",
        "type": "boolean",
        "operators": [
          "eq"
        ],
        "description": "Default false. Set true on change-feed pulls."
      }
    ],
    "sort_fields": [
      "deal_date",
      "deal_valuation",
      "deal_raised",
      "updated_at"
    ],
    "sub_resources": [],
    "aggregate": {
      "metrics": [
        "ev_revenue",
        "ev_ebitda",
        "valuation",
        "raised",
        "revenue",
        "ebitda"
      ],
      "time_buckets": [
        "month",
        "quarter",
        "year",
        "none"
      ],
      "methodology": {
        "small_n_threshold": 3,
        "outlier_rule": "iqr_1.5",
        "default_date_range_years": 5,
        "empty_buckets_returned": true
      }
    }
  }
}

Fields - every field in the response.

Envelope

field

type

description

filters

array

The filterable fields accepted by POST /transactions. Each item documents one field.

sort_fields

string[]

Valid values for the sort key on POST /transactions.

sub_resources

string[]

Related sub-collections for this resource. Empty for transactions - there are no transaction sub-resources.

aggregate

object

Methodology vocabulary for POST /transactions/aggregate.

filters[] item

field

type

description

field

string

Filter key to send on POST /transactions.

type

string

Value type: one of array_uuid, array_string, number, date, datetime, boolean.

operators

string[]

Match semantics: in, overlaps, gte, lte, or eq.

values

string[]

Allowed enum vocabulary. Present only on enum-backed fields (deal_type, deal_subtype, target_region). Send values exactly as listed.

description

string

Usage note. Present only on the four fields that need clarification (investor_id, valuation_min, updated_at, include_deleted).

Filter field reference

field

type

description

id

array_uuid

Match specific deal IDs.

target_id

array_uuid

Deals where one of these companies was the target / acquired / funded company.

investor_id

array_uuid

Companies that participated as a lead investor or buyer.

deal_type

array_string

High-level deal classification. Enum-backed.

deal_subtype

array_string

Granular stage / structure. Enum-backed.

date_from / date_to

date

Deal-date lower / upper bound (YYYY-MM-DD).

valuation_min / valuation_max

number

Deal post-money / enterprise valuation bound. Millions USD.

raised_min / raised_max

number

Amount raised in the round. Millions USD.

revenue_min / revenue_max

number

Target revenue at the deal. Millions USD.

ebitda_min / ebitda_max

number

Target EBITDA at the deal. Millions USD.

ev_revenue_min / ev_revenue_max

number

EV / Revenue multiple bound.

ev_ebitda_min / ev_ebitda_max

number

EV / EBITDA multiple bound.

target_country

array_string

Target HQ country (ISO-3 codes).

target_region

array_string

Target macro-region. Enum-backed.

target_verticals

array_string

Target verticals - overlaps match.

target_themes

array_string

Target themes - overlaps match.

target_client_focus

array_string

Target client focus (e.g. B2B, B2C) - overlaps match.

target_revenue_model

array_string

Target revenue model - overlaps match.

target_company_type

array_string

Target company type - overlaps match.

updated_at

datetime

Change-feed checkpoint: return deals updated at or after this timestamp.

include_deleted

boolean

Default false. Set true on change-feed pulls to surface soft-deleted deals.

aggregate

field

type

description

metrics

string[]

Valid metric values for POST /transactions/aggregate: ev_revenue, ev_ebitda, valuation, raised, revenue, ebitda.

time_buckets

string[]

Valid time_bucket values: month, quarter, year, or none (single overall bucket).

methodology

object

Constants applied when computing aggregates.

methodology.small_n_threshold

integer

Minimum sample size per bucket. Buckets with fewer deals are suppressed (median/q1/q3 returned as null with warning: "insufficient_sample").

methodology.outlier_rule

string

Outlier-trimming rule applied before computing medians (iqr_1.5 = values beyond 1.5×IQR are dropped).

methodology.default_date_range_years

integer

Date window applied when a request omits date_from/date_to (trailing N years).

methodology.empty_buckets_returned

boolean

When true, time buckets with zero deals are still returned (with n: 0) so the series has no gaps.