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
ProducesJSON
PaginationNo
MethodsGET (list all, get by ID), PATCH (change entity model type)
OAuth scopesENTITIES 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:

AttributeDescription
display_nameHuman-readable name. Example: "Bond"
categoryClassification bucket. Values: "Security", or absent for non-security types (accounts, people, funds).
ownership_typeHow 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_attributesArray 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:

WritabilityMeaning
MUTABLECan be edited anytime with appropriate permissions.
IMMUTABLECannot be set or modified through the API. System-managed.
FINALCan be set at entity creation. Cannot be changed afterward.
RESTRICTED_FOR_ONLINERequires "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

NameAPI keyOwnership type
HouseholdhouseholdPercent-based
Clientperson_nodePercent-based
ProspectprospectPercent-based
Holding Companyholding_companyPercent-based
ManagermanagerPercent-based
TrusttrustPercent-based
VehiclevehiclePercent-based
Holding Accountfinancial_accountPercent-based
SleevesleevePercent-based

Fund types

NameAPI keyOwnership type
Managed Fundmanaged_partnershipShare-based or value-based
Private FundfundValue-based
Hedge Fundhedge_fundShare-based or value-based
Private Equity Fundprivate_equity_fundShare-based or value-based
Venture Capitalventure_capitalShare-based or value-based

Fixed income

NameAPI keyOwnership type
BondbondShare-based
Certificate of Depositcertificate_of_depositShare-based
CMOcmoShare-based
Convertible Noteconvertible_noteShare-based
Preferred Stockpreferred_stockShare-based
Promissory Notepromissory_noteShare-based or value-based

Equities and funds

NameAPI keyOwnership type
StockstockShare-based
ETFetfShare-based
ETNetnShare-based
Closed End Fundclosed_end_fundShare-based
Mutual Fundmutual_fundShare-based
Money Market Fundmoney_market_fundShare-based
Master Limited Partnershipmaster_limited_partnershipShare-based
REITreitShare-based
UITuitShare-based

Derivatives

NameAPI keyOwnership type
OptionoptionShare-based
WarrantwarrantShare-based
Futures Contractfutures_contractShare-based
Forward Contractforward_contractShare-based

Alternative and real assets

NameAPI keyOwnership type
Private Investmentprivate_investmentShare-based or value-based
Real Estatereal_estateShare-based or value-based
ArtartShare-based or value-based
CarcarShare-based or value-based
CollectiblecollectibleShare-based or value-based
Structured Productstructured_productShare-based
Digital Assetdigital_assetShare-based

Other

NameAPI keyOwnership type
CurrencycashShare-based
AnnuityannuityValue-based
LoanloanValue-based
Historical Segmenthistorical_segmentValue-based
Custom Assetgeneric_assetAny
Unknown Securityunknown_securityShare-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 -- Success
  • 403 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 -- Success
  • 403 Forbidden -- Insufficient permissions or scope
  • 404 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 -- Success
  • 403 Forbidden -- Insufficient permissions or scope
  • 404 Not Found -- Invalid model type or entity ID

📘

Related


Did this page help you?