NAV
Alternatives
Partner API

Partner API

Last updated: 19 June 2026

This documentation covers the Alternatives Partner API (v3) — the customer-facing interface for programmatic access to Alternatives’ private-market data across Southeast Asia. It is a read-only REST API that returns JSON and is intended for external API subscribers. Access is subscription-gated — each endpoint is protected by entitlements that are enabled according to your subscription.

v3 replaces v2. If you are migrating from the legacy API at api.alternatives.pe/api/v2, see the Migration Guide for a full breakdown of what changed.

What the API Covers

Entity TypeWhat It RepresentsExample
Capital ReceiversCompanies and startups that have raised fundingShopBack
Capital AllocatorsInvestors (VC firms, family offices, PE funds) that deploy capitalWavemaker Group
FundsIndividual fund vehicles managed by a capital allocatorWavemaker Pacific 1, Bain Capital Asia III
PeopleFounders, directors, and other individuals linked to companiesShanru Lai (ShopBack co-founder)
InvestorsUnified cross-entity investor searchAny entity that has made an investment
Service ProvidersAuditors and professional-services firmsErnst & Young LLP
Legal EntitiesUnderlying registered companies — returned as a nested object on profile detail responsesAny registered business
Reference DataTaxonomies and lookup lists for filter fieldsCountries, stages, themes, industries

Base URL

https://api.altdmp.io/v3/partners/

All endpoints are relative to this base. For example, to list capital receivers:

curl https://api.altdmp.io/v3/partners/capital-receivers/ \
  -H "Authorization: Bearer YOUR_TOKEN"
import requests

BASE = "https://api.altdmp.io/v3/partners"
headers = {"Authorization": "Bearer YOUR_TOKEN"}

resp = requests.get(f"{BASE}/capital-receivers/", headers=headers)
print(resp.json())

Request Format

Most list endpoints support two calling styles:

On POST, the request body accepts only the filters object. Pagination and sorting (search, ordering, limit, offset) are always query parameters — sending them in the body returns 400 Bad Request.

Pagination

All list responses are paginated. Use limit and offset query parameters:

# Page 2 of results (20 per page)
curl "https://api.altdmp.io/v3/partners/capital-receivers/?limit=20&offset=20" \
  -H "Authorization: Bearer YOUR_TOKEN"
resp = requests.get(
    f"{BASE}/capital-receivers/",
    params={"limit": 20, "offset": 20},
    headers=headers,
)

Responses include count, next, and previous fields alongside results.

Cap Table Types

Every capital receiver has a captable_source.type field that tells you how its shareholding data was collected. Always check this field before interpreting cap table results — the response shape and available data differ between the two types.

TypeHow it worksWhat’s available
managedCap table is computed from individual transaction records on the platform. Each share issuance, transfer, and sale is tracked.Full share counts, investment amounts, deal-stage breakdowns. /investors/ endpoint available.
snapshotCap table is sourced from a periodic shareholder-register filing (e.g. an ACRA annual return). Data reflects a point-in-time view.Share counts and percentage held as of the snapshot date. Investment amounts not available. /investors/ returns HTTP 400.

Use the captable_is_managed filter on /capital-receivers/ to segment your queries:

# Companies with full transaction-level cap table data
curl -X POST https://api.altdmp.io/v3/partners/capital-receivers/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"op": "eq", "field": "captable_is_managed", "value": true}}'

The same captable_source.type field and response structure applies to /capital-allocators/{uuid}/captable/.

Common Use Cases

GoalHow
Company profile, funding history, cap tableGET /capital-receivers/{uuid}//deals//captable/
Current shareholders for a companyGET /capital-receivers/{uuid}/captable/
Total invested per investor with deal-stage breakdownGET /capital-receivers/{uuid}/investors/ (managed cap table only)
Find VC firms active in SEA at Seed stageGET /investors/?investor_type=capital_allocator&invested_in_stage=seed
Fund performance, LP list, size historyGET /funds/{uuid}/performance/ + /aum/ + /commitments/
Look up a founder or director by nameGET /people/?role_type_key=person_association_founder&search=Henry+Chan
Registration number lookupGET /capital-receivers/?search=<name> — registration numbers are in the legal_entity object on the detail response
Build filter dropdowns in a UIGET /reference-data/?type=enums

Authentication

Last updated: 29 June 2026

Every request to the Partner API must include a Bearer token in the Authorization header.

Obtaining a Token

Exchange your API key for a short-lived access token:

curl -X POST https://api.altdmp.io/v3/token/issue/ \
  -H "Content-Type: application/json" \
  -d '{"api_key": "YOUR_API_KEY"}'
import requests

resp = requests.post(
    "https://api.altdmp.io/v3/token/issue/",
    json={"api_key": "YOUR_API_KEY"},
)
token = resp.json()["access_token"]

Response:

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ij...",
  "token_duration": 1440,
  "expires_at": "2024-11-21T06:29:30.396717Z"
}

The token is valid for 24 hours (token_duration is in minutes).

Contact support@alternatives.pe to obtain your API key.

Using the Token

Include the token in the Authorization header on every request:

curl https://api.altdmp.io/v3/partners/capital-receivers/ \
  -H "Authorization: Bearer YOUR_TOKEN"
headers = {"Authorization": f"Bearer {token}"}
resp = requests.get(
    "https://api.altdmp.io/v3/partners/capital-receivers/",
    headers=headers,
)

Subscription and Access Control

Authentication alone is not sufficient. Each endpoint is also protected by entitlements that are enabled according to your subscription. Your organisation must hold the appropriate entitlements for the resources you need to access.

Entitlements are provisioned automatically when your subscription is activated. Different subscription tiers unlock access to different endpoints and data types. See Plans & Access for the full per-endpoint breakdown by plan. Contact support@alternatives.pe to review or upgrade your subscription.

A 403 Forbidden response means your organisation’s subscription does not include access to that endpoint. Contact support to adjust your subscription.

Rate Limits

The Partner API is rate limited to protect service quality for all clients. Requests are limited to 320 requests per rolling 1-minute window. The window is rolling rather than fixed: at any moment, the count is the number of requests made in the preceding 60 seconds, so capacity frees up continuously rather than resetting on a clock boundary.

When you exceed the limit, the API responds with 429 Too Many Requests and a Retry-After header indicating how many seconds to wait before retrying. The response body is a structured JSON error describing the limit that was hit.

To stay within the limit:

Error Responses

StatusMeaning
400 Bad RequestMalformed request — e.g. an unsupported ordering field, or a POST body containing keys other than filters (pass limit, offset, and ordering as query parameters)
401 UnauthorizedMissing or invalid Bearer token
403 ForbiddenToken is valid but your organisation’s subscription does not include access to that endpoint
429 Too Many RequestsRate limit exceeded — wait for the period given in the Retry-After header, then retry. See Rate Limits

Plans and Access

Last updated: 1 July 2026

Which Partner API endpoints you can call depends on your subscription plan. This page lists every endpoint and shows whether it is included with Atlas or Allocate.

Custom plans are not covered here. The tables below describe our two standard plans. If your organisation is on a plan we’ve tailored to your requirements, your endpoint access is defined by your agreement and may differ from what’s shown here. Contact support@alternatives.pe if you’re unsure which endpoints your subscription includes.

How Access Works

Two things must be true for a request to succeed:

  1. Partners API access. Programmatic access is a separate add-on to your subscription. When it’s enabled, your organisation can authenticate and call the API.
  2. Endpoint entitlement. Each endpoint is individually gated by your plan. If your plan doesn’t include an endpoint, calling it returns 403 Forbidden even with a valid token — see Authentication → Subscription and Access Control.

What Differs Between Atlas and Allocate

Most endpoints are available on both plans. The differences are:

AreaAtlasAllocate
Funds (all fund endpoints)
Capital Allocator → LP commitments
Capital Receivers → list / search

On Atlas, you can retrieve a capital receiver directly by UUID (and all of its sub-resources), but you cannot list or search the capital-receivers collection. On Allocate, the entire Funds resource and the capital-allocator LP commitments endpoint are not included.

Full Endpoint Matrix

✓ = included  ·  ✗ = not included (returns 403 Forbidden)

Capital Receivers

MethodEndpointAtlasAllocate
GET / POST/v3/partners/capital-receivers/
GET/v3/partners/capital-receivers/{uuid}/
GET/v3/partners/capital-receivers/{uuid}/financials/
GET/v3/partners/capital-receivers/{uuid}/captable/
GET/v3/partners/capital-receivers/{uuid}/investors/
GET / POST/v3/partners/capital-receivers/{uuid}/deals/
GET/v3/partners/capital-receivers/{uuid}/news/

Capital Allocators

MethodEndpointAtlasAllocate
GET / POST/v3/partners/capital-allocators/
GET/v3/partners/capital-allocators/{uuid}/
GET/v3/partners/capital-allocators/{uuid}/investments/
GET/v3/partners/capital-allocators/{uuid}/aum/
GET/v3/partners/capital-allocators/{uuid}/commitments/
GET/v3/partners/capital-allocators/{uuid}/financials/
GET/v3/partners/capital-allocators/{uuid}/captable/
GET/v3/partners/capital-allocators/{uuid}/funds/
GET/v3/partners/capital-allocators/{uuid}/news/

Funds

MethodEndpointAtlasAllocate
GET / POST/v3/partners/funds/
GET/v3/partners/funds/{uuid}/
GET/v3/partners/funds/{uuid}/performance/
GET/v3/partners/funds/{uuid}/aum/
GET/v3/partners/funds/{uuid}/commitments/
GET/v3/partners/funds/{uuid}/investments/
GET/v3/partners/funds/{uuid}/news/

Investors

MethodEndpointAtlasAllocate
GET / POST/v3/partners/investors/

People

MethodEndpointAtlasAllocate
GET / POST/v3/partners/people/
GET/v3/partners/people/{uuid}/
GET/v3/partners/people/{uuid}/roles/
GET/v3/partners/people/{uuid}/investments/
GET/v3/partners/people/{uuid}/news/

Service Providers

MethodEndpointAtlasAllocate
GET / POST/v3/partners/service-providers/
GET/v3/partners/service-providers/{uuid}/

Reference Data

MethodEndpointAtlasAllocate
GET/v3/partners/reference-data/

Handling 403 Forbidden

A 403 on an endpoint listed above as ✗ for your plan is expected — it means your subscription doesn’t include that endpoint. To add access, contact support@alternatives.pe to upgrade your plan or arrange a custom plan.

Migrating from v2 to v3

Last updated: 1 July 2026

The v3 Partner API is a complete redesign of the legacy VentureCap v2 API. It is not a wire-compatible upgrade — it is a new contract. This guide covers everything you need to update your integration.

What Changed at a Glance

Areav2v3
Base URLhttps://api.alternatives.pe/api/v2/https://api.altdmp.io/v3/partners/
AuthenticationOAuth2 client credentials → /api/v2/oauth/tokenAPI key → POST /v3/token/issue/ (via PropelAuth)
IdentifiersInteger IDs ("id": 1234)UUIDs ("uuid": "c16a0ffd-…")
Pagination envelope{"data": {"data": [...], "total_records": N, ...}}{"count": N, "next": "…", "previous": "…", "results": [...]}
Max page size1001000 (default 20)
Orderingorder_by + order_directionSingle ordering param with - prefix for descending
FilteringQuery-string onlyQuery-string and JSON body (POST)
Companies/api/v2/companies//v3/partners/capital-receivers/
Investors/api/v2/investors//v3/partners/capital-allocators/ + /v3/partners/investors/
Funds/api/v2/funds//v3/partners/funds/
People/api/v2/directors/, /api/v2/founders//v3/partners/people/ (unified)
Auditors/api/v2/auditors//v3/partners/service-providers/?service_type=service_provider_type_audit
ClassificationSector / theme drivenFive dimensions: themes, techs, business_models, industries, horizontals
Money fieldsMixed currency for fund performance fields; company financials already USDUSD-normalized, _usd suffix (explicit in field names for both)

Breaking Semantic Changes

These are not syntactic renames — they change meaning and require deliberate handling:

Authentication

v2

curl -X POST https://api.alternatives.pe/api/v2/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id=YOUR_ID&client_secret=YOUR_SECRET"

Returns {"token": "..."}. Use as a Bearer token.

v3

v3 credentials are issued through PropelAuth. Contact support@alternatives.pe to provision an API key, then exchange it for a short-lived bearer token:

curl -X POST https://api.altdmp.io/v3/token/issue/ \
  -H "Content-Type: application/json" \
  -d '{"api_key": "YOUR_API_KEY"}'
import requests

token = requests.post(
    "https://api.altdmp.io/v3/token/issue/",
    json={"api_key": "YOUR_API_KEY"},
).json()["access_token"]

headers = {"Authorization": f"Bearer {token}"}

The token is valid for 24 hours. Request new credentials before starting your migration.

Identifiers

v2 used integer IDs throughout. v3 uses UUIDs everywhere — no internal integer IDs are exposed.

# v2
GET /api/v2/companies/4821/

# v3
GET /v3/partners/capital-receivers/c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67/
# v3 — store uuid from list results for later detail calls
results = requests.get(f"{BASE}/capital-receivers/?search=shopback", headers=headers).json()
uuid = results["results"][0]["uuid"]
detail = requests.get(f"{BASE}/capital-receivers/{uuid}/", headers=headers).json()

There is no mapping endpoint between v2 integer IDs and v3 UUIDs. Re-query by name or registration number to find the corresponding v3 UUID.

Pagination

v2 used a custom doubly-nested envelope:

{
  "data": {
    "total_records": 1000,
    "no_of_pages": 10,
    "limit": 100,
    "offset": 0,
    "data": [{ "id": 1234, "name": "Example Co" }]
  }
}

v3 uses standard Django REST Framework pagination:

{
  "count": 1000,
  "next": "https://api.altdmp.io/v3/partners/capital-receivers/?limit=100&offset=100",
  "previous": null,
  "results": [{ "uuid": "a1b2c3d4-...", "display_name": "Example Co" }]
}
# v2
GET /api/v2/companies/?page=2&page_size=20

# v3
GET /v3/partners/capital-receivers/?limit=20&offset=20

Ordering

# v2
GET /api/v2/companies/?order_by=name&order_direction=desc

# v3 (prefix field with - for descending)
GET /v3/partners/capital-receivers/?ordering=display_name
GET /v3/partners/capital-receivers/?ordering=-last_updated_at

