Skip to main content
POST
Commit an approved paper portfolio import

Authorizations

Authorization
string
header
required

Itoflow access token issued for the Itoflow API.

Body

application/json

Commit the exact normalized draft returned by preflight after explicit user approval. Add draft.approved_at, use an output_id ending :approved, and pass the current approval_token. Revalidate and obtain renewed approval after a material change.

approval_token
string
required

Current approval_token returned by preflight for the exact normalized draft and allocated amount.

Required string length: 1 - 4000
draft
object
required
output_id
string
required

Stable reviewed output id ending in :approved. Preserve the reviewed id prefix for idempotency.

Required string length: 1 - 240
Pattern: :approved$
draft_file
object

Optional draft.json file reference used for auditability.

Response

Idempotent portfolio import result

Successful managed paper portfolio import response.

ok
enum<boolean>
required

True when import succeeded.

Available options:
true
portfolio_id
string
required

Id of the created managed paper portfolio.

Minimum string length: 1
portfolio_url
string
required

App URL path for the created portfolio.

Minimum string length: 1
allocated_amount_usd
string

USD capital allocated to the imported managed paper portfolio.

Minimum string length: 1
execution_mode
enum<string>

Execution mode of the created portfolio.

Available options:
paper
idempotent
boolean

True when this response came from an idempotent retry of an existing import.

imported_cash_count
integer

Count of cash rows imported.

Required range: x >= 0
imported_holding_count
integer

Count of holding rows imported.

Required range: x >= 0
portfolio_type
enum<string>

Portfolio type of the created portfolio.

Available options:
managed
portfolio_value
object

Reviewed value provenance and its difference from the current provider mark, when comparable.

presentation_hint
string

Hint about what is attached to the portfolio, based on verified state. A fresh import has nothing attached and keeps any watch-or-manage intent already supplied; an idempotent retry may instead report an existing monitor or strategy, or say the state could not be verified. A failed lookup does not mean nothing is attached.

Minimum string length: 1
row_warnings
object[]

Per-holding valuation warnings with row_id. Price warnings use field price: price_not_fetched means the vendor did not answer; no_recent_close means no usable close in the last 14 days. holding_fx_unavailable uses field currency and names the missing exchange rate to USD. Warnings do not block confirmation.

source_broker
enum<string> | null

Broker metadata stored with the created portfolio, or null when absent.

Available options:
trading212,
robinhood,
zerodha,
alpaca,
ibkr,
other,
null
strategy_id
string

Id of a controlling strategy already linked to this portfolio, when present. Fresh import does not create a strategy; this is set only on an idempotent retry of an older import that already has one.

Minimum string length: 1
strategy_name
string

Name of the already-linked controlling strategy, when present.

Minimum string length: 1
strategy_url
string

App URL path for the already-linked controlling strategy, when present.

Minimum string length: 1