---
title: "Portfolio Allocation"
method: POST
path: "/pa/allocation"
tags: ["tradingPortfolioAnalyst"]
---

# Portfolio Allocation

`POST /pa/allocation`

Returns consolidated portfolio allocation by Financial Instrument, Asset Class, Sector, Region, or Country for a given set of accounts. Result is aggregated for the included accounts. Current day data is supported only if all included accounts have the same base currency as specified in the currency parameter.

## Request body

- object
  - `acctIds` string[], required
  - `type` 'FINANCIAL_INSTRUMENT' | 'ASSET_CLASS' | 'SECTOR' | 'REGION' | 'COUNTRY' | 'ALL', required — The allocation category type. One of FINANCIAL_INSTRUMENT, ASSET_CLASS, SECTOR, REGION, COUNTRY, or ALL. Case insensitive. When ALL is specified, the response includes allocations for every category type.
  - `currency` string — Three character currency code. The base currency to use for the NAV calculation in the response.
  - `date` string — Optional. Formatted as yyyymmdd. If specified, should be prior to the current day. If not specified, request will be for the current day. If the request is for current day and current day data is not available, then the response will be for the previous business day.
  - `model` string — Optional. Model portfolio name to use for the allocation calculation.

## Response `200`

Returns the allocation breakdown for the specified accounts.

- AllocationResponse
  - `id` string — Response identifier.
  - `currency` string — Three character currency code. Currency of NAV values, as specified in the request.
  - `realtime` boolean — true indicates the response is for current day data.
  - `date` string — The as-of date for the NAV and allocations. Formatted as yyyymmdd.
  - `allocations` object — Object keyed by allocation type (FINANCIAL_INSTRUMENT, ASSET_CLASS, SECTOR, REGION, or COUNTRY). When type=ALL is requested, multiple keys may be present.
  - `excluded` string[] — Requested accounts that were not included in the result due to an error.
  - `warning` string — Warning message, if any.

## Other responses

- `400` — Missing, empty, non-numeric, or out-of-range parameter. The `error` field is always prefixed with `Bad Request:`.
- `401` — Missing, invalid, or unparseable Authorization token.
- `500` — internal server error, returned when incoming request cannot be processed. It can sometimes include subset of bad requests. For example, wrong accountId passed and it can only be detected later in handling request. Error contains reason of the problem.
- `503` — service is unavailable. For example if request takes more than 10s due to some internal service unavailability, request aborted and this status returned

---

[API](https://skmtc.net/interactivebrokers/apis/api-reference.md) · [All operations](https://skmtc.net/interactivebrokers/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/interactivebrokers/api-reference/revisions/67f9f562c2c6/schema)