Each endpoint accepts a fixed set of sortable fields. An unsupported ordering value now returns 400 Bad Request with the list of valid fields, rather than being silently ignored.

Filtering

v2 supported query-string filters only. v3 adds a JSON body filter via POST for complex conditions. Simple filters (search, ordering, registration_number) are still supported as query parameters.

The POST body accepts only the filters object. search, ordering, limit, and offset are always query parameters — sending them in the body returns 400 Bad Request.

# v2
GET /api/v2/companies?countries=SGP,THA&sectors=22,44&themes=35

# v3 — advanced filter via POST body (pagination and sorting go on the query string)
curl -X POST "https://api.altdmp.io/v3/partners/capital-receivers/?search=platform&ordering=-latest_valuation_usd&limit=100" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "all": [
        {"op": "eq",  "field": "headquarters_country_iso_alpha3", "value": "SGP"},
        {"op": "in",  "field": "themes_keys", "value": ["theme_fintech", "theme_climatetech"]},
        {"op": "gte", "field": "latest_valuation_usd", "value": 10000000}
      ]
    }
  }'

Filter Operators

CategoryOperators
Equalityeq, ne
Set membershipin, nin
Stringcontains, ncontains, startswith, endswith
Numeric / dategt, gte, lt, lte, range
Nullisnull, notnull
Logicalall (AND), any (OR), not (NOT)

Annotated fields on capital receivers

POST /v3/partners/capital-receivers/ supports both direct ORM-backed fields and a set of query-annotated fields: financials_latest_financial_year_end, latest_investment_stage_name, latest_investment_stage_key, latest_operating_revenue_usd, operating_revenue_growth_yoy_pct, latest_valuation_usd, and total_funding_usd. These annotations are only applied when the relevant field appears in the filter body, so they do not affect the cost of plain list or search requests. Filter, ordering, and response all use the same field names.

Geography filters on capital allocators and funds

POST /v3/partners/capital-allocators/ and POST /v3/partners/funds/ both support geography filters via domicile_country_name, domicile_country_iso_alpha3, headquarters_country_name, and headquarters_country_iso_alpha3. For capital allocators, these resolve through the linked legal entity via a correlated subquery — allocators backed by a Person (rather than a legal entity) return null and are excluded when a country filter is applied.

Filter migration — capital receivers

v2 query paramv3 equivalent
querysearch query param
countriesPOST headquarters_country_iso_alpha3 or domicile_country_iso_alpha3
sectorsDeprecated — industries_codes is available but uses a different classification
themesPOST themes_names or themes_keys (taxonomy overhauled)
investment_stagePOST latest_investment_stage_name or latest_investment_stage_key
valuation_min / valuation_maxPOST latest_valuation_usd with gte / lte
revenue_min / revenue_maxPOST latest_operating_revenue_usd with gte / lte
revenue_growth_min / revenue_growth_maxPOST operating_revenue_growth_yoy_pct with gte / lte
total_funding_min / total_funding_maxtotal_funding_min / total_funding_max query params, or POST total_funding_usd with gte / lte
statusPOST trading_status_name
female_founderPOST is_female_founder
iso_codePOST domicile_country_iso_alpha3
order_by + order_directionordering (single param, - prefix for desc)

Classification Framework

v3 replaces v2’s sector/theme model with a five-dimension classification. Do not treat any v2 dimension as a direct equivalent:

DimensionDescription
themesThematic groupings (e.g., FinTech, AI, ClimateTech). Taxonomy was overhauled — not 1:1 with v2 themes.
techsUnderlying technology focus.
business_modelsHow the business makes money (Marketplace, SaaS, etc.).
industriesDifferent classification system from v2 sectors. Uses string codes ("08", "10") instead of integer IDs.
horizontalsCross-cutting capability (Customer Stack, Infra Stack, etc.).

v2:

{ "sectors": [{"id": 22, "name": "Financial Services"}] }

v3:

{
  "industries": [{"code": "08", "description": "Financial and Insurance Activities"}],
  "themes":     [{"key": "theme_fintech", "name": "FinTech"}]
}

USD Normalization

v3 normalizes all monetary fields to USD using a deterministic FX policy. Fields are suffixed _usd (e.g., total_funding_usd, latest_valuation_usd, committed_capital_usd). Stop applying FX rates client-side once you migrate.

v3 wraps registration and identity data under a legal_entity object:

{
  "uuid": "...",
  "legal_entity": {
    "uuid": "...",
    "display_name": "Company Name",
    "domicile_country": {"iso_alpha3": "SGP", "name": "Singapore"},
    "headquarters": {
      "country_name": "Singapore",
      "country_iso_alpha3": "SGP",
      "state_name": "Central Singapore",
      "city_name": "Singapore"
    },
    "trading_status": {"key": "operating", "name": "Operating"},
    "year_founded": 2020,
    "registration_numbers": [
      {
        "reg_number": "202012345A",
        "authority_type": "UEN",
        "authority_name": "Accounting and Corporate Regulatory Authority"
      }
    ]
  },
  "themes": [...],
  "industries": [...]
}

v2 flat fields mapped to v3 nested equivalents:

# v2 flat field
"uen": "201411189G"

# v3 nested
"legal_entity": {
  "registration_numbers": [
    {
      "reg_number": "201411189G",
      "authority_name": "Accounting and Corporate Regulatory Authority",
      "authority_label": "UEN"
    }
  ]
}

Endpoint Mapping

Companies → Capital Receivers

v2 Endpointv3 EquivalentNotes
GET /api/v2/companies/GET /v3/partners/capital-receivers/List / search
POST /v3/partners/capital-receivers/Advanced JSON filtering
GET /api/v2/companies/{id}/GET /v3/partners/capital-receivers/{uuid}/Use UUID, not integer ID
GET /api/v2/companies/{uen}/uenGET /v3/partners/capital-receivers/?registration_number={uen}UEN lookup via query param
GET /api/v2/companies/{id}/financialsMultiple v3 endpointsSee Company Financials below
GET /api/v2/companies/{id}/shareholders/GET /v3/partners/capital-receivers/{uuid}/investors/
GET /api/v2/companies/{id}/deals/GET /v3/partners/capital-receivers/{uuid}/deals/

Company Financials

The v2 monolithic /companies/{id}/financials splits across multiple v3 endpoints:

v2 sourcev3 equivalent
Basic funding blockGET /v3/partners/capital-receivers/{uuid}/ (detail — funding object)
Funding roundsGET /v3/partners/capital-receivers/{uuid}/deals/
ShareholdersGET /v3/partners/capital-receivers/{uuid}/investors/
Cap tableGET /v3/partners/capital-receivers/{uuid}/captable/
Multi-year financialsGET /v3/partners/capital-receivers/{uuid}/ (financials[] array on detail)

Capital Providers → Capital Allocators

v2 Endpointv3 Equivalent
GET /api/v2/investors/GET /v3/partners/capital-allocators/
GET /api/v2/investors/{id}/GET /v3/partners/capital-allocators/{uuid}/
GET /api/v2/investors/{id}/portfolio/GET /v3/partners/capital-allocators/{uuid}/investments/
GET /api/v2/investors/{id}/commitments/GET /v3/partners/capital-allocators/{uuid}/commitments/

Funds

v2 Endpointv3 Equivalent
GET /api/v2/funds/GET /v3/partners/funds/
GET /api/v2/funds/{id}/GET /v3/partners/funds/{uuid}/
GET /api/v2/funds/{id}/performance/GET /v3/partners/funds/{uuid}/performance/
GET /api/v2/funds/{id}/lps/GET /v3/partners/funds/{uuid}/commitments/
GET /api/v2/fund-performances/?fund_id={id}GET /v3/partners/funds/{uuid}/performance/
GET /api/v2/commitment-deals/?fund_id={id}GET /v3/partners/funds/{uuid}/commitments/
GET /api/v2/commitment-deals/?limited_partner_id={id}GET /v3/partners/capital-allocators/{uuid}/commitments/

People

v2 had separate /directors/ and /founders/ endpoints. v3 unifies them under /people/ with a role_type_key filter:

v2 Endpointv3 Equivalent
GET /api/v2/directors/GET /v3/partners/people/?role_type_key=person_association_director
GET /api/v2/founders/GET /v3/partners/people/?role_type_key=person_association_founder
GET /api/v2/directors/{id}/GET /v3/partners/people/{uuid}/
GET /api/v2/founders/{id}/GET /v3/partners/people/{uuid}/
GET /api/v2/people/?first_name=XGET /v3/partners/people/?search=X

Auditors → Service Providers

v2 Endpointv3 Equivalent
GET /api/v2/auditors/GET /v3/partners/service-providers/?service_type=service_provider_type_audit
GET /api/v2/auditors/{id}/GET /v3/partners/service-providers/{uuid}/

New in v3 (No v2 Equivalent)

EndpointWhat It Provides
GET /v3/partners/investors/Cross-entity investor discovery (capital allocators, legal entities, persons, shareholder groups)
GET /v3/partners/service-providers/Professional-services firms (auditors, law firms, etc.)
GET /v3/partners/reference-data/Enums, countries, cities, industries, SIC codes
GET /v3/partners/capital-allocators/{uuid}/aum/Allocator AUM time series
GET /v3/partners/capital-allocators/{uuid}/investments/Per-allocator portfolio with share-level data
GET /v3/partners/capital-allocators/{uuid}/funds/Fund profiles managed by an allocator
GET /v3/partners/capital-allocators/{uuid}/captable/Cap table for allocator’s legal entity
GET /v3/partners/capital-allocators/{uuid}/news/News linked to a capital allocator
GET /v3/partners/funds/{uuid}/aum/Fund AUM / size history
GET /v3/partners/funds/{uuid}/investments/Per-fund investments with share-level data
GET /v3/partners/funds/{uuid}/news/News linked to a fund
GET /v3/partners/people/{uuid}/roles/Person-to-organization role associations
GET /v3/partners/people/{uuid}/investments/Per-person portfolio
GET /v3/partners/people/{uuid}/news/News linked to a person
GET /v3/partners/capital-receivers/{uuid}/news/News linked to a capital receiver

Key Field Mappings

Companies → Capital Receivers

v2 Fieldv3 FieldNotes
iduuidChanged to UUID
namelegal_entity.display_nameNested
uenlegal_entity.registration_numbers[].reg_numberNested; each item includes authority_type and authority_name
descriptionlegal_entity.descriptionNested
url / websitelegal_entity.website_urlRenamed
databaselegal_entity.domicile_country.iso_alpha3Renamed to domicile
headquaterslegal_entity.headquarters.country_iso_alpha3Spelling fixed; nested object
date_incorporatedlegal_entity.year_foundedYear only in v3
investment_stagefunding.latest_investment_stage_nameDerived from most recent active deal
total_equity_fundingfunding.reported_and_filed_equity_usdDetail only; USD string. Total equity is also broken out into filed_equity_usd / reported_equity_usd; funding.total_funding_usd adds debt
last_valuationfunding.latest_valuation_usdAvailable on list and detail; v2 values were already USD at import — v3 makes it explicit
size_of_last_roundfunding.latest_investment_amountDetail only
date_of_last_roundfunding.latest_investment_date
revenuelatest_financials.operating_revenue_usdLatest snapshot on list; historical array on detail; v2 values were already USD at import — v3 makes it explicit
financial_year_endlatest_financials.financial_year_end
revenue_growthlatest_financials.operating_revenue_growth_yoy_pctYoY percentage
ebitlatest_financials.earnings_before_tax_usdRenamed; v2 values were already USD at import — v3 makes it explicit
liabilitieslatest_financials.liabilities_usdv2 values were already USD at import — v3 makes it explicit
statuslegal_entity.trading_status.namev3 trading status enum; do not preserve v2 semantics
company_raisingis_raising_nowBoolean (was nullable)
female_founderlegal_entity.is_female_founderBoolean (was 0/1)
sectors(deprecated)Do not treat industries as a direct replacement
themesthemes[]Taxonomy overhauled; {"key": "theme_fintech", "name": "FinTech"}
updated_atlast_updated_atISO datetime in v3
exit_type, liquidation, liquidation_details(deprecated)Use funding_status + transaction flags

Capital Providers → Capital Allocators

v2 Fieldv3 FieldNotes
investor_iduuid
namedisplay_name
typetypes[].name
countrylegal_entity.domicile_country.name
aumlatest_aum.aum_value_usd
stagespreferred_allocation_deal_types[].name
(n/a)financial_statements_audited[]New in v3 Partner detail: list of audited financial statements for the allocator’s underlying legal entity, derived from FileAttachment records with type key file_attachments_audited_financial_statement (each entry includes year, date_of_file, and a presigned url).
(n/a)financial_statements_extracted[]New in v3 Partner detail: list of extracted financial statements for the allocator’s underlying legal entity, derived from FileAttachment records with type key file_attachments_extracted_financial_statement (same structure as audited).

Fund Performance

v2 Fieldv3 FieldNotes
irrirr
tvpitvpiTotal Value to Paid-In
dpidpiDistributions to Paid-In
rvpirvpiResidual Value to Paid-In
net_irrnet_irr
gross_irrgross_irr
as_of_dateas_of_datePerformance date
currencycurrency.iso_codev2 currency described the as-reported currency (mixed per record); v3 monetary fields (profit_usd, drawdowns_usd, committed_capital_usd) are always USD-normalized — this is a real semantic change, not just a rename
provenanceprovenance.nameData source

Commitment Deals

v2 Fieldv3 FieldNotes
iduuidChanged to UUID
fund_idParent URLUse /funds/{uuid}/commitments/
fund_nameParent resourceGet from fund detail
lp_idDifferent endpointUse /capital-allocators/{uuid}/commitments/
lp_nameVia allocator detail
commitment_amountinvestment_amount_usd
commitment_datedate
vintagefund.vintage_yearFrom fund
currencytransaction_currency.iso_code
provenanceprovenance.name

Method Matrix

Complete endpoint reference for the v3 Partner API surface.

Capital Receivers

MethodEndpointPurposeKey params / body
GET/v3/partners/capital-receivers/Listsearch, ordering, registration_number, limit, offset
POST/v3/partners/capital-receivers/FilterJSON filters, search, ordering, limit, offset
GET/v3/partners/capital-receivers/{uuid}/Detail
GET/v3/partners/capital-receivers/{uuid}/financials/Detailed financialslimit, offset
GET/v3/partners/capital-receivers/{uuid}/investors/Investors in this entitylimit, offset
GET/v3/partners/capital-receivers/{uuid}/deals/Funding rounds + transactionssearch, ordering, limit, offset
POST/v3/partners/capital-receivers/{uuid}/deals/Filter funding roundsJSON filters, search, ordering, limit, offset
GET/v3/partners/capital-receivers/{uuid}/news/News articlesordering, limit, offset

