Model Types
Model types define what kind of entity something is in Addepar: a stock, a bond, a person, a holding account. Each model type carries its own set of attributes, required fields for creation, writability rules, ownership type, and category. The Model Types API (technically /v1/entity_types) lets you discover these properties programmatically so your integration can validate entity payloads before submitting them.
Use this API to answer: "What attributes does a bond entity require? Which ones can I edit after creation? What ownership type does a private_equity_fund use?"
Overview
| Base route | /v1/entity_types |
| Produces | JSON |
| Pagination | No |
| Methods | GET (list all, get by ID), PATCH (change entity model type) |
| OAuth scopes | ENTITIES or ENTITIES_WRITE |
Access requirements
API Access: Create, edit, and delete.
The API uses "entity type" in its routes and responses, but "model type" in Addepar's product vocabulary. They mean the same thing.
Resource attributes
Every model type resource returns:
| Attribute | Description |
|---|---|
display_name | Human-readable name. Example: "Bond" |
category | Classification bucket. Values: "Security", or absent for non-security types (accounts, people, funds). |
ownership_type | How positions against this entity track holdings. Values: "share_based", "value_based", "percent_based". Some types support multiple (see reference table). Absent for container types (person, household). |
entity_attributes | Array of attribute definitions with key, required, and writability. |
Writability rules
Each attribute on a model type has a writability value that controls when it can be set:
| Writability | Meaning |
|---|---|
MUTABLE | Can be edited anytime with appropriate permissions. |
IMMUTABLE | Cannot be set or modified through the API. System-managed. |
FINAL | Can be set at entity creation. Cannot be changed afterward. |
RESTRICTED_FOR_ONLINE | Requires "edit online data" permissions to modify. |
Practical implication: If you need to set an attribute with FINAL writability, you must include it in your POST request when creating the entity. A follow-up PATCH will fail.
Supported model types
Account and container types
| Name | API key | Ownership type |
|---|---|---|
| Household | household | Percent-based |
| Client | person_node | Percent-based |
| Prospect | prospect | Percent-based |
| Holding Company | holding_company | Percent-based |
| Manager | manager | Percent-based |
| Trust | trust | Percent-based |
| Vehicle | vehicle | Percent-based |
| Holding Account | financial_account | Percent-based |
| Sleeve | sleeve | Percent-based |
Fund types
| Name | API key | Ownership type |
|---|---|---|
| Managed Fund | managed_partnership | Share-based or value-based |
| Private Fund | fund | Value-based |
| Hedge Fund | hedge_fund | Share-based or value-based |
| Private Equity Fund | private_equity_fund | Share-based or value-based |
| Venture Capital | venture_capital | Share-based or value-based |
Fixed income
| Name | API key | Ownership type |
|---|---|---|
| Bond | bond | Share-based |
| Certificate of Deposit | certificate_of_deposit | Share-based |
| CMO | cmo | Share-based |
| Convertible Note | convertible_note | Share-based |
| Preferred Stock | preferred_stock | Share-based |
| Promissory Note | promissory_note | Share-based or value-based |
Equities and funds
| Name | API key | Ownership type |
|---|---|---|
| Stock | stock | Share-based |
| ETF | etf | Share-based |
| ETN | etn | Share-based |
| Closed End Fund | closed_end_fund | Share-based |
| Mutual Fund | mutual_fund | Share-based |
| Money Market Fund | money_market_fund | Share-based |
| Master Limited Partnership | master_limited_partnership | Share-based |
| REIT | reit | Share-based |
| UIT | uit | Share-based |
Derivatives
| Name | API key | Ownership type |
|---|---|---|
| Option | option | Share-based |
| Warrant | warrant | Share-based |
| Futures Contract | futures_contract | Share-based |
| Forward Contract | forward_contract | Share-based |
Alternative and real assets
| Name | API key | Ownership type |
|---|---|---|
| Private Investment | private_investment | Share-based or value-based |
| Real Estate | real_estate | Share-based or value-based |
| Art | art | Share-based or value-based |
| Car | car | Share-based or value-based |
| Collectible | collectible | Share-based or value-based |
| Structured Product | structured_product | Share-based |
| Digital Asset | digital_asset | Share-based |
Other
| Name | API key | Ownership type |
|---|---|---|
| Currency | cash | Share-based |
| Annuity | annuity | Value-based |
| Loan | loan | Value-based |
| Historical Segment | historical_segment | Value-based |
| Custom Asset | generic_asset | Any |
| Unknown Security | unknown_security | Share-based |
Get all model types
Returns every model type available to the firm, with their full attribute definitions.
GET /v1/entity_types
curl -X GET "https://{firm}.addepar.com/api/v1/entity_types" \
-H "Authorization: Basic {credentials}" \
-H "Addepar-Firm: 1" \
-H "Accept: application/vnd.api+json"
{
"data": [
{
"id": "stock",
"type": "entity_types",
"attributes": {
"ownership_type": "share_based",
"entity_attributes": [
{ "key": "currency_factor", "required": true, "writability": "IMMUTABLE" },
{ "key": "original_name", "required": true, "writability": "IMMUTABLE" },
{ "key": "ownership_type", "required": true, "writability": "IMMUTABLE" },
{ "key": "ticker_symbol", "required": false, "writability": "IMMUTABLE" },
{ "key": "display_name", "required": false, "writability": "MUTABLE" },
{ "key": "cusip", "required": false, "writability": "IMMUTABLE" },
{ "key": "isin", "required": false, "writability": "IMMUTABLE" },
{ "key": "sedol", "required": false, "writability": "IMMUTABLE" }
],
"category": "Security",
"display_name": "Stock"
},
"links": { "self": "/v1/entity_types/stock" }
}
],
"included": [],
"links": { "next": null }
}
Response codes:
200 OK-- Success403 Forbidden-- Insufficient permissions or scope
Get a model type
Returns the full attribute definition for a single model type.
GET /v1/entity_types/:id
curl -X GET "https://{firm}.addepar.com/api/v1/entity_types/bond" \
-H "Authorization: Basic {credentials}" \
-H "Addepar-Firm: 1" \
-H "Accept: application/vnd.api+json"
The response includes every attribute available on that model type with its required and writability values. Use this to build dynamic forms or validate payloads before submission.
Response codes:
200 OK-- Success403 Forbidden-- Insufficient permissions or scope404 Not Found-- Invalid model type key
Change an entity's model type
Converts existing entities from one model type to another. This is a bulk operation that accepts an array of entity IDs with their target model types.
PATCH /v1/entity_types
curl -X PATCH "https://{firm}.addepar.com/api/v1/entity_types" \
-H "Authorization: Basic {credentials}" \
-H "Addepar-Firm: 1" \
-H "Content-Type: application/vnd.api+json" \
-H "Accept: application/vnd.api+json" \
-d '{
"data": [
{ "type": "entity_type_updates", "id": 1111, "attributes": { "new_model_type": "hedge_fund" } },
{ "type": "entity_type_updates", "id": 1122, "attributes": { "new_model_type": "etf" } }
]
}'
{
"data": [
{ "id": "1111", "type": "entity_type_updates", "attributes": { "new_model_type": "hedge_fund" } },
{ "id": "1122", "type": "entity_type_updates", "attributes": { "new_model_type": "etf" } }
],
"included": [],
"links": { "prev": null, "next": null }
}
Constraints:
- The target model type must be compatible with the entity's current ownership type. You cannot convert a share-based entity to a type that only supports value-based.
- Existing attribute values that are not valid on the new type may be lost.
- This operation cannot be undone through the API (you would need to PATCH back to the original type).
Response codes:
200 OK-- Success403 Forbidden-- Insufficient permissions or scope404 Not Found-- Invalid model type or entity ID
Related
- Entities -- Create and manage entities using model type attributes
- Addepar Attributes -- Attribute system and custom attributes
- Positions -- Ownership type determines position behavior
- Transaction Types -- Transaction compatibility depends on ownership type
Updated 4 days ago