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 Type | What It Represents | Example |
|---|---|---|
| Capital Receivers | Companies and startups that have raised funding | ShopBack |
| Capital Allocators | Investors (VC firms, family offices, PE funds) that deploy capital | Wavemaker Group |
| Funds | Individual fund vehicles managed by a capital allocator | Wavemaker Pacific 1, Bain Capital Asia III |
| People | Founders, directors, and other individuals linked to companies | Shanru Lai (ShopBack co-founder) |
| Investors | Unified cross-entity investor search | Any entity that has made an investment |
| Service Providers | Auditors and professional-services firms | Ernst & Young LLP |
| Legal Entities | Underlying registered companies — returned as a nested object on profile detail responses | Any registered business |
| Reference Data | Taxonomies and lookup lists for filter fields | Countries, 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:
GET— query-string filters (search,ordering,limit,offset)POST— JSON body for advanced range queries, multi-value filters, and boolean logic
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.
| Type | How it works | What’s available |
|---|---|---|
managed | Cap 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. |
snapshot | Cap 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
| Goal | How |
|---|---|
| Company profile, funding history, cap table | GET /capital-receivers/{uuid}/ → /deals/ → /captable/ |
| Current shareholders for a company | GET /capital-receivers/{uuid}/captable/ |
| Total invested per investor with deal-stage breakdown | GET /capital-receivers/{uuid}/investors/ (managed cap table only) |
| Find VC firms active in SEA at Seed stage | GET /investors/?investor_type=capital_allocator&invested_in_stage=seed |
| Fund performance, LP list, size history | GET /funds/{uuid}/performance/ + /aum/ + /commitments/ |
| Look up a founder or director by name | GET /people/?role_type_key=person_association_founder&search=Henry+Chan |
| Registration number lookup | GET /capital-receivers/?search=<name> — registration numbers are in the legal_entity object on the detail response |
| Build filter dropdowns in a UI | GET /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 Forbiddenresponse 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:
- Honor
Retry-After. When you receive a429, wait the number of seconds it specifies before sending the next request, then retry. Do not retry immediately. - Back off on repeated
429s. If retries keep failing, increase the delay between attempts (exponential backoff) rather than retrying at a fixed interval. - Spread out bulk work. Page through large result sets steadily and avoid issuing requests in tight, unthrottled bursts.
Error Responses
| Status | Meaning |
|---|---|
400 Bad Request | Malformed 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 Unauthorized | Missing or invalid Bearer token |
403 Forbidden | Token is valid but your organisation’s subscription does not include access to that endpoint |
429 Too Many Requests | Rate 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:
- 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.
- Endpoint entitlement. Each endpoint is individually gated by your plan. If your plan doesn’t include an endpoint, calling it returns
403 Forbiddeneven 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:
| Area | Atlas | Allocate |
|---|---|---|
| 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
| Method | Endpoint | Atlas | Allocate |
|---|---|---|---|
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
| Method | Endpoint | Atlas | Allocate |
|---|---|---|---|
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
| Method | Endpoint | Atlas | Allocate |
|---|---|---|---|
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
| Method | Endpoint | Atlas | Allocate |
|---|---|---|---|
GET / POST | /v3/partners/investors/ | ✓ | ✓ |
People
| Method | Endpoint | Atlas | Allocate |
|---|---|---|---|
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
| Method | Endpoint | Atlas | Allocate |
|---|---|---|---|
GET / POST | /v3/partners/service-providers/ | ✓ | ✓ |
GET | /v3/partners/service-providers/{uuid}/ | ✓ | ✓ |
Reference Data
| Method | Endpoint | Atlas | Allocate |
|---|---|---|---|
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
| Area | v2 | v3 |
|---|---|---|
| Base URL | https://api.alternatives.pe/api/v2/ | https://api.altdmp.io/v3/partners/ |
| Authentication | OAuth2 client credentials → /api/v2/oauth/token | API key → POST /v3/token/issue/ (via PropelAuth) |
| Identifiers | Integer IDs ("id": 1234) | UUIDs ("uuid": "c16a0ffd-…") |
| Pagination envelope | {"data": {"data": [...], "total_records": N, ...}} | {"count": N, "next": "…", "previous": "…", "results": [...]} |
| Max page size | 100 | 1000 (default 20) |
| Ordering | order_by + order_direction | Single ordering param with - prefix for descending |
| Filtering | Query-string only | Query-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 |
| Classification | Sector / theme driven | Five dimensions: themes, techs, business_models, industries, horizontals |
| Money fields | Mixed currency for fund performance fields; company financials already USD | USD-normalized, _usd suffix (explicit in field names for both) |
Breaking Semantic Changes
These are not syntactic renames — they change meaning and require deliberate handling:
- Investors split by allocation type. An investor with both equity and debt allocations now appears as two separate records in API responses — one per allocation type.
- Sectors deprecated.
v3.industriesis a different classification system, not a rename ofv2.sectors. Do not treat industry codes as mapped equivalents of sector IDs. - Theme taxonomy reworked.
v3.themesare not 1:1 withv2.themes. Treat the five-dimension classification as a new framework to adopt explicitly. date_incorporatedbecomesyear_founded. Year only — month and day are no longer exposed.nameis nested.v2.namemaps tov3.legal_entity.display_name, not a top-level field.headquatersspelling fixed. v2 had a typo; v3 usesheadquarters.
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
POSTbody accepts only thefiltersobject.search,ordering,limit, andoffsetare always query parameters — sending them in the body returns400 Bad Request.
# v2
GET /api/v2/companies?countries=SGP,THA§ors=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
| Category | Operators |
|---|---|
| Equality | eq, ne |
| Set membership | in, nin |
| String | contains, ncontains, startswith, endswith |
| Numeric / date | gt, gte, lt, lte, range |
| Null | isnull, notnull |
| Logical | all (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 param | v3 equivalent |
|---|---|
query | search query param |
countries | POST headquarters_country_iso_alpha3 or domicile_country_iso_alpha3 |
sectors | Deprecated — industries_codes is available but uses a different classification |
themes | POST themes_names or themes_keys (taxonomy overhauled) |
investment_stage | POST latest_investment_stage_name or latest_investment_stage_key |
valuation_min / valuation_max | POST latest_valuation_usd with gte / lte |
revenue_min / revenue_max | POST latest_operating_revenue_usd with gte / lte |
revenue_growth_min / revenue_growth_max | POST operating_revenue_growth_yoy_pct with gte / lte |
total_funding_min / total_funding_max | total_funding_min / total_funding_max query params, or POST total_funding_usd with gte / lte |
status | POST trading_status_name |
female_founder | POST is_female_founder |
iso_code | POST domicile_country_iso_alpha3 |
order_by + order_direction | ordering (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:
| Dimension | Description |
|---|---|
themes | Thematic groupings (e.g., FinTech, AI, ClimateTech). Taxonomy was overhauled — not 1:1 with v2 themes. |
techs | Underlying technology focus. |
business_models | How the business makes money (Marketplace, SaaS, etc.). |
industries | Different classification system from v2 sectors. Uses string codes ("08", "10") instead of integer IDs. |
horizontals | Cross-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.
Response Structure: Nested Legal Entity
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 Endpoint | v3 Equivalent | Notes |
|---|---|---|
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}/uen | GET /v3/partners/capital-receivers/?registration_number={uen} | UEN lookup via query param |
GET /api/v2/companies/{id}/financials | Multiple v3 endpoints | See 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 source | v3 equivalent |
|---|---|
| Basic funding block | GET /v3/partners/capital-receivers/{uuid}/ (detail — funding object) |
| Funding rounds | GET /v3/partners/capital-receivers/{uuid}/deals/ |
| Shareholders | GET /v3/partners/capital-receivers/{uuid}/investors/ |
| Cap table | GET /v3/partners/capital-receivers/{uuid}/captable/ |
| Multi-year financials | GET /v3/partners/capital-receivers/{uuid}/ (financials[] array on detail) |
Capital Providers → Capital Allocators
| v2 Endpoint | v3 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 Endpoint | v3 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 Endpoint | v3 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=X | GET /v3/partners/people/?search=X |
Auditors → Service Providers
| v2 Endpoint | v3 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)
| Endpoint | What 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 Field | v3 Field | Notes |
|---|---|---|
id | uuid | Changed to UUID |
name | legal_entity.display_name | Nested |
uen | legal_entity.registration_numbers[].reg_number | Nested; each item includes authority_type and authority_name |
description | legal_entity.description | Nested |
url / website | legal_entity.website_url | Renamed |
database | legal_entity.domicile_country.iso_alpha3 | Renamed to domicile |
headquaters | legal_entity.headquarters.country_iso_alpha3 | Spelling fixed; nested object |
date_incorporated | legal_entity.year_founded | Year only in v3 |
investment_stage | funding.latest_investment_stage_name | Derived from most recent active deal |
total_equity_funding | funding.reported_and_filed_equity_usd | Detail only; USD string. Total equity is also broken out into filed_equity_usd / reported_equity_usd; funding.total_funding_usd adds debt |
last_valuation | funding.latest_valuation_usd | Available on list and detail; v2 values were already USD at import — v3 makes it explicit |
size_of_last_round | funding.latest_investment_amount | Detail only |
date_of_last_round | funding.latest_investment_date | — |
revenue | latest_financials.operating_revenue_usd | Latest snapshot on list; historical array on detail; v2 values were already USD at import — v3 makes it explicit |
financial_year_end | latest_financials.financial_year_end | — |
revenue_growth | latest_financials.operating_revenue_growth_yoy_pct | YoY percentage |
ebit | latest_financials.earnings_before_tax_usd | Renamed; v2 values were already USD at import — v3 makes it explicit |
liabilities | latest_financials.liabilities_usd | v2 values were already USD at import — v3 makes it explicit |
status | legal_entity.trading_status.name | v3 trading status enum; do not preserve v2 semantics |
company_raising | is_raising_now | Boolean (was nullable) |
female_founder | legal_entity.is_female_founder | Boolean (was 0/1) |
sectors | (deprecated) | Do not treat industries as a direct replacement |
themes | themes[] | Taxonomy overhauled; {"key": "theme_fintech", "name": "FinTech"} |
updated_at | last_updated_at | ISO datetime in v3 |
exit_type, liquidation, liquidation_details | (deprecated) | Use funding_status + transaction flags |
Capital Providers → Capital Allocators
| v2 Field | v3 Field | Notes |
|---|---|---|
investor_id | uuid | |
name | display_name | |
type | types[].name | |
country | legal_entity.domicile_country.name | |
aum | latest_aum.aum_value_usd | |
stages | preferred_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 Field | v3 Field | Notes |
|---|---|---|
irr | irr | |
tvpi | tvpi | Total Value to Paid-In |
dpi | dpi | Distributions to Paid-In |
rvpi | rvpi | Residual Value to Paid-In |
net_irr | net_irr | |
gross_irr | gross_irr | |
as_of_date | as_of_date | Performance date |
currency | currency.iso_code | v2 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 |
provenance | provenance.name | Data source |
Commitment Deals
| v2 Field | v3 Field | Notes |
|---|---|---|
id | uuid | Changed to UUID |
fund_id | Parent URL | Use /funds/{uuid}/commitments/ |
fund_name | Parent resource | Get from fund detail |
lp_id | Different endpoint | Use /capital-allocators/{uuid}/commitments/ |
lp_name | Via allocator detail | |
commitment_amount | investment_amount_usd | |
commitment_date | date | |
vintage | fund.vintage_year | From fund |
currency | transaction_currency.iso_code | |
provenance | provenance.name |
Method Matrix
Complete endpoint reference for the v3 Partner API surface.
Capital Receivers
| Method | Endpoint | Purpose | Key params / body |
|---|---|---|---|
GET | /v3/partners/capital-receivers/ | List | search, ordering, registration_number, limit, offset |
POST | /v3/partners/capital-receivers/ | Filter | JSON filters, search, ordering, limit, offset |
GET | /v3/partners/capital-receivers/{uuid}/ | Detail | — |
GET | /v3/partners/capital-receivers/{uuid}/financials/ | Detailed financials | limit, offset |
GET | /v3/partners/capital-receivers/{uuid}/investors/ | Investors in this entity | limit, offset |
GET | /v3/partners/capital-receivers/{uuid}/deals/ | Funding rounds + transactions | search, ordering, limit, offset |
POST | /v3/partners/capital-receivers/{uuid}/deals/ | Filter funding rounds | JSON filters, search, ordering, limit, offset |
GET | /v3/partners/capital-receivers/{uuid}/news/ | News articles | ordering, limit, offset |
Capital Allocators
| Method | Endpoint | Purpose | Key params / body |
|---|---|---|---|
GET | /v3/partners/capital-allocators/ | List | search, ordering, limit, offset |
POST | /v3/partners/capital-allocators/ | Filter | JSON filters, search, ordering, limit, offset |
GET | /v3/partners/capital-allocators/{uuid}/ | Detail | — |
GET | /v3/partners/capital-allocators/{uuid}/commitments/ | Commitments by allocator | ordering, limit, offset |
GET | /v3/partners/capital-allocators/{uuid}/aum/ | Allocator AUM history | ordering, limit, offset |
GET | /v3/partners/capital-allocators/{uuid}/investments/ | Investments by allocator | limit, offset |
GET | /v3/partners/capital-allocators/{uuid}/financials/ | Historical financial statements | limit, offset |
GET | /v3/partners/capital-allocators/{uuid}/captable/ | Cap table for allocator’s legal entity | limit, offset |
GET | /v3/partners/capital-allocators/{uuid}/funds/ | Fund profiles managed by allocator | limit, offset |
GET | /v3/partners/capital-allocators/{uuid}/news/ | News articles | ordering, limit, offset |
Funds
| Method | Endpoint | Purpose | Key params / body |
|---|---|---|---|
GET | /v3/partners/funds/ | List | search, ordering, limit, offset |
POST | /v3/partners/funds/ | Filter | JSON filters, search, ordering, limit, offset |
GET | /v3/partners/funds/{uuid}/ | Detail | — |
GET | /v3/partners/funds/{uuid}/performance/ | Performance history | ordering, limit, offset |
GET | /v3/partners/funds/{uuid}/aum/ | AUM / size history | ordering, limit, offset |
GET | /v3/partners/funds/{uuid}/commitments/ | Commitments to fund | ordering, limit, offset |
GET | /v3/partners/funds/{uuid}/investments/ | Investments by fund | limit, offset |
GET | /v3/partners/funds/{uuid}/news/ | News articles | ordering, limit, offset |
People
| Method | Endpoint | Purpose | Key params / body |
|---|---|---|---|
GET | /v3/partners/people/ | List | search, role_type_key, role_type_name, ordering, limit, offset |
POST | /v3/partners/people/ | Filter | JSON filters, search, role_type_key, role_type_name, ordering, limit, offset |
GET | /v3/partners/people/{uuid}/ | Detail | — |
GET | /v3/partners/people/{uuid}/roles/ | Org roles | role_type_key, role_type_name, limit, offset |
GET | /v3/partners/people/{uuid}/investments/ | Investments by person | limit, offset |
GET | /v3/partners/people/{uuid}/news/ | News articles | ordering, limit, offset |
Investors
| Method | Endpoint | Purpose | Key params / body |
|---|---|---|---|
GET | /v3/partners/investors/ | Discover investors | investor_type, search, invested_in_stage, invested_on_from, invested_on_to, ordering, limit, offset |
POST | /v3/partners/investors/ | Filter discovery | JSON filters with investor_type and/or name/search, plus pagination |
Service Providers
| Method | Endpoint | Purpose | Key params / body |
|---|---|---|---|
GET | /v3/partners/service-providers/ | List | service_type, search, ordering, limit, offset |
POST | /v3/partners/service-providers/ | Filter | JSON filters, service_type, search, ordering, limit, offset |
GET | /v3/partners/service-providers/{uuid}/ | Detail | — |
Reference Data
| Method | Endpoint | Purpose | Key params / body |
|---|---|---|---|
GET | /v3/partners/reference-data/ | Enums, countries, cities, industries, SIC codes | type, enum_categories |
Coverage Gap Summary
v2 fields, filters, and endpoints that have no direct v3 equivalent.
Fields Not in v3
| Category | v2 field(s) | Severity | Workaround |
|---|---|---|---|
| Companies | additional_ids | Low | Not migrated. |
| Companies | size_of_last_round, date_of_last_round | Medium | Available on CR detail as funding.latest_investment_amount and funding.latest_investment_date. |
| Companies | date_incorporated (full date) | Low | v3 only has year_founded (year only). |
| Companies | liquidation_details | Low | Deprecated; no v3 replacement. |
| Company Financials | fundings[] pre-money valuation | Medium | Per-round detail available via /capital-receivers/{uuid}/deals/. pre_money_valuation is not exposed. |
| Company Financials | additional_fundings[] (news-sourced rounds) | Medium | Not in Partner API. |
| Company Financials | revenue[] multi-year history | Medium | CR detail has financials[]. For fuller history use Platform /legal-entities/{uuid}/financials/. |
| Company Financials | shareholders[].value_of_investment_at_last_round_valuation | Medium | Not in Partner API. |
| Company Financials | per_share_class_summary[] (raw share_class_id) | Low | Largely covered by deals[].transactions[]. Raw integer share_class_id is unavailable. |
| Investors | investor_uen on list | Low | Use /capital-receivers/{uuid}/investors/ registration_numbers[].reg_number. |
| Investors | investment_date on list | Low | Use first_investment_date / latest_investment_date on /capital-receivers/{uuid}/investors/. |
| Investors | Per-company stage amounts on /investments/ | Medium | Only on investor list as investments_by_deal_type; not per-company on /investments/. |
| Investors | Valuation calculations (value_of_investment_at_last_round_valuation*) | Medium | Not in Partner API. |
| Investors | Share-class amounts (amount_invested_ordinary, _preference) | Low | Not in Partner API. |
| Investors | max_price_per_share | Low | Not in Partner API. |
| Fund list | Inline performance metrics (irr, dpi, rvpi, net_multiple) | Medium | Separate call to /funds/{uuid}/performance/. |
| Fund list | size on list | Medium | Separate call to /funds/{uuid}/aum/. |
| Fund Performance | source_name, capital_provider_source_acting_as | Low | Not exposed. |
| Fund Performance | report_path, reporting_period | Low | Use year + quarter; report path is internal. |
| Commitment Deals | size (deal size) | Low | Not in Partner API. |
Filters Not in v3
| Category | v2 filter(s) | Workaround |
|---|---|---|
| Companies | total_funding_min/max (server-side aggregate) | Not available as a server-side filter. |
| Investors | sectors, themes, invested_in_stage, invested_on_from/to | Not available in Partner API; filter client-side or via other endpoints. |
| Investors | order_by + order_direction | Not available; no server-side ordering on investor results. |
| Funds | net_irr_min/max, net_multiple_min/max, dpi_min/max, rvpi_min/max | Not available; performance is separate from fund list. |
| Funds | last_report_quarter | Not available. |
| Fund Performance | All range filters (irr_min/max, dpi_min/max, etc.) | Not available; filter client-side. |
| Commitment Deals | fund_type, query | Filter funds first, then query per-fund commitments. |
v2 Endpoints Fully Deprecated
| v2 endpoint | Reason / replacement |
|---|---|
GET /api/v2/companies/{uen}/uen/financials | Use ?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 call | v3 equivalent |
|---|---|
POST /api/v2/oauth/token | POST /v3/token/issue/ |
GET /api/v2/companies?query=X&countries=SGP | POST /v3/partners/capital-receivers/ with search=X and {"filters":{"all":[{"op":"eq","field":"headquarters_country_iso_alpha3","value":"SGP"}]}} |
GET /api/v2/companies/123 | GET /v3/partners/capital-receivers/{uuid}/ |
GET /api/v2/companies/201935876D/uen | GET /v3/partners/capital-receivers/?registration_number=201935876D |
GET /api/v2/companies/123/financials | GET /v3/partners/capital-receivers/{uuid}/ (funding block + financials[]) |
GET /api/v2/investors?query=X | GET /v3/partners/investors/?search=X |
GET /api/v2/investors/4 | GET /v3/partners/investors/ → find UUID → /capital-allocators/{uuid}/investments/ |
GET /api/v2/directors?query=X | GET /v3/partners/people/?role_type_key=person_association_director&search=X |
GET /api/v2/directors/4 | GET /v3/partners/people/{uuid}/ |
GET /api/v2/founders?query=X | GET /v3/partners/people/?role_type_key=person_association_founder&search=X |
GET /api/v2/founders/2 | GET /v3/partners/people/{uuid}/ |
GET /api/v2/auditors?query=X | GET /v3/partners/service-providers/?service_type=service_provider_type_audit&search=X |
GET /api/v2/auditors/2 | GET /v3/partners/service-providers/{uuid}/ |
GET /api/v2/capital-providers?category=fund-manager | GET /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=2020 | POST /v3/partners/funds/ with {"filters":{"all":[{"op":"gte","field":"vintage_year","value":2020}]}} |
GET /api/v2/funds/477 | GET /v3/partners/funds/{uuid}/ |
GET /api/v2/fund-performances/?fund_id=508 | GET /v3/partners/funds/{fund-uuid}/performance/ |
GET /api/v2/commitment-deals/?fund_id=764 | GET /v3/partners/funds/{fund-uuid}/commitments/ |
GET /api/v2/commitment-deals/?limited_partner_id=3521 | GET /v3/partners/capital-allocators/{allocator-uuid}/commitments/ |
GET /api/v2/people/?first_name=Arjun | GET /v3/partners/people/?search=Arjun |
Migration Checklist
- Update base URL from
https://api.alternatives.pe/api/v2/tohttps://api.altdmp.io/v3/partners/ - Replace
client_id/client_secretauth with the API-key flow onPOST /v3/token/issue/ - Confirm your subscription gives you access to the v3 endpoints you need (403 = contact support)
- Replace integer IDs with UUIDs in all API calls and persisted references
- Update pagination: parse
count,next,previous,resultsinstead of the v2data.data[]envelope - Convert
order_by/order_directionto singleorderingparameter (-prefix for descending) - Move advanced filters from query parameters to POST
filtersJSON bodies - Remove
sectorsusage and remap onto the v3 classification framework (themes,techs,business_models,industries,horizontals) - Update company lookups to
/capital-receivers/; look up by UEN via?registration_number= - Update capital-provider lookups to
/capital-allocators/; readprofile_typefrom the response - Replace auditor lookups with
/service-providers/?service_type=service_provider_type_audit - Consolidate director/founder calls to
/people/?role_type_key=person_association_director|founder - Move person
job_titlesreads to/people/{uuid}/roles/ - Handle the nested
legal_entityobject in profile responses - Update field names per the mapping tables (
first_name→given_name,last_name→family_name, etc.) - Update fund consumers: fetch performance via
/funds/{uuid}/performance/and AUM via/funds/{uuid}/aum/ - Migrate commitment-deal logic to the two nested commitments endpoints (per fund vs. per allocator)
- Adopt
/v3/partners/investors/and per-profile/investments/endpoints; expect investor records to split by allocation type - Integrate
GET /v3/partners/reference-data/to bootstrap filter dropdowns - Stop applying client-side FX — money fields are USD-normalized with
_usdsuffix - Smoke-test all endpoints in a non-prod environment before switching production traffic
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
| Method | Endpoint | Access |
|---|---|---|
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
| Parameter | Type | Description |
|---|---|---|
search | string | Matches company name, alternate names, description, and registration number |
registration_number | string | Filter by company registration number |
ordering | string | Field to sort by. Prefix with - for descending (e.g. -last_updated_at) |
limit | integer | Results per page (default: 20) |
offset | integer | Pagination offset |
total_funding_min | number | Minimum total equity raised (USD) |
total_funding_max | number | Maximum total equity raised (USD) |
is_raising_nowis a filter field on the advancedPOSTfilter, not aGETquery 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
| Field | Type | Example |
|---|---|---|
headquarters_country_iso_alpha3 | string | "SGP" |
domicile_country_iso_alpha3 | string | "SGP" |
latest_investment_stage_name | string | "Series A" |
latest_investment_stage_key | string | "series_a" |
latest_valuation_usd | number | 50000000 |
latest_operating_revenue_usd | number | 10000000 |
operating_revenue_growth_yoy_pct | number | 15.0 |
total_funding_usd | number | 5000000 |
financials_latest_financial_year_end | date string | "2023-01-01" |
captable_is_managed | boolean | true |
is_female_founder | boolean | true |
is_raising_now | boolean | false |
year_founded | integer | 2018 |
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, andtotal_funding_usdare 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
fundingobject, so you read, filter, and sort by the same key (e.g.?ordering=-total_funding_usd).
captable_is_managed:truereturns companies with a managed cap table (full transaction-level data available via/captable/and/investors/);falsereturns snapshot-only companies.null(no filter) includes both. Companies with no cap table at all are excluded from botheq:trueandeq:falsequeries.
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:
| Field | Description |
|---|---|
filed_equity_usd | Equity from official filings (or, for some domiciles, paid-up capital) |
reported_equity_usd | Equity from reported (e.g. announced) rounds not yet reflected in filings |
reported_and_filed_equity_usd | filed_equity_usd + reported_equity_usd |
filed_debt_usd / reported_debt_usd / reported_and_filed_debt_usd | The equivalent breakdown for debt |
total_funding_usd | reported_and_filed_equity_usd + reported_and_filed_debt_usd |
latest_valuation_usd / latest_valuation_date | Most recent known valuation and its date |
latest_investment_amount / latest_investment_date / latest_investment_stage_name / latest_investment_stage_key | Most recent funding round summary |
nullvs"0.00".nullmeans 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
fundingobject (andlatest_valuation_usd) isnull, since a public company has a market capitalization rather than private funding.funding_statusis 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/returnsHTTP 400for 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
| Field | Type | Example |
|---|---|---|
date | date string | "2020-01-01" |
deal_label | string | "Series A" |
allocation_type | string | "Equity" |
allocation_subtype | string | "Venture Capital (VC)" |
deal_transaction_type | string | "Seed", "Series A" |
deal_size_usd | number | 5000000 |
post_money_valuation_usd | number | 50000000 |
no_shares_issued | integer | 1000000 |
no_shares_bought | integer | 500000 |
no_shares_sold | integer | 100000 |
# 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
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -date) |
limit | Results per page |
offset | Pagination 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
| Method | Endpoint | Access |
|---|---|---|
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 owndisplay_name, the linked legal entity’sdisplay_name, anddescription.
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
| Field | Type | Example |
|---|---|---|
domicile_country_iso_alpha3 | string | "SGP" |
domicile_country_name | string | "Singapore" |
headquarters_country_iso_alpha3 | string | "SGP" |
headquarters_country_name | string | "Singapore" |
preferred_allocation_deal_type_name | string | "Seed" |
preferred_allocation_deal_type_key | string | "seed" |
Geography filters (
domicile_country_*,headquarters_country_*) resolve through the allocator’s linked legal entity. Capital allocators backed by aPerson(rather than a legal entity) returnnullfor 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
| Field | Type | Description |
|---|---|---|
uuid | string | Capital allocator profile UUID |
display_name | string | Firm or individual name |
profile_type | string | "legalentity" or "person" |
types | array | Firm-type classification (e.g. Venture Capital Firm, Family Office) |
preferred_allocation_deal_types | array | Stated preferred deal stages |
preferred_countries | array | Target geographies |
preferred_themes | array | Target investment themes |
preferred_horizontals | array | Target horizontal tech categories |
preferred_business_models | array | Target business models |
preferred_techs | array | Target technology focus areas |
cheque_size_avg | number | Average cheque size in USD |
cheque_size_min | number | Minimum cheque size in USD |
cheque_size_max | number | Maximum cheque size in USD |
dry_powder | number | Undeployed capital in USD |
current_allocation | number | Capital currently deployed in USD |
target_allocation | number | Target total allocation in USD |
stated_count_of_investments | integer | Self-stated portfolio company count |
is_open_to_co_investment | boolean | Open to co-investment |
actual_count_of_investments | integer | Actual count from transaction records |
actual_allocation_deal_types | array | Deal stages the firm has actually invested in |
actual_countries | array | Countries of portfolio companies |
latest_aum | object | Most 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
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -latest_investment_date) |
limit | Results per page |
offset | Pagination 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
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -aum_value_date) |
limit | Results per page |
offset | Pagination 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
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -date) |
limit | Results per page |
offset | Pagination 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
| Parameter | Description |
|---|---|
limit | Results per page |
offset | Pagination 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
| Parameter | Description |
|---|---|
limit | Results per page |
offset | Pagination 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
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -date) |
limit | Results per page |
offset | Pagination 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
| Method | Endpoint | Access |
|---|---|---|
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
| Parameter | Description |
|---|---|
search | Full-text search on fund name |
ordering | Sort field. Prefix with - for descending |
limit | Results per page |
offset | Pagination 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
| Field | Type | Example |
|---|---|---|
domicile_country_iso_alpha3 | string | "CYM" |
domicile_country_name | string | "Cayman Islands" |
headquarters_country_iso_alpha3 | string | "SGP" |
headquarters_country_name | string | "Singapore" |
status_key | string | "fund_status_active" |
vintage_year | integer | 2020 |
preferred_countries_iso_alpha3 | string | "SGP" |
preferred_allocation_types_names | string | "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
| Field | Type | Description |
|---|---|---|
uuid | string | Fund profile UUID |
display_name | string | Fund name |
vintage_year | integer | Year the fund was established / first close |
fund_managers | array | Managing capital allocator(s) |
status | object | Fund lifecycle status |
is_raising_now | boolean | Currently in fundraise |
term_years | integer | Fund term in years |
structure | object | Legal structure (e.g. Limited Partnership) |
latest_fund_size | object | Most recent AUM record |
management_fee_percentage | number | Annual management fee % |
gp_commitment_percentage | number | GP co-investment alongside LPs % |
hurdle_percentage | number | Preferred return before carry % |
carry_percentage | number | Carried interest % |
is_first_time_fund | boolean | Manager’s first fund |
is_single_deal_fund | boolean | SPV / single-deal vehicle |
is_continuation_fund | boolean | Continuation vehicle |
is_hybrid_fund | boolean | Hybrid structure |
Real Funds for Testing
| Fund | UUID | Size | Vintage |
|---|---|---|---|
| Wavemaker Pacific 1 | 73541611-0738-46fb-abbd-7e9dcf74b00c | $66M | 2017 |
| Bain Capital Asia III | 50280c30-d626-44db-8aff-7cdf1eb323bb | $3B | 2016 |
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
| Field | Type | Description |
|---|---|---|
irr | number | Internal Rate of Return (e.g. 0.18 = 18%) |
dpi | number | Distributions to Paid-In multiple |
rvpi | number | Residual Value to Paid-In multiple |
net_multiple | number | Total Value to Paid-In (TVPI) |
profit_usd | number | Profit in USD |
drawdowns_usd | number | Capital drawn down in USD |
committed_capital_usd | number | Total committed capital in USD |
currency | object | Reporting 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 |
source | string | Data source label |
source_type_key | string | Machine-readable source type |
Query Parameters
| Parameter | Description |
|---|---|
ordering | Sort field. Supported values: date, irr, dpi, rvpi, net_multiple (prefix with - for descending, default: -date) |
limit | Results per page |
offset | Pagination 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
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -aum_value_date) |
limit | Results per page |
offset | Pagination 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
| Field | Type | Description |
|---|---|---|
uuid | string | Commitment UUID |
date | date string | Commitment date |
allocation_type_key / allocation_type_name | string, nullable | Allocation type |
allocation_subtype_key / allocation_subtype_name | string, nullable | Allocation subtype |
investment_amount_usd | number, nullable | Total committed amount (USD) |
transactions | array | Underlying transactions, one per committing LP. May be empty. |
transactions[].uuid | string | Transaction UUID |
transactions[].investment_amount_usd | number, nullable | Committed amount for this transaction (USD) |
transactions[].buyer | object, nullable | The committing party (LP); null when no buyer is recorded. Resolves to its profile type (e.g. capital_allocator, fund) when known. |
Query Parameters
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -date). Supported: date, investment_amount_usd, created_at, updated_at |
limit | Results per page |
offset | Pagination 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
| Field | Type | Description |
|---|---|---|
capital_receiver_uuid | string | UUID of the capital receiver profile — use with /capital-receivers/{uuid}/ |
legal_entity_uuid | string | UUID of the underlying legal entity |
capital_receiver_name | string | Company name |
shares_issued | number | Shares acquired via primary transactions |
shares_bought_secondary | number | Shares acquired via secondary purchases |
shares_sold | number | Shares sold via secondary transactions |
shares_currently_held | number | Current net shareholding |
total_invested_usd | number | Total cash invested in USD (primary transactions only) |
first_investment_date | date | Date of first investment |
latest_investment_date | date | Date of most recent investment |
Query Parameters
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -latest_investment_date) |
limit | Results per page |
offset | Pagination 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
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -date) |
limit | Results per page |
offset | Pagination 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
| Method | Endpoint | Access |
|---|---|---|
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
| Field | Type | Description |
|---|---|---|
uuid | string | UUID of the investor entity |
name | string | Investor display name |
investor_type | string | Entity type: legal_entity, capital_allocator, fund, person |
allocation_type_key | string | Asset class: equity, debt, commitment, other |
allocation_type_name | string | Asset class display name |
total_invested_usd | number | Total primary capital deployed (USD) |
no_of_invested_companies | integer | Distinct companies invested in |
first_investment_date | string | Date of very first investment |
latest_investment_date | string | Date of most recent investment |
investments_by_deal_type | object | Breakdown by deal stage (amount + company count) |
Query Parameters
| Parameter | Description |
|---|---|
search | Full-text search on investor name |
investor_type | Filter by entity type: legal_entity, capital_allocator, fund, person |
invested_in_stage | Filter by deal stage key (e.g. seed, series_a) |
invested_on_from | Investments on or after this date (YYYY-MM-DD) |
invested_on_to | Investments on or before this date (YYYY-MM-DD) |
ordering | Sort field, prefix with - for descending |
limit | Results per page |
offset | Pagination 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
| Field | Type | Example |
|---|---|---|
investor_type | string | "capital_allocator", "fund", "legal_entity", "person" |
name | string | "Temasek" |
invested_in_stage | string | "seed", "series_a" |
invested_on_from | date string | "2020-01-01" |
invested_on_to | date 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
uuidandinvestor_typeand 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
| Method | Endpoint | Access |
|---|---|---|
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
| Parameter | Description |
|---|---|
search | Name search across given and family name. Multiple words are matched independently, so full names like Shanru Lai match regardless of word order. |
role_type_key | Filter by role: person_association_founder, person_association_director, person_association_employee, person_association_advisor |
domicile_country_iso_alpha3 | Filter by the domicile-country ISO alpha-3 code of an associated organization. Repeatable or comma-separated (e.g. SGP,USA). |
headquarters_country_iso_alpha3 | Filter by the headquarters-country ISO alpha-3 code of an associated organization. Repeatable or comma-separated. |
ordering | Sort field |
limit | Results per page |
offset | Pagination 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
| Field | Type | Example |
|---|---|---|
given_name | string | "Henry" |
family_name | string | "Chan" |
location_country_name | string | "Singapore" |
location_country_iso_alpha3 | string | "SGP" |
role_type_key | string | "person_association_founder" |
role_type_name | string | "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
| Parameter | Description |
|---|---|
role_type_key / role_type_name | Filter to specific role types |
domicile_country_iso_alpha3 | Filter by the domicile-country ISO alpha-3 code of the associated organization. Repeatable or comma-separated. |
headquarters_country_iso_alpha3 | Filter by the headquarters-country ISO alpha-3 code of the associated organization. Repeatable or comma-separated. |
Role Type Keys
| Key | Description |
|---|---|
person_association_founder | Founder |
person_association_director | Board Director |
person_association_employee | Employee |
person_association_advisor | Advisor |
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
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -latest_investment_date) |
limit | Results per page |
offset | Pagination 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
| Parameter | Description |
|---|---|
ordering | Sort field. Prefix with - for descending (default: -date) |
limit | Results per page |
offset | Pagination 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
| Method | Endpoint | Access |
|---|---|---|
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
| Parameter | Description |
|---|---|
search | Full-text search on firm name |
service_type | Filter by service type key (see table below) |
ordering | Sort field |
limit | Results per page |
offset | Pagination offset |
Service Type Keys
| Key | Description |
|---|---|
service_provider_type_audit | Auditor |
service_provider_type_tax | Tax advisor |
service_provider_type_compliance | Compliance advisor |
service_provider_type_law_firm | Law firm |
service_provider_type_investment_bank | Investment bank |
service_provider_type_placement_agent | Placement agent |
service_provider_type_fund_administrator | Fund administrator |
service_provider_type_lender | Lender |
service_provider_type_valuation_firm | Valuation firm |
service_provider_type_management_consultant | Management 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
| Method | Endpoint | Access |
|---|---|---|
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
| Value | Returns |
|---|---|
enums | All enumerated choice values grouped by category |
countries | All countries with iso_alpha3 and name |
cities | Cities with name, state_name, and country_iso_alpha3 |
industries | Industry codes with code and description |
business_sic_codes | Business 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 Key | Example Values |
|---|---|
allocation_types | Equity, Debt, Commitment, Other |
allocation_subtypes | Venture Capital (VC), Private Equity (PE), M&A, Distressed Transactions, Liquidity Events |
allocation_deal_types | Pre-Seed, Seed, Series A–F, Buyout / LBO, Growth / Expansion, IPO, Secondary Transaction, Convertible Debt, Term Loan, Bridge Loan |
capital_allocator_types | Venture 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_from | Fund, Balance Sheet, Both |
person_role_types | Founder, Director, Employee, Advisor |
service_types | Audit, Tax, Compliance, Law Firm, Investment Bank, Placement Agent, Fund Administrator, Lender, Valuation Firm, Management Consultant |
preferred_fund_types | Venture Capital, Private Equity, Hedge Fund, Real Estate, Infrastructure |
fund_statuses | Announced, Raising, First Close, Second Close, Open, Closed, Evergreen, Liquidated, Upcoming |
trading_statuses | Operating, Inactive, Closed |
deal_provenances | Filed with Regulator, Self-Declared, News / Media, Research |
fund_performance_sources | Limited Partner, General Partner |
business_models | B2B (Business-to-Business), B2C (Business-to-Consumer), P2P (Peer-to-Peer) |
techs | AgriTech, BioTech, CleanTech, DeepTech, EduTech, EnergyTech, FinTech, GovTech, HealthTech, HRTech, InsurTech, LegalTech, MarTech, PropTech |
themes | AI / 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 |
horizontals | AI / 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):
total_funding_amount_usd→total_funding_usdequity_funding_amount_usd→ split intoreported_and_filed_equity_usd,filed_equity_usd, andreported_equity_usddebt_funding_amount_usd→ split intoreported_and_filed_debt_usd,filed_debt_usd, andreported_debt_usd
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).
People — multi-word search
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.