Capital Allocators

MethodEndpointPurposeKey params / body
GET/v3/partners/capital-allocators/Listsearch, ordering, limit, offset
POST/v3/partners/capital-allocators/FilterJSON filters, search, ordering, limit, offset
GET/v3/partners/capital-allocators/{uuid}/Detail
GET/v3/partners/capital-allocators/{uuid}/commitments/Commitments by allocatorordering, limit, offset
GET/v3/partners/capital-allocators/{uuid}/aum/Allocator AUM historyordering, limit, offset
GET/v3/partners/capital-allocators/{uuid}/investments/Investments by allocatorlimit, offset
GET/v3/partners/capital-allocators/{uuid}/financials/Historical financial statementslimit, offset
GET/v3/partners/capital-allocators/{uuid}/captable/Cap table for allocator’s legal entitylimit, offset
GET/v3/partners/capital-allocators/{uuid}/funds/Fund profiles managed by allocatorlimit, offset
GET/v3/partners/capital-allocators/{uuid}/news/News articlesordering, limit, offset

Funds

MethodEndpointPurposeKey params / body
GET/v3/partners/funds/Listsearch, ordering, limit, offset
POST/v3/partners/funds/FilterJSON filters, search, ordering, limit, offset
GET/v3/partners/funds/{uuid}/Detail
GET/v3/partners/funds/{uuid}/performance/Performance historyordering, limit, offset
GET/v3/partners/funds/{uuid}/aum/AUM / size historyordering, limit, offset
GET/v3/partners/funds/{uuid}/commitments/Commitments to fundordering, limit, offset
GET/v3/partners/funds/{uuid}/investments/Investments by fundlimit, offset
GET/v3/partners/funds/{uuid}/news/News articlesordering, limit, offset

People

MethodEndpointPurposeKey params / body
GET/v3/partners/people/Listsearch, role_type_key, role_type_name, ordering, limit, offset
POST/v3/partners/people/FilterJSON filters, search, role_type_key, role_type_name, ordering, limit, offset
GET/v3/partners/people/{uuid}/Detail
GET/v3/partners/people/{uuid}/roles/Org rolesrole_type_key, role_type_name, limit, offset
GET/v3/partners/people/{uuid}/investments/Investments by personlimit, offset
GET/v3/partners/people/{uuid}/news/News articlesordering, limit, offset

Investors

MethodEndpointPurposeKey params / body
GET/v3/partners/investors/Discover investorsinvestor_type, search, invested_in_stage, invested_on_from, invested_on_to, ordering, limit, offset
POST/v3/partners/investors/Filter discoveryJSON filters with investor_type and/or name/search, plus pagination

Service Providers

MethodEndpointPurposeKey params / body
GET/v3/partners/service-providers/Listservice_type, search, ordering, limit, offset
POST/v3/partners/service-providers/FilterJSON filters, service_type, search, ordering, limit, offset
GET/v3/partners/service-providers/{uuid}/Detail

Reference Data

MethodEndpointPurposeKey params / body
GET/v3/partners/reference-data/Enums, countries, cities, industries, SIC codestype, enum_categories

Coverage Gap Summary

v2 fields, filters, and endpoints that have no direct v3 equivalent.

Fields Not in v3

Categoryv2 field(s)SeverityWorkaround
Companiesadditional_idsLowNot migrated.
Companiessize_of_last_round, date_of_last_roundMediumAvailable on CR detail as funding.latest_investment_amount and funding.latest_investment_date.
Companiesdate_incorporated (full date)Lowv3 only has year_founded (year only).
Companiesliquidation_detailsLowDeprecated; no v3 replacement.
Company Financialsfundings[] pre-money valuationMediumPer-round detail available via /capital-receivers/{uuid}/deals/. pre_money_valuation is not exposed.
Company Financialsadditional_fundings[] (news-sourced rounds)MediumNot in Partner API.
Company Financialsrevenue[] multi-year historyMediumCR detail has financials[]. For fuller history use Platform /legal-entities/{uuid}/financials/.
Company Financialsshareholders[].value_of_investment_at_last_round_valuationMediumNot in Partner API.
Company Financialsper_share_class_summary[] (raw share_class_id)LowLargely covered by deals[].transactions[]. Raw integer share_class_id is unavailable.
Investorsinvestor_uen on listLowUse /capital-receivers/{uuid}/investors/ registration_numbers[].reg_number.
Investorsinvestment_date on listLowUse first_investment_date / latest_investment_date on /capital-receivers/{uuid}/investors/.
InvestorsPer-company stage amounts on /investments/MediumOnly on investor list as investments_by_deal_type; not per-company on /investments/.
InvestorsValuation calculations (value_of_investment_at_last_round_valuation*)MediumNot in Partner API.
InvestorsShare-class amounts (amount_invested_ordinary, _preference)LowNot in Partner API.
Investorsmax_price_per_shareLowNot in Partner API.
Fund listInline performance metrics (irr, dpi, rvpi, net_multiple)MediumSeparate call to /funds/{uuid}/performance/.
Fund listsize on listMediumSeparate call to /funds/{uuid}/aum/.
Fund Performancesource_name, capital_provider_source_acting_asLowNot exposed.
Fund Performancereport_path, reporting_periodLowUse year + quarter; report path is internal.
Commitment Dealssize (deal size)LowNot in Partner API.

Filters Not in v3

Categoryv2 filter(s)Workaround
Companiestotal_funding_min/max (server-side aggregate)Not available as a server-side filter.
Investorssectors, themes, invested_in_stage, invested_on_from/toNot available in Partner API; filter client-side or via other endpoints.
Investorsorder_by + order_directionNot available; no server-side ordering on investor results.
Fundsnet_irr_min/max, net_multiple_min/max, dpi_min/max, rvpi_min/maxNot available; performance is separate from fund list.
Fundslast_report_quarterNot available.
Fund PerformanceAll range filters (irr_min/max, dpi_min/max, etc.)Not available; filter client-side.
Commitment Dealsfund_type, queryFilter funds first, then query per-fund commitments.

v2 Endpoints Fully Deprecated

v2 endpointReason / replacement
GET /api/v2/companies/{uen}/uen/financialsUse ?registration_number= + detail + /financials/.
GET /api/v2/fund-performances/ (standalone list)Performance is per-fund only via /funds/{uuid}/performance/.
GET /api/v2/commitment-deals/ (standalone list)Commitments are per-fund or per-allocator only.
GET /api/v2/commitment-deals/{dealId} (direct detail)Match by UUID in nested results.

Worked Examples

Authenticate and list capital receivers

# 1. Exchange API key for access token
curl -sS https://api.altdmp.io/v3/token/issue/ \
  -H 'Content-Type: application/json' \
  -d '{"api_key": "YOUR_API_KEY"}' \
  | jq -r .access_token > /tmp/token.txt

# 2. List capital receivers
curl -sS "https://api.altdmp.io/v3/partners/capital-receivers/?search=Bunker&limit=20" \
  -H "Authorization: Bearer $(cat /tmp/token.txt)" | jq .

Filter capital receivers (POST body)

curl -sS "https://api.altdmp.io/v3/partners/capital-receivers/?search=platform&ordering=-latest_valuation_usd&limit=100" \
  -H "Authorization: Bearer $(cat /tmp/token.txt)" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "all": [
        {"op": "eq",  "field": "headquarters_country_iso_alpha3", "value": "SGP"},
        {"op": "gte", "field": "year_founded",                     "value": 2018},
        {"op": "in",  "field": "themes_keys",                      "value": ["theme_fintech", "theme_climatetech"]}
      ]
    }
  }' | jq .

Discover an investor and pull their portfolio

TOKEN=$(cat /tmp/token.txt)

# 1. Discover the investor — returns investor_type to determine which profile to call
INV=$(curl -sS "https://api.altdmp.io/v3/partners/investors/?investor_type=legal_entity&search=Temasek" \
  -H "Authorization: Bearer $TOKEN" | jq -r '.results[0]')
UUID=$(echo "$INV" | jq -r '.uuid')
TYPE=$(echo "$INV" | jq -r '.investor_type')

# 2. Fetch the portfolio using the appropriate profile endpoint
# investor_type=legal_entity may be a capital allocator or capital receiver — try allocator first
if [ "$TYPE" = "capital_allocator" ]; then
  URL="https://api.altdmp.io/v3/partners/capital-allocators/$UUID/investments/"
elif [ "$TYPE" = "fund" ]; then
  URL="https://api.altdmp.io/v3/partners/funds/$UUID/investments/"
elif [ "$TYPE" = "person" ]; then
  URL="https://api.altdmp.io/v3/partners/people/$UUID/investments/"
else
  # For legal_entity, try capital-allocators first
  URL="https://api.altdmp.io/v3/partners/capital-allocators/$UUID/investments/"
fi
curl -sS "$URL" -H "Authorization: Bearer $TOKEN" | jq .

Walk fund performance and AUM

FUND_UUID="your-fund-uuid-here"

curl -sS "https://api.altdmp.io/v3/partners/funds/$FUND_UUID/performance/?ordering=-date" \
  -H "Authorization: Bearer $TOKEN" | jq .

curl -sS "https://api.altdmp.io/v3/partners/funds/$FUND_UUID/aum/?ordering=-date" \
  -H "Authorization: Bearer $TOKEN" | jq .

Bootstrap reference data

# Cache enums and countries on app start
curl -sS "https://api.altdmp.io/v3/partners/reference-data/?type=enums,countries" \
  -H "Authorization: Bearer $TOKEN" \
  > reference_cache.json

# Use to populate filter dropdowns
jq '.enums.themes[] | "\(.key)\t\(.name)"' reference_cache.json

URL Cheat Sheet

v2 callv3 equivalent
POST /api/v2/oauth/tokenPOST /v3/token/issue/
GET /api/v2/companies?query=X&countries=SGPPOST /v3/partners/capital-receivers/ with search=X and {"filters":{"all":[{"op":"eq","field":"headquarters_country_iso_alpha3","value":"SGP"}]}}
GET /api/v2/companies/123GET /v3/partners/capital-receivers/{uuid}/
GET /api/v2/companies/201935876D/uenGET /v3/partners/capital-receivers/?registration_number=201935876D
GET /api/v2/companies/123/financialsGET /v3/partners/capital-receivers/{uuid}/ (funding block + financials[])
GET /api/v2/investors?query=XGET /v3/partners/investors/?search=X
GET /api/v2/investors/4GET /v3/partners/investors/ → find UUID → /capital-allocators/{uuid}/investments/
GET /api/v2/directors?query=XGET /v3/partners/people/?role_type_key=person_association_director&search=X
GET /api/v2/directors/4GET /v3/partners/people/{uuid}/
GET /api/v2/founders?query=XGET /v3/partners/people/?role_type_key=person_association_founder&search=X
GET /api/v2/founders/2GET /v3/partners/people/{uuid}/
GET /api/v2/auditors?query=XGET /v3/partners/service-providers/?service_type=service_provider_type_audit&search=X
GET /api/v2/auditors/2GET /v3/partners/service-providers/{uuid}/
GET /api/v2/capital-providers?category=fund-managerGET /v3/partners/capital-allocators/ (no direct category filter)
GET /api/v2/capital-providers/7034/GET /v3/partners/capital-allocators/{uuid}/
GET /api/v2/funds/?vintage_year_min=2020POST /v3/partners/funds/ with {"filters":{"all":[{"op":"gte","field":"vintage_year","value":2020}]}}
GET /api/v2/funds/477GET /v3/partners/funds/{uuid}/
GET /api/v2/fund-performances/?fund_id=508GET /v3/partners/funds/{fund-uuid}/performance/
GET /api/v2/commitment-deals/?fund_id=764GET /v3/partners/funds/{fund-uuid}/commitments/
GET /api/v2/commitment-deals/?limited_partner_id=3521GET /v3/partners/capital-allocators/{allocator-uuid}/commitments/
GET /api/v2/people/?first_name=ArjunGET /v3/partners/people/?search=Arjun

Migration Checklist

Frequently Asked Questions

How long will v2 keep running?

v2 will be supported through a managed migration window communicated to each customer individually. Confirm your timeline with your customer support representative.

Do I need new credentials?

Yes. v3 issues API keys via PropelAuth, which are exchanged for short-lived bearer tokens via POST /v3/token/issue/. Request new credentials before starting your migration.

Will v3 expose everything v2 did?

Most v2 capability is preserved — either as a direct mapping or via a different shape. A small number of v2 fields are intentionally not surfaced (raw share-class IDs, news-sourced funding rounds, pre-money valuation). See the Coverage Gap Summary for the full list with workarounds.

What if my integration depends on a deprecated v2 field?

Email support@alternatives.pe with the specific field and use case. Many gaps have nearby v3 equivalents that can be adopted without losing functionality.

Capital Receivers

Last updated: 1 July 2026

Capital receivers are companies and startups that have received investment. This is the most frequently accessed entity type in the Partner API.

Endpoints

MethodEndpointAccess
GET/v3/partners/capital-receivers/Subscription required
POST/v3/partners/capital-receivers/Subscription required
GET/v3/partners/capital-receivers/{uuid}/Subscription required
GET/v3/partners/capital-receivers/{uuid}/financials/Subscription required
GET/v3/partners/capital-receivers/{uuid}/captable/Subscription required
GET/v3/partners/capital-receivers/{uuid}/investors/Subscription required
GET/v3/partners/capital-receivers/{uuid}/deals/Subscription required
POST/v3/partners/capital-receivers/{uuid}/deals/Subscription required
GET/v3/partners/capital-receivers/{uuid}/news/Subscription required

List Capital Receivers

Returns a paginated list of capital receiver profiles.

curl "https://api.altdmp.io/v3/partners/capital-receivers/?search=shopback" \
  -H "Authorization: Bearer YOUR_TOKEN"
import requests

BASE = "https://api.altdmp.io/v3/partners"
headers = {"Authorization": "Bearer YOUR_TOKEN"}

