Skip to main content
POST
Reconcile a portfolio's holdings to an absolute desired state

Authorizations

x-api-key
string
header
required

Raw API key shown once when created in the Allocait app (Settings > API keys). Send it verbatim in this header; the server stores and compares only its SHA-256 hash. Allocait generates every key: alc_ followed by 64 lowercase hex characters. Keys issued before 2026-10-10 are 64 hex characters with no prefix and keep working. A key may carry an expiry (90 days or 1 year, or never). A malformed, unknown, revoked or expired key gets 401 with no further detail, and a malformed one is refused before any lookup. Keys cannot be created through this API.

Path Parameters

id
string<uuid>
required

portfolio_id

Body

application/json
positions
object[]
required

The full desired set of non-cash holdings.

price_overrides
object

Symbol-to-price map. Keys are ticker symbols, matched case-insensitively (normalised to uppercase); values are numbers, 0 or more. 0 is a real price, for example an option that expired worthless. On the agent surface, a symbol you leave out of this map is never priced from Allocait's own data (ADR-036); it comes back null, or the call is refused, depending on the endpoint. Two exceptions are the user's own numbers, not Allocait's: a held option with a mark is priced at its mark, so you may leave it out, and a price you pass for it replaces the mark for that call only and is never stored; an option past its expiry counts 0 whatever you pass (ADR-147).

Example:

Response

Reconciliation result

success
boolean
portfolio_id
string<uuid>
created
object[]
updated
object[]

Share changes, plus class, sizing and Moves changes on an unchanged share count as {symbol, shares, asset_class_id, sizing}.

closed
object[]

Holdings taken to 0 shares. Closing a short is a cover, which debits cash; read the sign of the change in shares, not the word, to tell which way cash moved.

unchanged
object[]

Symbols already matching the desired state, shares and class. No RPC call was made for these.

action_ids
string<uuid>[]

The actions this call recorded, for PATCH /actions/{id} to add a comment later.

unclassified
string[]

Holdings left with no asset class. No band judges them until they have one.