Target Allocations

Target Allocations are split into two primary components:

  • Allocation Models: Define the framework for target allocations by specifying the attributes (factors) that can be used.
  • Allocation Templates: Define specific allocation strategies based on allocation models, including actual target allocations, constraints, and hierarchical values.

You can use the Target Allocations API to create, view, update, and delete allocation models and templates for portfolio management.

Allocation Models

Base route/v1/allocation_models
EndpointsGET
/v1/allocation_models
/v1/allocation_models/:id

POST
/v1/allocation_models

PATCH
/v1/allocation_models/:id

DELETE
/v1/allocation_models/:id
ProducesJSON
PaginationYes
Application permissions requiredAccess to "Manage data configuration: Target Allocation"

Resource overview

The Target Allocations API returns a resource object containing the allocation model ID in successful responses.

AttributesDescriptionExample
idThe unique id of the allocation model."123"

Parameters

You can create or update an allocation model by providing the following parameters:

AttributeDescriptionExampleValidation
nameThe name of the allocation model being created. "Balanced Growth Model"400 bad requestreturned if missing field
attribute_idsA list of factor attribute identifiers that define what dimensions can be used in allocation templates created from this model.

Cannot be used for PATCH because the field is immutable after creation. To change the attributes of an existing allocation model, you must create a new model and delete the old one (if not in use)

Use /v1/attributes to get a list of all attributes.
["asset_class", "legal_entity", "sector"] 400 Bad Request returned if attribute_ids are invalid for POST, field exists in a PATCH request

Get all allocation models

Retrieve all allocation models that the user has permission to view.

GET /v1/allocation_models

Example:

GET https://examplefirm.addepar.com/api/v1/allocation_models
HTTP/1.1 200

{
  "data": [
    {
      "id": "123",
      "type": "allocation_models",
      "attributes": {
        "name": "Conservative Growth Model",
        "attribute_ids": ["addepar_asset_class", "legal_entity", "sector"]
      },
      "links": {
        "self": "/v1/allocation_models/123"
      }
    },
    {
      "id": "124",
      "type": "allocation_models",
      "attributes": {
        "name": "Aggressive Growth Model",
        "attribute_ids": ["asset_class", "market_cap", "legal_entity", "sector"]
      },
      "links": {
        "self": "/v1/allocation_models/124"
      }
    }
  ],
  "included": [],
  "links": {
    "prev": null,
    "next": "/v1/allocation_models?page[limit]=500&page[after]=124"
  }
}

Response Codes

  • 200 OK: Success

  • 403 Forbidden: User lacks required permissions.

Get allocation model by id

Retrieve a specific allocation model by its ID.

GET /v1/allocation_models/:id

Example:

GET https://examplefirm.addepar.com/api/v1/allocation_models/123
HTTP/1.1 200

{
  "data": {
    "id": "123",
    "type": "allocation_models",
    "attributes": {
      "name": "Conservative Growth Model",
      "attribute_ids": ["asset_class", "legal_entity", "sector"]
    },
    "links": {
      "self": "/v1/allocation_models/123"
    }
  }
}

Response Codes

  • 200 OK: Success

  • 403 Forbidden: User lacks required permissions.

  • 404 Not Found: No allocation model exists with the specified ID, or the user doesn't have permission to access it.

Create allocation model

Create a new allocation model with the specified attributes.

POST /v1/allocation_models

Example:

POST https://examplefirm.addepar.com/api/v1/allocation_models

{
  "data": {
    "type": "allocation_models",
    "attributes": {
      "name": "Balanced Growth Model",
      "attribute_ids": ["asset_class", "legal_entity", "sector", "market_cap"]
    }
  }
}
HTTP/1.1 200

{
  "data": {
    "id": "125",
    "type": "allocation_models",
    "attributes": {
      "name": "Balanced Growth Model",
      "attribute_ids": ["asset_class", "legal_entity", "sector", "market_cap"]
    },
    "links": {
      "self": "/v1/allocation_models/125"
    }
  }
}

Response Codes

  • 200 OK: Success

  • 400 Bad Request: Request payload is improperly formatted, contains invalid data, includes an id field, or contains unsupported attributes.

  • 403 Forbidden: User lacks the required permission.

Update allocation model

Update an existing allocation model. This endpoint supports partial updates and preserves existing data where possible.

PATCH /v1/allocation_models/:id

Example:

PATCH https://examplefirm.addepar.com/api/v1/allocation_models/123