resp = requests.get(f"{BASE}/capital-receivers/", params={"search": "shopback"}, headers=headers)
data = resp.json()
# data["results"] is the list, data["count"] is total matches

Example response (ShopBack):

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67",
      "display_name": "Shopback",
      "year_founded": 2014,
      "is_raising_now": false,
      "last_updated_at": "2025-10-16T07:33:30Z",
      "captable_source": {"type": "managed"},
      "legal_entity": {
        "uuid": "fee788ac-cffe-46f0-9bb5-fedb62992bd8",
        "registration_numbers": [{"reg_number": "201411189G", "authority_name": "ACRA", "authority_label": "UEN"}],
        "trading_status": {"name": "Operating", "key": "operating"},
        "domicile_country": {"name": "Singapore", "iso_alpha3": "SGP"},
        "headquarters": {"country_name": "Singapore", "country_iso_alpha3": "SGP", "city_name": "Singapore"},
        "is_female_founder": true,
        "description": "ShopBack operates a consumer-facing cashback and rewards platform."
      },
      "funding": {
        "latest_investment_stage_name": "Series F",
        "latest_investment_stage_key": "series_f",
        "latest_investment_date": "2022-12-13"
      },
      "latest_financials": {
        "financial_year_end": "2025-03-31",
        "operating_revenue_usd": 96318754.34,
        "operating_revenue_growth_yoy_pct": -2.4
      }
    }
  ]
}

List Query Parameters

ParameterTypeDescription
searchstringMatches company name, alternate names, description, and registration number
registration_numberstringFilter by company registration number
orderingstringField to sort by. Prefix with - for descending (e.g. -last_updated_at)
limitintegerResults per page (default: 20)
offsetintegerPagination offset
total_funding_minnumberMinimum total equity raised (USD)
total_funding_maxnumberMaximum total equity raised (USD)

is_raising_now is a filter field on the advanced POST filter, not a GET query parameter.


Advanced Filter (POST)

Use POST with a JSON body for complex filters — range queries, multi-value matches, and boolean logic. The body accepts only the filters object; pass search, ordering, limit, and offset as query parameters.

# Singapore companies at Series B or later
curl -X POST https://api.altdmp.io/v3/partners/capital-receivers/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "all": [
        {"op": "eq", "field": "headquarters_country_iso_alpha3", "value": "SGP"},
        {"op": "in", "field": "latest_investment_stage_name",
         "value": ["Series B", "Series C", "Series D", "Series E", "Series F"]}
      ]
    }
  }'
resp = requests.post(
    f"{BASE}/capital-receivers/",
    headers=headers,
    json={
        "filters": {
            "all": [
                {"op": "eq", "field": "headquarters_country_iso_alpha3", "value": "SGP"},
                {"op": "in", "field": "latest_investment_stage_name",
                 "value": ["Series B", "Series C", "Series D", "Series E", "Series F"]},
            ]
        },
    },
    params={"limit": 20, "offset": 0},
)

Common Filter Fields

FieldTypeExample
headquarters_country_iso_alpha3string"SGP"
domicile_country_iso_alpha3string"SGP"
latest_investment_stage_namestring"Series A"
latest_investment_stage_keystring"series_a"
latest_valuation_usdnumber50000000
latest_operating_revenue_usdnumber10000000
operating_revenue_growth_yoy_pctnumber15.0
total_funding_usdnumber5000000
financials_latest_financial_year_enddate string"2023-01-01"
captable_is_managedbooleantrue
is_female_founderbooleantrue
is_raising_nowbooleanfalse
year_foundedinteger2018

financials_latest_financial_year_end, latest_investment_stage_name, latest_investment_stage_key, latest_operating_revenue_usd, operating_revenue_growth_yoy_pct, latest_valuation_usd, and total_funding_usd are annotation-backed — they are only computed when they appear in the filter body, so plain list requests are unaffected.

These field names match the response funding object, so you read, filter, and sort by the same key (e.g. ?ordering=-total_funding_usd).

captable_is_managed: true returns companies with a managed cap table (full transaction-level data available via /captable/ and /investors/); false returns snapshot-only companies. null (no filter) includes both. Companies with no cap table at all are excluded from both eq:true and eq:false queries.

Filter Examples

# Companies that filed financials for FY2023 or later
curl -X POST https://api.altdmp.io/v3/partners/capital-receivers/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"op": "gte", "field": "financials_latest_financial_year_end", "value": "2023-01-01"}}'

# Companies with a managed cap table (full transaction-level data available)
curl -X POST https://api.altdmp.io/v3/partners/capital-receivers/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"op": "eq", "field": "captable_is_managed", "value": true}}'

# Companies with a snapshot cap table only
curl -X POST https://api.altdmp.io/v3/partners/capital-receivers/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"op": "eq", "field": "captable_is_managed", "value": false}}'
# Companies that filed financials for FY2023 or later
resp = requests.post(
    f"{BASE}/capital-receivers/",
    headers=headers,
    json={"filters": {"op": "gte", "field": "financials_latest_financial_year_end", "value": "2023-01-01"}},
)

# Companies with a managed cap table
resp = requests.post(
    f"{BASE}/capital-receivers/",
    headers=headers,
    json={"filters": {"op": "eq", "field": "captable_is_managed", "value": True}},
)

Get Capital Receiver Detail

Returns the full profile for a single capital receiver, including additional fields not present in the list response.

curl "https://api.altdmp.io/v3/partners/capital-receivers/c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67/" \
  -H "Authorization: Bearer YOUR_TOKEN"
uuid = "c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67"
detail = requests.get(f"{BASE}/capital-receivers/{uuid}/", headers=headers).json()

Additional fields in the detail response:

{
  "funding": {
    "latest_investment_stage_name": "Series F",
    "latest_investment_stage_key": "series_f",
    "latest_investment_date": "2022-12-13",
    "latest_investment_amount": "50000000.00",
    "latest_valuation_usd": "925652927.23",
    "latest_valuation_date": "2022-12-13",
    "reported_and_filed_equity_usd": "203586016.85",
    "filed_equity_usd": "203586016.85",
    "reported_equity_usd": "0.00",
    "reported_and_filed_debt_usd": "0.00",
    "filed_debt_usd": "0.00",
    "reported_debt_usd": null,
    "total_funding_usd": "203586016.85"
  },
  "funding_status": "active",
  "has_vc_transactions": true,
  "has_pe_transactions": false,
  "has_ma_transactions": false,
  "has_debt_transactions": false,
  "has_liquidity_events": false,
  "has_partial_exits": true,
  "has_distressed_transactions": false,
  "legal_entity": {
    "founders": [
      {"uuid": "f2eac778-...", "name": "Shanru Lai"},
      {"uuid": "...", "name": "Henry Chan"},
      {"uuid": "...", "name": "Joel Leong Yong Siang"}
    ],
    "directors": [
      {"uuid": "...", "name": "Willson Cuaca"},
      {"uuid": "...", "name": "Kien Nguyen"},
      {"uuid": "...", "name": "Dan Neary"}
    ],
    "auditors": [{"uuid": "...", "name": "Ernst & Young LLP"}]
  }
}

The funding object

Monetary amounts are returned as decimal strings (two decimal places), or null. Equity and debt are each broken down into filed, reported, and their combined reported-and-filed total:

FieldDescription
filed_equity_usdEquity from official filings (or, for some domiciles, paid-up capital)
reported_equity_usdEquity from reported (e.g. announced) rounds not yet reflected in filings
reported_and_filed_equity_usdfiled_equity_usd + reported_equity_usd
filed_debt_usd / reported_debt_usd / reported_and_filed_debt_usdThe equivalent breakdown for debt
total_funding_usdreported_and_filed_equity_usd + reported_and_filed_debt_usd
latest_valuation_usd / latest_valuation_dateMost recent known valuation and its date
latest_investment_amount / latest_investment_date / latest_investment_stage_name / latest_investment_stage_keyMost recent funding round summary

null vs "0.00". null means unknown — no qualifying data was found. "0.00" means known-zero — data was found and the amount nets to zero. Treat them differently.

Public-listed companies. Companies classified as public no longer return funding or valuation — every amount in the funding object (and latest_valuation_usd) is null, since a public company has a market capitalization rather than private funding. funding_status is still populated (e.g. "Public Listed").

What counts toward totals. Funding totals count all primary funding across a company’s deals, regardless of deal subtype or type. Secondary transactions are never included.


Cap Table

Returns the current shareholding structure. The shape of the response depends on captable_source.type — always check this field before interpreting results.

curl "https://api.altdmp.io/v3/partners/capital-receivers/c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67/captable/" \
  -H "Authorization: Bearer YOUR_TOKEN"
captable = requests.get(f"{BASE}/capital-receivers/{uuid}/captable/", headers=headers).json()
source_type = captable["captable_source"]["type"]  # "managed" or "snapshot"

Managed Cap Table Response

When captable_source.type is "managed", the cap table is computed from transaction records. Investment amounts and deal-stage breakdowns are available.

{
  "captable_source": {"type": "managed"},
  "as_of_date": "2026-05-05",
  "aggregations": {
    "total_shares_issued": 26000000,
    "total_shares_held": 26000000
  },
  "results": [
    {
      "shareholder": {
        "uuid": "...",
        "name": "East Ventures Fund 2",
        "type": "CapitalAllocatorProfile"
      },
      "shares_currently_held_absolute": 1250000,
      "percentage_held_absolute": "4.80",
      "shares_issued_absolute": 1500000,
      "shares_sold_absolute": 250000
    }
  ]
}

Snapshot Cap Table Response

When captable_source.type is "snapshot", data is sourced from a periodic shareholder register. Investment-amount data is not available.

{
  "captable_source": {"type": "snapshot"},
  "as_of_date": "2024-12-31",
  "aggregations": null,
  "results": [
    {
      "shareholder": {"uuid": "...", "name": "Temasek Holdings", "type": "LegalEntity"},
      "number_of_shares": 5000000,
      "percentage_held": "35.00000",
      "is_former_shareholder": false,
      "start_date": "2021-03-15",
      "end_date": null
    }
  ]
}

/investors/ returns HTTP 400 for snapshot companies — use /captable/ instead.


Investors

Returns investor-centric aggregates for companies with a managed cap table. Each row represents one investor’s aggregate position.

curl "https://api.altdmp.io/v3/partners/capital-receivers/c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67/investors/" \
  -H "Authorization: Bearer YOUR_TOKEN"
investors = requests.get(f"{BASE}/capital-receivers/{uuid}/investors/", headers=headers).json()

Example response row (ShopBack):

{
  "uuid": "...",
  "name": "East Ventures Fund 2",
  "investor_type": "fund",
  "registration_numbers": [{"reg_number": "...", "authority_name": "ACRA"}],
  "shares_currently_held": 1250000,
  "current_share_holding_percentage": 4.8,
  "total_shares_allocated": 1500000,
  "total_shares_sold": 250000,
  "total_secondary_shares": 0,
  "amount_invested_usd": 7500000.00,
  "investment_by_stage_amount_usd": {
    "seed": 0,
    "series_a": 7500000,
    "other": 0
  },
  "first_investment_date": "2019-04-30",
  "latest_investment_date": "2022-03-01"
}

Deals

Returns funding rounds and individual transactions for a capital receiver. ShopBack, for example, has 25 recorded deals.

curl "https://api.altdmp.io/v3/partners/capital-receivers/c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67/deals/" \
  -H "Authorization: Bearer YOUR_TOKEN"
deals = requests.get(f"{BASE}/capital-receivers/{uuid}/deals/", headers=headers).json()

Example deal row (ShopBack Series F):

{
  "date": "2022-12-13",
  "investment_quarter": "Q4 2022",
  "first_investment_date": "2022-07-20",
  "last_investment_date": "2023-05-08",
  "self_declared_label": "Series F",
  "allocation_deal_type_name": "Series F",
  "allocation_deal_type_key": "series_f",
  "allocation_type_name": "Equity",
  "allocation_type_key": "equity",
  "allocation_subtype_name": "Venture Capital (VC)",
  "allocation_subtype_key": "venture_capital",
  "no_shares_issued": 23023201,
  "post_money_valuation_usd": 925652927.23,
  "deal_size_usd": null,
  "reported_deal_size_usd": null,
  "count_of_transactions": 14,
  "transactions": [
    {
      "buyer": {"uuid": "...", "name": "GIC Private Limited", "type": "LegalEntity"},
      "seller": {"uuid": "...", "name": "ShopBack", "type": "CapitalReceiverProfile"},
      "share_class": "Series F Preferred",
      "number_of_shares": 2000000,
      "transaction_size_usd": 80000000.00,
      "price_per_share_usd": 40.00
    }
  ]
}

Filter Deals via POST

Use POST with a JSON body to filter deals by type, date, or other attributes. Supports the same operators and logical combinators (all, any, not) as the main list filter.

Deal Filter Fields

FieldTypeExample
datedate string"2020-01-01"
deal_labelstring"Series A"
allocation_typestring"Equity"
allocation_subtypestring"Venture Capital (VC)"
deal_transaction_typestring"Seed", "Series A"
deal_size_usdnumber5000000
post_money_valuation_usdnumber50000000
no_shares_issuedinteger1000000
no_shares_boughtinteger500000
no_shares_soldinteger100000
# Only equity rounds after 2020
curl -X POST "https://api.altdmp.io/v3/partners/capital-receivers/c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67/deals/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "all": [
        {"op": "eq",  "field": "allocation_type_key", "value": "equity"},
        {"op": "gte", "field": "date", "value": "2020-01-01"}
      ]
    }
  }'

Financials

Returns historical financial records ordered by most recent financial year end first. Each row includes year-over-year growth annotations for revenue, expenses, earnings, and liabilities. Each monetary metric is available in both its original reporting currency (bare field, e.g. operating_revenue) and USD-normalized (_usd suffix, e.g. operating_revenue_usd); reporting_currency identifies the source currency. In v2, revenue, EBIT, and valuation values were imported as USD — v3 preserves those same values in the _usd fields while also exposing the original reporting-currency figure.

curl "https://api.altdmp.io/v3/partners/capital-receivers/c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67/financials/" \
  -H "Authorization: Bearer YOUR_TOKEN"
financials = requests.get(f"{BASE}/capital-receivers/{uuid}/financials/", headers=headers).json()

Example financials row:

