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 |
Endpoints | GET /v1/allocation_models /v1/allocation_models/:id POST /v1/allocation_models PATCH /v1/allocation_models/:id DELETE /v1/allocation_models/:id |
Produces | JSON |
Pagination | Yes |
Application permissions required | Access to "Manage data configuration: Target Allocation" |
Resource overview
The Target Allocations API returns a resource object containing the allocation model ID in successful responses.
Attributes | Description | Example |
---|---|---|
id | The unique id of the allocation model. | "123" |
Parameters
You can create or update an allocation model by providing the following parameters:
Attribute | Description | Example | Validation |
---|---|---|---|
name | The name of the allocation model being created. | "Balanced Growth Model" | 400 bad request returned if missing field |
attribute_ids | A 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 fieldattribute_ids
-
403 Forbidden
: User lacks the required permission. -
404 Not Found
: No allocation model exists with the specifiedid
, or the user doesn't have permission to access it. -
409 Conflict
: There is a mismatch between theid
parameter in the URL and theid
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 |
Endpoints | GET /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 |
Produces | JSON |
Pagination | Yes |
Application permissions required | Access to "Manage data configuration: Target Allocation" |
Resource overview
The Target Allocations API returns a resource object containing the allocation template ID in successful responses.
Attributes | Description | Example |
---|---|---|
id | The unique id of the allocation template. | "123" |
children | Nested 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:
Attribute | Description | Example | Validation |
---|---|---|---|
model_id | The 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 request returned 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. |
name | The name of the target allocation being created. | "Conservative Growth Template" | 400 bad request returned if missing field in POST and PUT requests |
description | An optional field for the description listed under the target allocation. | "A balanced allocation template for conservative growth" | |
allocation_intervals | Allocation distribution for each dimension of the associated allocation model. Only attribute_id s defined in the corresponding level of the referenced model can be usedmin_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 fieldmodel_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 theid
parameter in the URL and theid
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.
Updated 6 days ago