{
  "data": {
    "id": "123",
    "type": "allocation_models",
    "attributes": {
      "name": "Updated Conservative Growth Model"
    }
  }
}
HTTP/1.1 200

{
  "data": {
    "id": "123",
    "type": "allocation_models",
    "attributes": {
      "name": "Updated Conservative Growth Model",
      "attribute_ids": ["asset_class", "legal_entity", "sector"]
    },
    "links": {
      "self": "/v1/allocation_models/123"
    }
  }
}

Response Codes

  • 200 OK: Success

  • 400 Bad Request: Request payload is improperly formatted or contains invalid data. i.e. immutable field attribute_ids

  • 403 Forbidden: User lacks the required permission.

  • 404 Not Found: No allocation model exists with the specified id, or the user doesn't have permission to access it.

  • 409 Conflict: There is a mismatch between the id parameter in the URL and the id provided in the request payload.

Delete allocation model

Will delete an existing allocation model.

DELETE /v1/allocation_models/:id

Example:

DELETE https://examplefirm.addepar.com/api/v1/allocation_models/123
HTTP/1.1 204

Response Codes

  • 204 No Content: Success

  • 403 Forbidden: User lacks the required permission, or the allocation model is assigned to clients that the user doesn't have permission to modify.

  • 404 Not Found: No allocation model exists with the specified ID, or the user doesn't have permission to access it.

Allocation Templates

Base route/v1/allocation_templates
EndpointsGET
/v1/allocation_templates
/v1/allocation_templates/:id

POST
/v1/allocation_templates

PATCH
/v1/allocation_templates/:id

PUT
/v1/allocation_templates/:id

DELETE
/v1/allocation_templates/:id
ProducesJSON
PaginationYes
Application permissions requiredAccess to "Manage data configuration: Target Allocation"

Resource overview

The Target Allocations API returns a resource object containing the allocation template ID in successful responses.

AttributesDescriptionExample
idThe unique id of the allocation template."123"
childrenNested allocation values based on the attribute hierarchy of the associated allocation model. [ { "id": 2, "parent_id": 1, "attribute_id": "market_cap", "attribute_value": "LARGE_CAP", "target_allocation": 40.0, "min_allocation": 30.0, "max_allocation": 50.0, "children": [] } ]

Parameters

You can create or update an allocation template by providing the following parameters:

AttributeDescriptionExampleValidation
model_idThe model associated with the current target allocation.

This field is immutable. To change the assigned model of an existing target allocation, you must create a new allocation and delete the old one (if not in use)
"123"400 bad requestreturned if missing field in POST and PUT requests, field exists in PATCH

404 Not Found returned if the allocation model does not exist or is not accessible.
nameThe name of the target allocation being created."Conservative Growth Template"400 bad requestreturned if missing field in POST and PUT requests
descriptionAn optional field for the description listed under the target allocation."A balanced allocation template for conservative growth"
allocation_intervalsAllocation distribution for each dimension of the associated allocation model.

Only attribute_ids defined in the corresponding level of the referenced model can be used

min_allocation and max_allocation are optional bounds.
[ { "allocations": [ { "parent_id": null, "attribute_id": "asset_class", "attribute_value": "BONDS", "target_allocation": 40.0, "min_allocation": 30.0, "max_allocation": 50.0, "children": [ { "parent_id": null, "attribute_id": "duration", "attribute_value": "SHORT_TERM", "target_allocation": 25.0, "min_allocation": 20.0, "max_allocation": 30.0, "children": [] } ] } ] } ]400 bad request returned if missing field in POST and PUT requests, empty allocation intervals or allocations, target allocation outside min/max bounds, child target sum exceeding parent target, invalid attribute values for specified attribute IDs, has more than one allocation

Get all allocation templates

Retrieve all allocation templates that the user has permission to view.

GET /v1/allocation_templates

Example:

GET https://examplefirm.addepar.com/api/v1/allocation_templates
HTTP/1.1 200
{
  "data": [
    {
      "id": "123",
      "type": "allocation_templates",
      "attributes": {
        "model_id": 456,
        "name": "Conservative Growth Template",
        "description": "A balanced allocation template for conservative growth",
        "allocation_intervals": [
          {
            "effective_date": "2024-01-01",
            "allocations": [
              {
                "id": 1,
                "parent_id": null,
                "attribute_id": "asset_class",
                "attribute_value": "EQUITY",
                "target_allocation": 60.0,
                "min_allocation": 50.0,
                "max_allocation": 70.0,
                "children": [
                  {
                    "id": 2,
                    "parent_id": 1,
                    "attribute_id": "market_cap",
                    "attribute_value": "LARGE_CAP",
                    "target_allocation": 40.0,
                    "min_allocation": 30.0,
                    "max_allocation": 50.0,
                    "children": []
                  }
                ]
              }
            ]
          }
        ]
      },
      "links": {
        "self": "/v1/allocation_templates/123"
      }
    }
  ],
  "included": [],
  "links": {
    "prev": null,
    "next": "/v1/allocation_templates?page[limit]=500&page[after]=123"
  }
}