{
  "financial_year_end": "2023-12-31",
  "total_revenue": "12450000.00",
  "total_revenue_usd": "9410850.00",
  "annual_total_revenue_yoy_growth_pct": "42.00",
  "operating_revenue": "12450000.00",
  "operating_revenue_usd": "9410850.00",
  "annual_operating_revenue_yoy_growth_pct": "42.00",
  "cogs": "4980000.00",
  "cogs_usd": "3762780.00",
  "annual_cogs_yoy_growth_pct": "31.00",
  "gross_profit": "7470000.00",
  "gross_profit_usd": "5645070.00",
  "annual_gross_profit_yoy_growth_pct": null,
  "total_expenses": "9200000.00",
  "total_expenses_usd": "6952200.00",
  "annual_total_expenses_yoy_growth_pct": null,
  "earnings_before_tax": "-1730000.00",
  "earnings_before_tax_usd": "-1307130.00",
  "annual_earnings_before_tax_yoy_growth_pct": null,
  "income_tax_expenses": null,
  "income_tax_expenses_usd": null,
  "annual_income_tax_expenses_yoy_growth_pct": null,
  "earnings_after_tax": null,
  "earnings_after_tax_usd": null,
  "annual_earnings_after_tax_yoy_growth_pct": null,
  "liabilities": "5630000.00",
  "liabilities_usd": "4251030.00",
  "annual_liabilities_yoy_growth_pct": null,
  "reporting_currency": "SGD",
  "notes": null,
  "is_audited": true,
  "audit_opinion": {"key": "unqualified", "name": "Unqualified"},
  "is_consolidated": false,
  "is_restated": false
}

News

Returns paginated news articles linked to this capital receiver.

curl "https://api.altdmp.io/v3/partners/capital-receivers/c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67/news/" \
  -H "Authorization: Bearer YOUR_TOKEN"
news = requests.get(f"{BASE}/capital-receivers/{uuid}/news/", headers=headers).json()

Example response:

{
  "count": 3,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "d4f2a891-1bc3-4e7d-9f32-abc123def456",
      "date": "2022-12-13",
      "headline": "ShopBack Secures $80M in Series F Funding Round",
      "body": "ShopBack, Southeast Asia's leading cashback and rewards platform, has closed an $80M Series F round...",
      "source_url": "https://techcrunch.com/2022/12/13/shopback-series-f/",
      "type": {"name": "Funding Announcement", "key": "funding_announcement"}
    }
  ]
}

News Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -date)
limitResults per page
offsetPagination offset

Capital Allocators

Last updated: 20 May 2026

Capital allocators are the entities that deploy capital — VC firms, private equity firms, family offices, corporate venture arms, sovereign wealth funds, and more.

Endpoints

MethodEndpointAccess
GET/v3/partners/capital-allocators/Subscription required
POST/v3/partners/capital-allocators/Subscription required
GET/v3/partners/capital-allocators/{uuid}/Subscription required
GET/v3/partners/capital-allocators/{uuid}/investments/Subscription required
GET/v3/partners/capital-allocators/{uuid}/aum/Subscription required
GET/v3/partners/capital-allocators/{uuid}/commitments/Subscription required
GET/v3/partners/capital-allocators/{uuid}/financials/Subscription required
GET/v3/partners/capital-allocators/{uuid}/captable/Subscription required
GET/v3/partners/capital-allocators/{uuid}/funds/Subscription required
GET/v3/partners/capital-allocators/{uuid}/news/Subscription required

List Capital Allocators

curl "https://api.altdmp.io/v3/partners/capital-allocators/?search=Wavemaker" \
  -H "Authorization: Bearer YOUR_TOKEN"
import requests

BASE = "https://api.altdmp.io/v3/partners"
headers = {"Authorization": "Bearer YOUR_TOKEN"}

resp = requests.get(
    f"{BASE}/capital-allocators/",
    params={"search": "Wavemaker"},
    headers=headers,
)

The ?search= parameter matches against the allocator’s own display_name, the linked legal entity’s display_name, and description.


Advanced Filter (POST)

# VC firms in Singapore that invest at Seed and Series A
curl -X POST https://api.altdmp.io/v3/partners/capital-allocators/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "all": [
        {"op": "eq", "field": "domicile_country_iso_alpha3", "value": "SGP"},
        {"op": "in", "field": "preferred_allocation_deal_type_name", "value": ["Seed", "Series A"]}
      ]
    }
  }'
resp = requests.post(
    f"{BASE}/capital-allocators/",
    headers=headers,
    json={
        "filters": {
            "all": [
                {"op": "eq", "field": "domicile_country_iso_alpha3", "value": "SGP"},
                {"op": "in", "field": "preferred_allocation_deal_type_name",
                 "value": ["Seed", "Series A"]},
            ]
        }
    },
)

Common Filter Fields

FieldTypeExample
domicile_country_iso_alpha3string"SGP"
domicile_country_namestring"Singapore"
headquarters_country_iso_alpha3string"SGP"
headquarters_country_namestring"Singapore"
preferred_allocation_deal_type_namestring"Seed"
preferred_allocation_deal_type_keystring"seed"

Geography filters (domicile_country_*, headquarters_country_*) resolve through the allocator’s linked legal entity. Capital allocators backed by a Person (rather than a legal entity) return null for these fields and are excluded when a country filter is applied.


Get Capital Allocator Detail

curl "https://api.altdmp.io/v3/partners/capital-allocators/f80754f5-16c7-4aac-9cab-4149285c7220/" \
  -H "Authorization: Bearer YOUR_TOKEN"
uuid = "f80754f5-16c7-4aac-9cab-4149285c7220"
detail = requests.get(f"{BASE}/capital-allocators/{uuid}/", headers=headers).json()

Full profile response:

{
  "uuid": "f80754f5-16c7-4aac-9cab-4149285c7220",
  "display_name": "Meridian Ventures Pte. Ltd.",
  "description": "Meridian Ventures is a Singapore-based early-stage VC firm investing across Southeast Asia, with a focus on B2B SaaS, FinTech, and HealthTech.",
  "profile_type": "legalentity",
  "types": [{"name": "Venture Capital Firm", "key": "ca_type_venture_capital_firm"}],
  "preferred_allocation_deal_types": [
    {"name": "Seed", "key": "seed"},
    {"name": "Series A", "key": "series_a"},
    {"name": "Series B", "key": "series_b"}
  ],
  "preferred_countries": [
    {"name": "Indonesia", "iso_alpha3": "IDN"},
    {"name": "Singapore", "iso_alpha3": "SGP"},
    {"name": "Vietnam", "iso_alpha3": "VNM"}
  ],
  "preferred_themes": [
    {"name": "Payments", "key": "themes_payments"},
    {"name": "Business Applications / SaaS", "key": "themes_business_applications_saas"}
  ],
  "cheque_size_avg": 3000000,
  "cheque_size_min": 500000,
  "cheque_size_max": 10000000,
  "dry_powder": 85000000,
  "median_valuation": 45000000,
  "current_allocation": 115000000,
  "target_allocation": 200000000,
  "stated_count_of_investments": 38,
  "is_open_to_co_investment": true,
  "last_updated_at": "2025-10-16T07:33:30Z",
  "latest_aum": {
    "aum_value_usd": 200000000,
    "aum_value_date": "2024-12-31",
    "reporting_currency": {"iso_code": "USD"}
  },
  "actual_count_of_investments": 52,
  "actual_allocation_deal_types": ["Pre-Seed", "Seed", "Series A", "Series B", "Series C"],
  "actual_countries": ["SGP", "IDN", "MYS", "PHL", "THA", "VNM"],
  "actual_min_investment_amount_usd": 250000.00,
  "actual_max_investment_amount_usd": 8500000.00
}

Profile Fields

FieldTypeDescription
uuidstringCapital allocator profile UUID
display_namestringFirm or individual name
profile_typestring"legalentity" or "person"
typesarrayFirm-type classification (e.g. Venture Capital Firm, Family Office)
preferred_allocation_deal_typesarrayStated preferred deal stages
preferred_countriesarrayTarget geographies
preferred_themesarrayTarget investment themes
preferred_horizontalsarrayTarget horizontal tech categories
preferred_business_modelsarrayTarget business models
preferred_techsarrayTarget technology focus areas
cheque_size_avgnumberAverage cheque size in USD
cheque_size_minnumberMinimum cheque size in USD
cheque_size_maxnumberMaximum cheque size in USD
dry_powdernumberUndeployed capital in USD
current_allocationnumberCapital currently deployed in USD
target_allocationnumberTarget total allocation in USD
stated_count_of_investmentsintegerSelf-stated portfolio company count
is_open_to_co_investmentbooleanOpen to co-investment
actual_count_of_investmentsintegerActual count from transaction records
actual_allocation_deal_typesarrayDeal stages the firm has actually invested in
actual_countriesarrayCountries of portfolio companies
latest_aumobjectMost recent AUM record

actual_* fields are derived from real transaction records on the platform. preferred_* fields are self-declared by the firm. Compare the two to assess stated vs. actual investment behaviour.


Investments

Returns the portfolio — all companies this allocator has invested in.

curl "https://api.altdmp.io/v3/partners/capital-allocators/f80754f5-16c7-4aac-9cab-4149285c7220/investments/" \
  -H "Authorization: Bearer YOUR_TOKEN"
investments = requests.get(
    f"{BASE}/capital-allocators/{uuid}/investments/", headers=headers
).json()

Example response row:

{
  "count": 52,
  "next": "https://api.altdmp.io/v3/partners/capital-allocators/f80754f5-.../investments/?limit=20&offset=20",
  "previous": null,
  "results": [
    {
      "capital_receiver_uuid": "c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67",
      "legal_entity_uuid": "fee788ac-cffe-46f0-9bb5-fedb62992bd8",
      "capital_receiver_name": "Shopback",
      "shares_issued": 1500000.0,
      "shares_bought_secondary": 0.0,
      "shares_sold": 250000.0,
      "shares_currently_held": 1250000.0,
      "total_invested_usd": 7500000.00,
      "first_investment_date": "2019-04-30",
      "latest_investment_date": "2022-03-01"
    }
  ]
}

Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -latest_investment_date)
limitResults per page
offsetPagination offset

AUM History

Returns a time series of assets under management records.

curl "https://api.altdmp.io/v3/partners/capital-allocators/f80754f5-16c7-4aac-9cab-4149285c7220/aum/" \
  -H "Authorization: Bearer YOUR_TOKEN"
aum = requests.get(f"{BASE}/capital-allocators/{uuid}/aum/", headers=headers).json()

Example response:

{
  "count": 3,
  "next": null,
  "previous": null,
  "results": [
    {
      "aum_value_usd": 200000000,
      "aum_value_date": "2024-12-31",
      "reporting_currency": {"iso_code": "USD", "name": "US Dollar"}
    }
  ]
}

Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -aum_value_date)
limitResults per page
offsetPagination offset

LP Commitments

Returns commitments made by this allocator to funds (i.e. where this allocator acts as an LP).

Access to this endpoint is subject to your subscription.

curl "https://api.altdmp.io/v3/partners/capital-allocators/f80754f5-16c7-4aac-9cab-4149285c7220/commitments/" \
  -H "Authorization: Bearer YOUR_TOKEN"
commitments = requests.get(
    f"{BASE}/capital-allocators/{uuid}/commitments/", headers=headers
).json()

Example commitment row:

{
  "uuid": "...",
  "date": "2022-03-15",
  "investment_amount_usd": 25000000.00,
  "transaction_currency": {"iso_code": "USD"},
  "buyer": {"name": "Meridian Ventures Pte. Ltd.", "uuid": "f80754f5-...", "type": "capital_allocator"},
  "seller": {"name": "Acme Growth Fund III", "uuid": "...", "type": "fund"}
}

Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -date)
limitResults per page
offsetPagination offset

Financials

Returns historical financial records for this capital allocator’s underlying legal entity, ordered by most recent financial year end first. Each row includes year-over-year growth annotations.

Returns an empty list for allocators backed by a Person rather than a legal entity.

curl "https://api.altdmp.io/v3/partners/capital-allocators/f80754f5-16c7-4aac-9cab-4149285c7220/financials/" \
  -H "Authorization: Bearer YOUR_TOKEN"
financials = requests.get(
    f"{BASE}/capital-allocators/{uuid}/financials/", headers=headers
).json()

Example financials row:

{
  "financial_year_end": "2023-12-31",
  "total_revenue": "246422.00",
  "total_revenue_usd": "186310.00",
  "annual_total_revenue_yoy_growth_pct": "59.00",
  "operating_revenue": "246422.00",
  "operating_revenue_usd": "186310.00",
  "annual_operating_revenue_yoy_growth_pct": "59.00",
  "cogs": null,
  "cogs_usd": null,
  "annual_cogs_yoy_growth_pct": null,
  "gross_profit": null,
  "gross_profit_usd": null,
  "annual_gross_profit_yoy_growth_pct": null,
  "total_expenses": null,
  "total_expenses_usd": null,
  "annual_total_expenses_yoy_growth_pct": null,
  "earnings_before_tax": "-970799.00",
  "earnings_before_tax_usd": "-733918.00",
  "annual_earnings_before_tax_yoy_growth_pct": null,
  "income_tax_expenses": null,
  "income_tax_expenses_usd": null,
  "annual_income_tax_expenses_yoy_growth_pct": null,
  "earnings_after_tax": null,
  "earnings_after_tax_usd": null,
  "annual_earnings_after_tax_yoy_growth_pct": null,
  "liabilities": "832063.00",
  "liabilities_usd": "629187.00",
  "annual_liabilities_yoy_growth_pct": null,
  "reporting_currency": "SGD",
  "notes": null,
  "is_audited": true,
  "audit_opinion": {"key": "unqualified", "name": "Unqualified"},
  "is_consolidated": false,
  "is_restated": false
}

Financials Query Parameters

ParameterDescription
limitResults per page
offsetPagination offset

Cap Table

Returns the shareholding structure for this capital allocator’s underlying legal entity. The response shape depends on captable_source.type.

Returns an empty response for allocators backed by a Person.

curl "https://api.altdmp.io/v3/partners/capital-allocators/f80754f5-16c7-4aac-9cab-4149285c7220/captable/" \
  -H "Authorization: Bearer YOUR_TOKEN"
captable = requests.get(
    f"{BASE}/capital-allocators/{uuid}/captable/", headers=headers
).json()
source_type = captable["captable_source"]["type"]  # "managed" or "snapshot"

The response structure mirrors the Capital Receivers cap table — check captable_source.type to determine which fields are present.

Managed Cap Table Response

When captable_source.type is "managed", the cap table is derived from transaction records. Share counts and investment amounts are available.

{
  "captable_source": {"type": "managed"},
  "as_of_date": "2026-05-08",
  "aggregations": {
    "total_shares_issued": 10800000,
    "total_shares_held": 10800000
  },
  "results": [
    {
      "shareholder": {
        "uuid": "37c44afc-e55e-420c-bb2a-f9225a0d1c8e",
        "name": "Sequoia Capital Southeast Asia Fund III",
        "type": "FundProfile"
      },
      "shares_issued_absolute": 2000000,
      "shares_issued_aggregate": 2000000,
      "shares_sold_absolute": 0,
      "shares_sold_aggregate": 0,
      "shares_currently_held_absolute": 2000000,
      "shares_currently_held_aggregate": 2000000,
      "percentage_held_absolute": "18.50",
      "percentage_held_aggregate": "18.50",
      "total_invested_usd_absolute": 12000000.0,
      "total_invested_usd_aggregate": 12000000.0,
      "is_held_in_treasury": false
    }
  ]
}

Snapshot Cap Table Response

When captable_source.type is "snapshot", the cap table is sourced from a shareholder-register filing. Investment amounts are not available.

{
  "captable_source": {"type": "snapshot"},
  "as_of_date": "2024-12-31",
  "aggregations": null,
  "results": [
    {
      "shareholder": {
        "uuid": "fee788ac-cffe-46f0-9bb5-fedb62992bd8",
        "name": "GIC Private Limited",
        "type": "LegalEntity"
      },
      "number_of_shares": 3500000,
      "percentage_held": "32.40000",
      "is_former_shareholder": false,
      "start_date": "2020-06-01",
      "end_date": null
    }
  ]
}

Funds

Returns a paginated list of funds managed by this capital allocator.

Returns an empty list for allocators backed by a Person. To retrieve investments for a specific fund, use /partners/funds/{uuid}/investments/.

curl "https://api.altdmp.io/v3/partners/capital-allocators/f80754f5-16c7-4aac-9cab-4149285c7220/funds/" \
  -H "Authorization: Bearer YOUR_TOKEN"
funds = requests.get(
    f"{BASE}/capital-allocators/{uuid}/funds/", headers=headers
).json()

Example response:

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "legal_entity": {
        "uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        "display_name": "Sequoia Capital SEA Fund III",
        "registration_numbers": []
      },
      "display_name": "Sequoia Capital SEA Fund III",
      "description": "Southeast Asia-focused growth equity fund",
      "fund_managers": [
        {"uuid": "c3d4e5f6-a7b8-9012-cdef-123456789012", "display_name": "Sequoia Capital Southeast Asia"}
      ],
      "status": {"key": "closed", "name": "Closed"},
      "vintage_year": 2021,
      "is_raising_now": false,
      "last_updated_at": "2025-11-15T08:22:31Z"
    },
    {
      "uuid": "d4e5f6a7-b8c9-0123-defa-234567890123",
      "legal_entity": {
        "uuid": "e5f6a7b8-c9d0-1234-efab-345678901234",
        "display_name": "Sequoia Capital SEA Fund IV",
        "registration_numbers": []
      },
      "display_name": "Sequoia Capital SEA Fund IV",
      "description": null,
      "fund_managers": [
        {"uuid": "c3d4e5f6-a7b8-9012-cdef-123456789012", "display_name": "Sequoia Capital Southeast Asia"}
      ],
      "status": {"key": "raising", "name": "Raising"},
      "vintage_year": 2024,
      "is_raising_now": true,
      "last_updated_at": "2026-03-01T14:10:00Z"
    }
  ]
}

Funds Query Parameters

ParameterDescription
limitResults per page
offsetPagination offset

News

Returns paginated news articles linked to this capital allocator’s underlying legal entity.

Returns an empty list for allocators backed by a Person.

curl "https://api.altdmp.io/v3/partners/capital-allocators/f80754f5-16c7-4aac-9cab-4149285c7220/news/" \
  -H "Authorization: Bearer YOUR_TOKEN"
news = requests.get(
    f"{BASE}/capital-allocators/{uuid}/news/", headers=headers
).json()

Example response:

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "e7a3b2c1-...",
      "date": "2024-06-01",
      "headline": "Meridian Ventures Closes $200M Fund II",
      "body": "Meridian Ventures has held the final close of its second Southeast Asia-focused fund...",
      "source_url": "https://dealstreetasia.com/...",
      "type": {"name": "Fundraising", "key": "fundraising"}
    }
  ]
}

News Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -date)
limitResults per page
offsetPagination offset

Funds

Last updated: 19 June 2026

Fund profiles represent individual fund vehicles — each managed by one or more capital allocators. This covers venture capital funds, private equity funds, and other structured vehicles.

Endpoints

MethodEndpointAccess
GET/v3/partners/funds/Subscription required
POST/v3/partners/funds/Subscription required
GET/v3/partners/funds/{uuid}/Subscription required
GET/v3/partners/funds/{uuid}/performance/Subscription required
GET/v3/partners/funds/{uuid}/aum/Subscription required
GET/v3/partners/funds/{uuid}/commitments/Subscription required
GET/v3/partners/funds/{uuid}/investments/Subscription required
GET/v3/partners/funds/{uuid}/news/Subscription required

List Funds

curl "https://api.altdmp.io/v3/partners/funds/?search=Wavemaker" \
  -H "Authorization: Bearer YOUR_TOKEN"
import requests

BASE = "https://api.altdmp.io/v3/partners"
headers = {"Authorization": "Bearer YOUR_TOKEN"}

resp = requests.get(
    f"{BASE}/funds/",
    params={"search": "Wavemaker"},
    headers=headers,
)

Example response:

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "73541611-0738-46fb-abbd-7e9dcf74b00c",
      "display_name": "Wavemaker Pacific 1",
      "description": "Wavemaker Pacific 1 is a $66M early-stage fund focused on B2B and deep tech across Southeast Asia.",
      "vintage_year": 2017,
      "fund_managers": [
        {"uuid": "f80754f5-16c7-4aac-9cab-4149285c7220", "display_name": "Wavemaker Partners"}
      ],
      "status": {"name": "Closed", "key": "fund_status_closed"},
      "is_raising_now": false,
      "last_updated_at": "2025-10-16T07:33:30Z",
      "legal_entity": {
        "uuid": "fee788ac-...",
        "domicile_country": {"name": "Cayman Islands", "iso_alpha3": "CYM"},
        "headquarters": {"country_name": "Singapore", "country_iso_alpha3": "SGP"}
      }
    }
  ]
}

List Query Parameters

ParameterDescription
searchFull-text search on fund name
orderingSort field. Prefix with - for descending
limitResults per page
offsetPagination offset

Advanced Filter (POST)

Use POST with a JSON body for complex filters on fund attributes. The body accepts only the filters object; pass search, ordering, limit, and offset as query parameters.

# Cayman-domiciled funds targeting Southeast Asia at Series A or Series B
curl -X POST https://api.altdmp.io/v3/partners/funds/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "all": [
        {"op": "eq",  "field": "domicile_country_iso_alpha3",      "value": "CYM"},
        {"op": "in",  "field": "preferred_countries_iso_alpha3",   "value": ["SGP", "IDN", "MYS", "PHL", "THA", "VNM"]},
        {"op": "in",  "field": "preferred_allocation_types_names", "value": ["Series A", "Series B"]}
      ]
    }
  }'

# Active funds domiciled in Singapore
curl -X POST https://api.altdmp.io/v3/partners/funds/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "all": [
        {"op": "eq", "field": "domicile_country_iso_alpha3", "value": "SGP"},
        {"op": "eq", "field": "status_key",                 "value": "fund_status_active"}
      ]
    }
  }'
# Cayman-domiciled funds targeting SEA at Series A/B
resp = requests.post(
    f"{BASE}/funds/",
    headers=headers,
    json={
        "filters": {
            "all": [
                {"op": "eq",  "field": "domicile_country_iso_alpha3",      "value": "CYM"},
                {"op": "in",  "field": "preferred_countries_iso_alpha3",   "value": ["SGP", "IDN", "MYS", "PHL", "THA", "VNM"]},
                {"op": "in",  "field": "preferred_allocation_types_names", "value": ["Series A", "Series B"]},
            ]
        }
    },
)

Common Filter Fields

FieldTypeExample
domicile_country_iso_alpha3string"CYM"
domicile_country_namestring"Cayman Islands"
headquarters_country_iso_alpha3string"SGP"
headquarters_country_namestring"Singapore"
status_keystring"fund_status_active"
vintage_yearinteger2020
preferred_countries_iso_alpha3string"SGP"
preferred_allocation_types_namesstring"Series A"

Get Fund Detail

# Wavemaker Pacific 1
curl "https://api.altdmp.io/v3/partners/funds/73541611-0738-46fb-abbd-7e9dcf74b00c/" \
  -H "Authorization: Bearer YOUR_TOKEN"
uuid = "73541611-0738-46fb-abbd-7e9dcf74b00c"
fund = requests.get(f"{BASE}/funds/{uuid}/", headers=headers).json()

Full fund profile response:

{
  "uuid": "73541611-0738-46fb-abbd-7e9dcf74b00c",
  "display_name": "Meridian SEA Fund II",
  "description": "Meridian SEA Fund II is a $200M Series A and Series B fund focused on B2B SaaS and FinTech across Southeast Asia.",
  "vintage_year": 2022,
  "fund_managers": [
    {"display_name": "Meridian Ventures Pte. Ltd.", "uuid": "f80754f5-..."}
  ],
  "status": {"name": "Closed", "key": "fund_status_closed"},
  "is_raising_now": false,
  "term_years": 10,
  "structure": {"name": "Limited Partnership", "key": "fund_structure_lp"},
  "currency": {"iso_code": "USD", "name": "US Dollar"},
  "target_close_date": "2022-06-30",
  "latest_fund_size": {
    "aum_value_usd": 200000000.00,
    "aum_value_date": "2024-12-31"
  },
  "preferred_allocation_deal_types": [
    {"name": "Series A", "key": "series_a"},
    {"name": "Series B", "key": "series_b"}
  ],
  "preferred_countries": [
    {"name": "Singapore", "iso_alpha3": "SGP"},
    {"name": "Indonesia", "iso_alpha3": "IDN"},
    {"name": "Vietnam", "iso_alpha3": "VNM"}
  ],
  "preferred_themes": [
    {"name": "Payments", "key": "themes_payments"},
    {"name": "Business Applications / SaaS", "key": "themes_business_applications_saas"}
  ],
  "management_fee_percentage": 2.0,
  "gp_commitment_percentage": 2.0,
  "hurdle_percentage": 8.0,
  "carry_percentage": 20.0,
  "is_first_time_fund": false,
  "is_single_deal_fund": false,
  "is_continuation_fund": false,
  "last_updated_at": "2025-10-16T07:33:30Z"
}

Fund Profile Fields

FieldTypeDescription
uuidstringFund profile UUID
display_namestringFund name
vintage_yearintegerYear the fund was established / first close
fund_managersarrayManaging capital allocator(s)
statusobjectFund lifecycle status
is_raising_nowbooleanCurrently in fundraise
term_yearsintegerFund term in years
structureobjectLegal structure (e.g. Limited Partnership)
latest_fund_sizeobjectMost recent AUM record
management_fee_percentagenumberAnnual management fee %
gp_commitment_percentagenumberGP co-investment alongside LPs %
hurdle_percentagenumberPreferred return before carry %
carry_percentagenumberCarried interest %
is_first_time_fundbooleanManager’s first fund
is_single_deal_fundbooleanSPV / single-deal vehicle
is_continuation_fundbooleanContinuation vehicle
is_hybrid_fundbooleanHybrid structure

Real Funds for Testing

FundUUIDSizeVintage
Wavemaker Pacific 173541611-0738-46fb-abbd-7e9dcf74b00c$66M2017
Bain Capital Asia III50280c30-d626-44db-8aff-7cdf1eb323bb$3B2016

Fund Performance

Returns quarterly / annual performance metrics (IRR, DPI, TVPI). Each row is one reporting period.

curl "https://api.altdmp.io/v3/partners/funds/50280c30-d626-44db-8aff-7cdf1eb323bb/performance/" \
  -H "Authorization: Bearer YOUR_TOKEN"
performance = requests.get(
    f"{BASE}/funds/50280c30-d626-44db-8aff-7cdf1eb323bb/performance/",
    headers=headers,
).json()

Example performance row (Bain Capital Asia III, Q4 2024):

{
  "uuid": "...",
  "fund_uuid": "50280c30-d626-44db-8aff-7cdf1eb323bb",
  "date": "2024-12-31",
  "year": 2024,
  "quarter": "Q4",
  "irr": 0.18,
  "dpi": 1.3,
  "rvpi": 0.8,
  "net_multiple": 2.1,
  "profit_usd": 540000000.00,
  "drawdowns_usd": 2800000000.00,
  "committed_capital_usd": 3000000000.00,
  "source": "LP Reported",
  "source_type_key": "lp_reported",
  "currency": {"iso_code": "USD", "name": "US Dollar"},
  "last_updated_at": "2025-01-15T10:22:00Z"
}

Performance Fields

FieldTypeDescription
irrnumberInternal Rate of Return (e.g. 0.18 = 18%)
dpinumberDistributions to Paid-In multiple
rvpinumberResidual Value to Paid-In multiple
net_multiplenumberTotal Value to Paid-In (TVPI)
profit_usdnumberProfit in USD
drawdowns_usdnumberCapital drawn down in USD
committed_capital_usdnumberTotal committed capital in USD
currencyobjectReporting currency of the as-reported performance data (e.g. {"iso_code": "USD", "name": "US Dollar"}); monetary _usd fields are always USD-normalized regardless of this value
sourcestringData source label
source_type_keystringMachine-readable source type

Query Parameters

ParameterDescription
orderingSort field. Supported values: date, irr, dpi, rvpi, net_multiple (prefix with - for descending, default: -date)
limitResults per page
offsetPagination offset

AUM History

Returns a time series of fund size records.

curl "https://api.altdmp.io/v3/partners/funds/73541611-0738-46fb-abbd-7e9dcf74b00c/aum/" \
  -H "Authorization: Bearer YOUR_TOKEN"
aum = requests.get(f"{BASE}/funds/{uuid}/aum/", headers=headers).json()