Response Codes

  • 200 OK: Success

  • 403 Forbidden: User lacks required permissions.

Get allocation template by id

Retrieve a specific allocation template by its ID.

GET /v1/allocation_templates/:id

Example:

GET https://examplefirm.addepar.com/api/v1/allocation_templates/123
HTTP/1.1 200

{
  "data": {
    "id": "123",
    "type": "allocation_templates",
    "attributes": {
      "model_id": 456,
      "name": "Conservative Growth Template",
      "description": "A balanced allocation template for conservative growth",
      "allocation_intervals": [
        {
          "effective_date": "2024-01-01",
          "allocations": [
            {
              "id": 1,
              "parent_id": null,
              "attribute_id": "asset_class",
              "attribute_value": "EQUITY",
              "target_allocation": 60.0,
              "min_allocation": 50.0,
              "max_allocation": 70.0,
              "children": [
                {
                  "id": 2,
                  "parent_id": 1,
                  "attribute_id": "market_cap",
                  "attribute_value": "LARGE_CAP",
                  "target_allocation": 40.0,
                  "min_allocation": 30.0,
                  "max_allocation": 50.0,
                  "children": []
                }
              ]
            }
          ]
        }
      ]
    },
    "links": {
      "self": "/v1/allocation_templates/123"
    }
  }
}

Response Codes

  • 200 OK: Success

  • 403 Forbidden: User lacks required permissions.

  • 404 Not Found: No allocation template exists with the specified ID, or the user doesn't have permission to access it.

Create allocation template

Create a new allocation template with the specified attributes.

POST /v1/allocation_templates

Example:

POST https://examplefirm.addepar.com/api/v1/allocation_templates

{
  "data": {
    "type": "allocation_templates",
    "attributes": {
      "model_id": 456,
      "name": "Aggressive Growth Template",
      "description": "High-growth allocation strategy",
      "allocation_intervals": [
        {
          "allocations": [
            {
              "parent_id": null,
              "attribute_id": "asset_class",
              "attribute_value": "EQUITY",
              "target_allocation": 80.0,
              "min_allocation": 70.0,
              "max_allocation": 90.0,
              "children": [
                {
                  "parent_id": null,
                  "attribute_id": "market_cap",
                  "attribute_value": "LARGE_CAP",
                  "target_allocation": 50.0,
                  "min_allocation": 40.0,
                  "max_allocation": 60.0,
                  "children": []
                }
              ]
            }
          ]
        }
      ]
    }
  }
}
HTTP/1.1 200

{
  "data": {
    "id": "124",
    "type": "allocation_templates",
    "attributes": {
      "model_id": 456,
      "name": "Aggressive Growth Template",
      "description": "High-growth allocation strategy",
      "allocation_intervals": [
        {
          "effective_date": null,
          "allocations": [
            {
              "id": 3,
              "parent_id": null,
              "attribute_id": "asset_class",
              "attribute_value": "EQUITY",
              "target_allocation": 80.0,
              "min_allocation": 70.0,
              "max_allocation": 90.0,
              "children": [
                {
                  "id": 4,
                  "parent_id": 3,
                  "attribute_id": "market_cap",
                  "attribute_value": "LARGE_CAP",
                  "target_allocation": 50.0,
                  "min_allocation": 40.0,
                  "max_allocation": 60.0,
                  "children": []
                }
              ]
            }
          ]
        }
      ]
    },
    "links": {
      "self": "/v1/allocation_templates/124"
    }
  }
}

Response Codes

  • 200 OK: Success

  • 400 Bad Request: Request payload is improperly formatted, contains invalid data, includes an id field, or violates validation rules. See Parameters table.

  • 403 Forbidden: User lacks required permissions.

  • 404 Not Found: The specified allocation model does not exist or is not accessible.

Update allocation template

Update an existing allocation template. This endpoint supports partial updates and preserves existing data where possible. If a field is not provided in the request, the existing value is retained.