Example response:

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "aum_value_usd": 66000000,
      "aum_value_date": "2024-12-31",
      "reporting_currency": {"iso_code": "USD", "name": "US Dollar"}
    }
  ]
}

Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -aum_value_date)
limitResults per page
offsetPagination offset

LP Commitments

Returns LP commitments into this fund — who invested and how much.

curl "https://api.altdmp.io/v3/partners/funds/50280c30-d626-44db-8aff-7cdf1eb323bb/commitments/" \
  -H "Authorization: Bearer YOUR_TOKEN"
commitments = requests.get(
    f"{BASE}/funds/50280c30-d626-44db-8aff-7cdf1eb323bb/commitments/",
    headers=headers,
).json()

Example commitment row (Bain Capital Asia III LP):

{
  "uuid": "...",
  "date": "2016-08-15",
  "allocation_type_key": "equity",
  "allocation_type_name": "Equity",
  "allocation_subtype_key": "limited_partner",
  "allocation_subtype_name": "Limited Partner",
  "investment_amount_usd": 50000000.00,
  "transactions": [
    {
      "uuid": "...",
      "investment_amount_usd": 50000000.00,
      "buyer": {
        "uuid": "...",
        "name": "GIC Private Limited",
        "type": "capital_allocator"
      }
    }
  ]
}

Response Fields

FieldTypeDescription
uuidstringCommitment UUID
datedate stringCommitment date
allocation_type_key / allocation_type_namestring, nullableAllocation type
allocation_subtype_key / allocation_subtype_namestring, nullableAllocation subtype
investment_amount_usdnumber, nullableTotal committed amount (USD)
transactionsarrayUnderlying transactions, one per committing LP. May be empty.
transactions[].uuidstringTransaction UUID
transactions[].investment_amount_usdnumber, nullableCommitted amount for this transaction (USD)
transactions[].buyerobject, nullableThe committing party (LP); null when no buyer is recorded. Resolves to its profile type (e.g. capital_allocator, fund) when known.

Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -date). Supported: date, investment_amount_usd, created_at, updated_at
limitResults per page
offsetPagination offset

Portfolio Investments

Returns aggregated investment data for companies this fund has invested in, including investments made through child entities (SPVs, etc.) in the ownership hierarchy.

curl "https://api.altdmp.io/v3/partners/funds/73541611-0738-46fb-abbd-7e9dcf74b00c/investments/" \
  -H "Authorization: Bearer YOUR_TOKEN"
investments = requests.get(f"{BASE}/funds/{uuid}/investments/", headers=headers).json()

Example response:

{
  "count": 14,
  "next": null,
  "previous": null,
  "results": [
    {
      "capital_receiver_uuid": "c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67",
      "legal_entity_uuid": "fee788ac-cffe-46f0-9bb5-fedb62992bd8",
      "capital_receiver_name": "Shopback",
      "shares_issued": 1500000.0,
      "shares_bought_secondary": 0.0,
      "shares_sold": 0.0,
      "shares_currently_held": 1500000.0,
      "total_invested_usd": 7500000.00,
      "first_investment_date": "2019-04-30",
      "latest_investment_date": "2022-03-01"
    }
  ]
}

Response Fields

FieldTypeDescription
capital_receiver_uuidstringUUID of the capital receiver profile — use with /capital-receivers/{uuid}/
legal_entity_uuidstringUUID of the underlying legal entity
capital_receiver_namestringCompany name
shares_issuednumberShares acquired via primary transactions
shares_bought_secondarynumberShares acquired via secondary purchases
shares_soldnumberShares sold via secondary transactions
shares_currently_heldnumberCurrent net shareholding
total_invested_usdnumberTotal cash invested in USD (primary transactions only)
first_investment_datedateDate of first investment
latest_investment_datedateDate of most recent investment

Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -latest_investment_date)
limitResults per page
offsetPagination offset

News

Returns paginated news articles linked to this fund.

curl "https://api.altdmp.io/v3/partners/funds/73541611-0738-46fb-abbd-7e9dcf74b00c/news/" \
  -H "Authorization: Bearer YOUR_TOKEN"
news = requests.get(f"{BASE}/funds/{uuid}/news/", headers=headers).json()

Example response:

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "b3c4d5e6-...",
      "date": "2022-06-30",
      "headline": "Wavemaker Pacific Closes $60M Fund at Final Close",
      "body": "Wavemaker Partners has announced the final close of Wavemaker Pacific 1...",
      "source_url": "https://dealstreetasia.com/...",
      "type": {"name": "Fundraising", "key": "fundraising"}
    }
  ]
}

News Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -date)
limitResults per page
offsetPagination offset

Investors

Last updated: 19 June 2026

The Investors endpoint is a unified cross-entity search across all investor types — VC firms, family offices, fund vehicles, legal entities, and individual people — in a single query. Use this when you know an entity invests but don’t know their entity type.

Endpoints

MethodEndpointAccess
GET/v3/partners/investors/Subscription required
POST/v3/partners/investors/Subscription required

List Investors

Each result row represents one investor × allocation type combination. An investor with both equity and debt investments appears as two separate rows.

curl "https://api.altdmp.io/v3/partners/investors/?search=Wavemaker" \
  -H "Authorization: Bearer YOUR_TOKEN"
import requests

BASE = "https://api.altdmp.io/v3/partners"
headers = {"Authorization": "Bearer YOUR_TOKEN"}

resp = requests.get(
    f"{BASE}/investors/",
    params={"search": "Wavemaker"},
    headers=headers,
)

Example response row:

{
  "uuid": "...",
  "name": "Wavemaker Group",
  "investor_type": "capital_allocator",
  "allocation_type_key": "equity",
  "allocation_type_name": "Equity",
  "total_invested_usd": 87500000.00,
  "no_of_invested_companies": 47,
  "first_investment_date": "2015-03-01",
  "latest_investment_date": "2024-11-20",
  "investments_by_deal_type": {
    "seed": {
      "amount_invested_usd": 12000000,
      "no_of_invested_companies": 18
    },
    "series_a": {
      "amount_invested_usd": 35000000,
      "no_of_invested_companies": 19
    },
    "series_b": {
      "amount_invested_usd": 40500000,
      "no_of_invested_companies": 10
    }
  }
}

Response Fields

FieldTypeDescription
uuidstringUUID of the investor entity
namestringInvestor display name
investor_typestringEntity type: legal_entity, capital_allocator, fund, person
allocation_type_keystringAsset class: equity, debt, commitment, other
allocation_type_namestringAsset class display name
total_invested_usdnumberTotal primary capital deployed (USD)
no_of_invested_companiesintegerDistinct companies invested in
first_investment_datestringDate of very first investment
latest_investment_datestringDate of most recent investment
investments_by_deal_typeobjectBreakdown by deal stage (amount + company count)

Query Parameters

ParameterDescription
searchFull-text search on investor name
investor_typeFilter by entity type: legal_entity, capital_allocator, fund, person
invested_in_stageFilter by deal stage key (e.g. seed, series_a)
invested_on_fromInvestments on or after this date (YYYY-MM-DD)
invested_on_toInvestments on or before this date (YYYY-MM-DD)
orderingSort field, prefix with - for descending
limitResults per page
offsetPagination offset

Filtering Examples

# All equity investors who made a Seed investment after 2022
curl "https://api.altdmp.io/v3/partners/investors/?invested_in_stage=seed&invested_on_from=2022-01-01" \
  -H "Authorization: Bearer YOUR_TOKEN"

# All investor types matching "Temasek"
curl "https://api.altdmp.io/v3/partners/investors/?search=Temasek" \
  -H "Authorization: Bearer YOUR_TOKEN"
# Seed investors after 2022
resp = requests.get(
    f"{BASE}/investors/",
    params={"invested_in_stage": "seed", "invested_on_from": "2022-01-01"},
    headers=headers,
)

# Search for Temasek
resp = requests.get(f"{BASE}/investors/", params={"search": "Temasek"}, headers=headers)

Advanced Filter (POST)

Supports the same fields as the GET query parameters, passed as a filters.all array in the request body. The body accepts only the filters object; pass search, ordering, limit, and offset as query parameters — sending them in the body returns 400 Bad Request.

Investor Filter Fields

FieldTypeExample
investor_typestring"capital_allocator", "fund", "legal_entity", "person"
namestring"Temasek"
invested_in_stagestring"seed", "series_a"
invested_on_fromdate string"2020-01-01"
invested_on_todate string"2024-12-31"
# Capital allocators named Wavemaker or East Ventures
curl -X POST https://api.altdmp.io/v3/partners/investors/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "all": [
        {"op": "eq", "field": "investor_type", "value": "capital_allocator"},
        {"op": "in", "field": "name", "value": ["Wavemaker Group", "East Ventures"]}
      ]
    }
  }'
resp = requests.post(
    f"{BASE}/investors/",
    headers=headers,
    json={
        "filters": {
            "all": [
                {"op": "eq", "field": "investor_type", "value": "capital_allocator"},
                {"op": "in", "field": "name", "value": ["Wavemaker Group", "East Ventures"]},
            ]
        }
    },
)

Tip: To get full detail on an investor returned here, take the uuid and investor_type and call the corresponding detail endpoint: /capital-allocators/{uuid}/, /funds/{uuid}/, /legal-entities/{uuid}/, or /people/{uuid}/.

People

Last updated: 19 June 2026

The People resource covers founders, directors, employees, advisors, and other individuals linked to companies or funds.

Endpoints

MethodEndpointAccess
GET/v3/partners/people/Subscription required
POST/v3/partners/people/Subscription required
GET/v3/partners/people/{uuid}/Subscription required
GET/v3/partners/people/{uuid}/roles/Subscription required
GET/v3/partners/people/{uuid}/investments/Subscription required
GET/v3/partners/people/{uuid}/news/Subscription required

List People

# All founders at Singapore companies
curl "https://api.altdmp.io/v3/partners/people/?role_type_key=person_association_founder" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Directors named "Chan"
curl "https://api.altdmp.io/v3/partners/people/?role_type_key=person_association_director&search=Chan" \
  -H "Authorization: Bearer YOUR_TOKEN"
import requests

BASE = "https://api.altdmp.io/v3/partners"
headers = {"Authorization": "Bearer YOUR_TOKEN"}

# All founders
founders = requests.get(
    f"{BASE}/people/",
    params={"role_type_key": "person_association_founder"},
    headers=headers,
).json()

# Directors named Chan
directors = requests.get(
    f"{BASE}/people/",
    params={"role_type_key": "person_association_director", "search": "Chan"},
    headers=headers,
).json()

Example response:

{
  "count": 3,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "f2eac778-a47b-497e-a4c6-ddd71335a404",
      "display_name": "Shanru Lai",
      "given_name": "Shanru",
      "family_name": "Lai",
      "location_country_name": "Singapore",
      "email": "shanru@shopback.com",
      "linkedin_url": "https://linkedin.com/in/shanrulai",
      "last_updated_at": "2025-10-16T07:33:30Z"
    }
  ]
}

List Query Parameters

ParameterDescription
searchName search across given and family name. Multiple words are matched independently, so full names like Shanru Lai match regardless of word order.
role_type_keyFilter by role: person_association_founder, person_association_director, person_association_employee, person_association_advisor
domicile_country_iso_alpha3Filter by the domicile-country ISO alpha-3 code of an associated organization. Repeatable or comma-separated (e.g. SGP,USA).
headquarters_country_iso_alpha3Filter by the headquarters-country ISO alpha-3 code of an associated organization. Repeatable or comma-separated.
orderingSort field
limitResults per page
offsetPagination offset

Advanced Filter (POST)

Use POST with a JSON body to filter people by name or location. The body accepts only the filters object; pass search, role_type_key, domicile_country_iso_alpha3, headquarters_country_iso_alpha3, ordering, limit, and offset as query parameters.

People Filter Fields

FieldTypeExample
given_namestring"Henry"
family_namestring"Chan"
location_country_namestring"Singapore"
location_country_iso_alpha3string"SGP"
role_type_keystring"person_association_founder"
role_type_namestring"Founder"
# Founders based in Singapore
curl -X POST https://api.altdmp.io/v3/partners/people/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "all": [
        {"op": "eq", "field": "role_type_key", "value": "person_association_founder"},
        {"op": "eq", "field": "location_country_iso_alpha3", "value": "SGP"}
      ]
    }
  }'
resp = requests.post(
    f"{BASE}/people/",
    headers=headers,
    json={
        "filters": {
            "all": [
                {"op": "eq", "field": "role_type_key", "value": "person_association_founder"},
                {"op": "eq", "field": "location_country_iso_alpha3", "value": "SGP"},
            ]
        }
    },
)

Get Person Detail

# ShopBack co-founder Shanru Lai
curl "https://api.altdmp.io/v3/partners/people/f2eac778-a47b-497e-a4c6-ddd71335a404/" \
  -H "Authorization: Bearer YOUR_TOKEN"
uuid = "f2eac778-a47b-497e-a4c6-ddd71335a404"
person = requests.get(f"{BASE}/people/{uuid}/", headers=headers).json()

Example response:

{
  "uuid": "f2eac778-a47b-497e-a4c6-ddd71335a404",
  "given_name": "Shanru",
  "family_name": "Lai",
  "email": "...",
  "linkedin_url": "https://linkedin.com/in/..."
}

Roles

Returns all organisational roles held by a person across their career.

curl "https://api.altdmp.io/v3/partners/people/f2eac778-a47b-497e-a4c6-ddd71335a404/roles/" \
  -H "Authorization: Bearer YOUR_TOKEN"
roles = requests.get(f"{BASE}/people/{uuid}/roles/", headers=headers).json()

Example role row:

{
  "uuid": "...",
  "role_type": {
    "name": "Founder",
    "key": "person_association_founder"
  },
  "organization": {
    "uuid": "fee788ac-cffe-46f0-9bb5-fedb62992bd8",
    "display_name": "Shopback",
    "profile_type": "capitalreceiverprofile"
  },
  "title": "Co-founder & CEO",
  "start_date": "2014-01-01",
  "end_date": null,
  "is_current": true,
  "email": null,
  "linkedin_url": null
}

Roles Query Parameters

ParameterDescription
role_type_key / role_type_nameFilter to specific role types
domicile_country_iso_alpha3Filter by the domicile-country ISO alpha-3 code of the associated organization. Repeatable or comma-separated.
headquarters_country_iso_alpha3Filter by the headquarters-country ISO alpha-3 code of the associated organization. Repeatable or comma-separated.