PATCH /v1/allocation_templates/:id

Example:

PATCH https://examplefirm.addepar.com/api/v1/allocation_templates/123

{
  "data": {
    "id": "123",
    "type": "allocation_templates",
    "attributes": {
      "name": "Updated Conservative Growth Template",
      "description": "Updated description for conservative growth strategy"
    }
  }
}
HTTP/1.1 200

{
  "data": {
    "id": "123",
    "type": "allocation_templates",
    "attributes": {
      "model_id": 456,
      "name": "Updated Conservative Growth Template",
      "description": "Updated description for conservative growth strategy",
      "allocation_intervals": [
        {
          "effective_date": null,
          "allocations": [
            {
              "id": 1,
              "parent_id": null,
              "attribute_id": "asset_class",
              "attribute_value": "EQUITY",
              "target_allocation": 60.0,
              "min_allocation": 50.0,
              "max_allocation": 70.0,
              "children": []
            }
          ]
        }
      ]
    },
    "links": {
      "self": "/v1/allocation_templates/123"
    }
  }
}

Response Codes

  • 200 OK: Success

  • 400 Bad Request: Request payload is improperly formatted, contains invalid data i.e. immutable field model_id, or violates validation rules. See Parameters table.

  • 403 Forbidden: User lacks required permissions.

  • 404 Not Found: No allocation template exists with the specified ID, or the user doesn't have permission to access it.

  • 409 Conflict: There is a mismatch between the id parameter in the URL and the id provided in the request payload.

Replace allocation template

Completely replace an existing allocation template with the provided data. This endpoint performs a full replacement, not a partial update. Unlike PATCH, this operation does not preserve existing data.

PUT /v1/allocation_templates/:id

Example:

PUT https://examplefirm.addepar.com/api/v1/allocation_templates/123

{
  "data": {
    "id": "123",
    "type": "allocation_templates",
    "attributes": {
      "model_id": 456,
      "name": "Completely Replaced Template",
      "description": "This template has been completely replaced",
      "allocation_intervals": [
        {
          "allocations": [
            {
              "parent_id": null,
              "attribute_id": "asset_class",
              "attribute_value": "BONDS",
              "target_allocation": 40.0,
              "min_allocation": 30.0,
              "max_allocation": 50.0,
              "children": [
                {
                  "parent_id": null,
                  "attribute_id": "duration",
                  "attribute_value": "SHORT_TERM",
                  "target_allocation": 25.0,
                  "min_allocation": 20.0,
                  "max_allocation": 30.0,
                  "children": []
                }
              ]
            }
          ]
        }
      ]
    }
  }
}
HTTP/1.1 200

{
  "data": {
    "id": "123",
    "type": "allocation_templates",
    "attributes": {
      "model_id": 456,
      "name": "Completely Replaced Template",
      "description": "This template has been completely replaced",
      "allocation_intervals": [
        {
          "effective_date": null,
          "allocations": [
            {
              "id": 5,
              "parent_id": null,
              "attribute_id": "asset_class",
              "attribute_value": "BONDS",
              "target_allocation": 40.0,
              "min_allocation": 30.0,
              "max_allocation": 50.0,
              "children": [
                {
                  "id": 6,
                  "parent_id": 5,
                  "attribute_id": "duration",
                  "attribute_value": "SHORT_TERM",
                  "target_allocation": 25.0,
                  "min_allocation": 20.0,
                  "max_allocation": 30.0,
                  "children": []
                }
              ]
            }
          ]
        }
      ]
    },
    "links": {
      "self": "/v1/allocation_templates/123"
    }
  }
}

Response Codes

  • 200 OK: Success

  • 400 Bad Request: Request payload is improperly formatted, contains invalid data, attempts to change the model ID, or violates validation rules. See Parameters table.

  • 403 Forbidden: User lacks required permissions.

  • 404 Not Found: No allocation template exists with the specified ID, or the user doesn't have permission to access it. Or, no allocation model exists with the specified ID, or the user doesn't have permission to access it.

  • 409 Conflict: There is a mismatch between the id parameter in the URL and the id provided in the request payload.

Delete allocation template

Delete an existing allocation template.

DELETE /v1/allocation_templates/:id

Example:

DELETE https://examplefirm.addepar.com/api/v1/allocation_templates/123
HTTP/1.1 204

Response Codes

  • 204 No Content: Success

  • 403 Forbidden: User lacks required permissions.

  • 404 Not Found: No allocation template exists with the specified ID, or the user doesn't have permission to access it.