Role Type Keys

KeyDescription
person_association_founderFounder
person_association_directorBoard Director
person_association_employeeEmployee
person_association_advisorAdvisor

end_date: null means the person is currently in the role.


Personal Investments

Returns direct investments made by this person.

curl "https://api.altdmp.io/v3/partners/people/f2eac778-a47b-497e-a4c6-ddd71335a404/investments/" \
  -H "Authorization: Bearer YOUR_TOKEN"
investments = requests.get(f"{BASE}/people/{uuid}/investments/", headers=headers).json()

Example response:

{
  "count": 3,
  "next": null,
  "previous": null,
  "results": [
    {
      "capital_receiver_uuid": "c16a0ffd-4dbb-4f7b-a9ca-a3a47f93be67",
      "legal_entity_uuid": "fee788ac-cffe-46f0-9bb5-fedb62992bd8",
      "capital_receiver_name": "Shopback",
      "shares_issued": 500000.0,
      "shares_bought_secondary": 0.0,
      "shares_sold": 0.0,
      "shares_currently_held": 500000.0,
      "total_invested_usd": 250000.00,
      "first_investment_date": "2014-01-01",
      "latest_investment_date": "2014-01-01"
    }
  ]
}

Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -latest_investment_date)
limitResults per page
offsetPagination offset

News

Returns paginated news articles linked to this person.

curl "https://api.altdmp.io/v3/partners/people/f2eac778-a47b-497e-a4c6-ddd71335a404/news/" \
  -H "Authorization: Bearer YOUR_TOKEN"
news = requests.get(f"{BASE}/people/{uuid}/news/", headers=headers).json()

Example response:

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "a1b2c3d4-...",
      "date": "2023-03-10",
      "headline": "ShopBack Co-founder Shanru Lai Steps Down as CEO",
      "body": "Shanru Lai, co-founder of ShopBack, has transitioned out of the CEO role...",
      "source_url": "https://techinasia.com/...",
      "type": {"name": "Leadership Change", "key": "leadership_change"}
    }
  ]
}

News Query Parameters

ParameterDescription
orderingSort field. Prefix with - for descending (default: -date)
limitResults per page
offsetPagination offset

Service Providers

Last updated: 8 May 2026

Service providers are professional-services firms linked to companies — most commonly auditors, but also legal counsel, fund administrators, placement agents, and more.

Endpoints

MethodEndpointAccess
GET/v3/partners/service-providers/Subscription required
POST/v3/partners/service-providers/Subscription required
GET/v3/partners/service-providers/{uuid}/Subscription required

List Service Providers

# All auditors
curl "https://api.altdmp.io/v3/partners/service-providers/?service_type=service_provider_type_audit" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Find Ernst & Young
curl "https://api.altdmp.io/v3/partners/service-providers/?search=Ernst+%26+Young" \
  -H "Authorization: Bearer YOUR_TOKEN"
import requests

BASE = "https://api.altdmp.io/v3/partners"
headers = {"Authorization": "Bearer YOUR_TOKEN"}

# All auditors
auditors = requests.get(
    f"{BASE}/service-providers/",
    params={"service_type": "service_provider_type_audit"},
    headers=headers,
).json()

# Find EY
ey = requests.get(
    f"{BASE}/service-providers/",
    params={"search": "Ernst & Young"},
    headers=headers,
).json()

Example response:

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "a3f1b2c4-...",
      "display_name": "Ernst & Young LLP",
      "service_types": [
        {"name": "Audit", "key": "service_provider_type_audit"}
      ],
      "legal_entity": {
        "uuid": "d9e2f3a4-...",
        "domicile_country": {"name": "Singapore", "iso_alpha3": "SGP"},
        "headquarters": {"country_name": "Singapore", "country_iso_alpha3": "SGP"}
      },
      "last_updated_at": "2025-10-16T07:33:30Z"
    }
  ]
}

Query Parameters

ParameterDescription
searchFull-text search on firm name
service_typeFilter by service type key (see table below)
orderingSort field
limitResults per page
offsetPagination offset

Service Type Keys

KeyDescription
service_provider_type_auditAuditor
service_provider_type_taxTax advisor
service_provider_type_complianceCompliance advisor
service_provider_type_law_firmLaw firm
service_provider_type_investment_bankInvestment bank
service_provider_type_placement_agentPlacement agent
service_provider_type_fund_administratorFund administrator
service_provider_type_lenderLender
service_provider_type_valuation_firmValuation firm
service_provider_type_management_consultantManagement consultant

Get Service Provider Detail

curl "https://api.altdmp.io/v3/partners/service-providers/{uuid}/" \
  -H "Authorization: Bearer YOUR_TOKEN"
uuid = "..."
provider = requests.get(f"{BASE}/service-providers/{uuid}/", headers=headers).json()

Example response (Ernst & Young LLP):

{
  "uuid": "...",
  "display_name": "Ernst & Young LLP",
  "service_types": [
    {"name": "Auditor", "key": "service_provider_type_audit"}
  ],
  "legal_entity": {
    "uuid": "...",
    "display_name": "Ernst & Young LLP",
    "domicile_country": {"name": "Singapore", "iso_alpha3": "SGP"},
    "registration_numbers": [
      {"reg_number": "...", "authority_name": "ACRA", "authority_label": "UEN"}
    ]
  }
}

Reference Data

Last updated: 5 May 2026

The reference data endpoint exposes the full set of taxonomies and lookup lists used across the Partner API. Use it to build filter dropdowns, validate field values, and understand what keys are valid.

Cache this response. Reference data changes infrequently. Fetch it once at startup and cache it locally rather than calling it on every user interaction.

Endpoint

MethodEndpointAccess
GET/v3/partners/reference-data/Subscription required

Fetch All Reference Data

curl "https://api.altdmp.io/v3/partners/reference-data/" \
  -H "Authorization: Bearer YOUR_TOKEN"
import requests

BASE = "https://api.altdmp.io/v3/partners"
headers = {"Authorization": "Bearer YOUR_TOKEN"}

ref = requests.get(f"{BASE}/reference-data/", headers=headers).json()

Fetch Specific Sections

Use the type parameter to request only the data you need:

# Only enums and countries
curl "https://api.altdmp.io/v3/partners/reference-data/?type=enums,countries" \
  -H "Authorization: Bearer YOUR_TOKEN"

# Only specific enum categories
curl "https://api.altdmp.io/v3/partners/reference-data/?type=enums&enum_categories=allocation_types,themes" \
  -H "Authorization: Bearer YOUR_TOKEN"
# Fetch only enums
enums = requests.get(
    f"{BASE}/reference-data/",
    params={"type": "enums"},
    headers=headers,
).json()

# Fetch specific categories
resp = requests.get(
    f"{BASE}/reference-data/",
    params={"type": "enums", "enum_categories": "allocation_types,themes"},
    headers=headers,
).json()

type Parameter Values

ValueReturns
enumsAll enumerated choice values grouped by category
countriesAll countries with iso_alpha3 and name
citiesCities with name, state_name, and country_iso_alpha3
industriesIndustry codes with code and description
business_sic_codesBusiness SIC codes with code, description, and country_iso_alpha3

Omit type to fetch all sections at once.


Enum Categories

When type=enums is requested, use enum_categories to narrow to specific groups:

Category KeyExample Values
allocation_typesEquity, Debt, Commitment, Other
allocation_subtypesVenture Capital (VC), Private Equity (PE), M&A, Distressed Transactions, Liquidity Events
allocation_deal_typesPre-Seed, Seed, Series A–F, Buyout / LBO, Growth / Expansion, IPO, Secondary Transaction, Convertible Debt, Term Loan, Bridge Loan
capital_allocator_typesVenture Capital Firm, Private Equity Firm, Family Office – Single, Family Office – Multi, Sovereign Wealth Fund, Pension Fund, Endowment Fund Manager, Fund of Funds Manager, Corporate Investor, Banking Institution, Development Finance Institution (DFI), Wealth / Asset Manager
capital_allocator_allocates_fromFund, Balance Sheet, Both
person_role_typesFounder, Director, Employee, Advisor
service_typesAudit, Tax, Compliance, Law Firm, Investment Bank, Placement Agent, Fund Administrator, Lender, Valuation Firm, Management Consultant
preferred_fund_typesVenture Capital, Private Equity, Hedge Fund, Real Estate, Infrastructure
fund_statusesAnnounced, Raising, First Close, Second Close, Open, Closed, Evergreen, Liquidated, Upcoming
trading_statusesOperating, Inactive, Closed
deal_provenancesFiled with Regulator, Self-Declared, News / Media, Research
fund_performance_sourcesLimited Partner, General Partner
business_modelsB2B (Business-to-Business), B2C (Business-to-Consumer), P2P (Peer-to-Peer)
techsAgriTech, BioTech, CleanTech, DeepTech, EduTech, EnergyTech, FinTech, GovTech, HealthTech, HRTech, InsurTech, LegalTech, MarTech, PropTech
themesAI / GenAI / ML, Business Applications / SaaS, Buy Now Pay Later (BNPL), Climate / Green / Clean, Cybersecurity, Data Management & Analytics, Digital / Neo Banking, Digital Health Solutions, Payments, Quantum Computing, Smart City, Web 3 / Blockchain, Wellness
horizontalsAI / GenAI / ML, AR / VR / XR / Spatial Computing, Cloud / Edge Computing, Collaboration & Productivity Suites, Connectivity & Communications, Data Management & Analytics, IoT (Internet of Things), Marketplaces

Example Response Structure

{
  "enums": {
    "allocation_types": [
      {"name": "Equity", "key": "equity"},
      {"name": "Debt", "key": "debt"},
      {"name": "Commitment", "key": "commitment"},
      {"name": "Other", "key": "other"}
    ],
    "allocation_deal_types": [
      {"name": "Pre-Seed", "key": "pre_seed"},
      {"name": "Seed", "key": "seed"},
      {"name": "Series A", "key": "series_a"},
      {"name": "Series B", "key": "series_b"}
    ],
    "themes": [
      {"name": "AI / GenAI / ML", "key": "themes_ai_genai_ml"},
      {"name": "FinTech", "key": "themes_fintech"},
      {"name": "Payments", "key": "themes_payments"}
    ]
  },
  "countries": [
    {"name": "Singapore", "iso_alpha3": "SGP"},
    {"name": "Indonesia", "iso_alpha3": "IDN"},
    {"name": "Malaysia", "iso_alpha3": "MYS"},
    {"name": "Philippines", "iso_alpha3": "PHL"},
    {"name": "Thailand", "iso_alpha3": "THA"},
    {"name": "Vietnam", "iso_alpha3": "VNM"}
  ]
}

Usage Pattern

# Load reference data once at startup and cache
ref = requests.get(f"{BASE}/reference-data/?type=enums,countries", headers=headers).json()

# Build a lookup: key -> display name for deal types
deal_type_map = {
    item["key"]: item["name"]
    for item in ref["enums"]["allocation_deal_types"]
}

# Use it to label API results
for deal in deals["results"]:
    label = deal_type_map.get(deal["allocation_deal_type_key"], deal["allocation_deal_type_key"])
    print(f"{deal['date']}: {label}")

Changelog

Last updated: 1 July 2026

A log of changes to the Partner API. Most recent first.

2026-07-01

⚠️ Breaking: capital receiver funding fields renamed and expanded

This is a breaking change. Field names were removed and renamed with no backward-compatible aliases. Requests that read, filter, or sort by the old names will break — filtering or ordering by a removed name now returns 400 Bad Request, and responses no longer contain the old keys. Update your integration before this release reaches you.

The funding object on the capital-receiver detail response has been standardized (a hard cutover — the old field names are gone, with no aliases):

The total_funding_amount_usd filter and ordering key was renamed to total_funding_usd to match the response field; the old name now returns 400 Bad Request. latest_valuation_usd is unchanged. Filtering, ordering, and the response body now use one identical set of names.

Semantics also changed: null now means unknown while "0.00" means known-zero; public-listed companies return null for all funding and valuation amounts (but keep funding_status); and funding totals now count all primary funding regardless of deal subtype or type. See Capital Receivers → The funding object.

Per-plan endpoint access documented

Added a Plans & Access page listing every endpoint and whether it’s included with the Atlas or Allocate plan. Notable differences: Funds and capital-allocator LP commitments are Atlas-only, while the capital-receivers list/search endpoint is Allocate-only. Custom plans are defined by their own agreements and are not covered by the matrix.

2026-06-29

Rate limits documented

The API is rate limited to 320 requests per rolling 1-minute window. Exceeding the limit returns 429 Too Many Requests with a Retry-After header indicating how long to wait before retrying. See Authentication → Rate Limits for guidance on backoff and retries.

2026-06-19

POST filter body is now strict

On every list endpoint that accepts a POST advanced filter (capital receivers, capital allocators, funds, investors, people, service providers), the request body now accepts only the filters object. search, ordering, limit, and offset must be passed as query parameters — sending them in the body now returns 400 Bad Request instead of being silently ignored.

# Pagination and sorting go on the query string; only filters in the body
curl -X POST "https://api.altdmp.io/v3/partners/capital-receivers/?ordering=-latest_valuation_usd&limit=100" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"all": [{"op": "eq", "field": "headquarters_country_iso_alpha3", "value": "SGP"}]}}'

Validated ordering

The ordering parameter is now validated against a per-endpoint list of supported fields. An unsupported value returns 400 Bad Request with the list of valid fields, rather than a server error or being silently ignored.

People — country filters

GET /v3/partners/people/ and GET /v3/partners/people/{uuid}/roles/ now accept domicile_country_iso_alpha3 and headquarters_country_iso_alpha3 query parameters, filtering on an associated organization’s country. Both are repeatable or comma-separated (e.g. SGP,USA).

The search parameter on people now matches each word independently across given and family name, so a full name such as Shanru Lai matches regardless of word order.

Fund LP commitments — committing parties

GET /v3/partners/funds/{uuid}/commitments/ now returns a transactions[] array on each commitment, exposing the underlying transactions and the committing party (the LP) as transactions[].buyer. The previous top-level transaction_currency, buyer, and seller fields are not part of this endpoint’s response.

Capital receivers — search and registration number

GET /v3/partners/capital-receivers/ search now also matches alternate names, description, and registration number. A registration_number query parameter is available to filter directly by company registration number. is_raising_now is a POST filter field only — not a GET query parameter.