RoboInvestor

Update Portfolio Block

Patch portfolio fields and apply position deltas (add / update / dispose) atomically. Partial failures roll back.

Idempotency: supply an Idempotency-Key header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.

post/extensions/roboinvestor/{graph_id}/operations/update-portfolio-block

Request

  • Base URL: https://api.robosystems.ai (the document declares no server; this is the origin it was published from)
  • URL: https://api.robosystems.ai/extensions/roboinvestor/{graph_id}/operations/update-portfolio-block
  • Auth: one of:
    • API key in header X-API-Key
    • HTTP bearer

Path parameters

graph_idstring required

Headers

Idempotency-Keystring nullable

Request body

portfolio_idstring required

Target portfolio ID.

Example request

{
  "portfolio": {
    "description": "Pivoted toward defensive holdings"
  },
  "portfolio_id": "port_q1_growth_2026",
  "positions": {
    "add": [],
    "dispose": [
      {
        "disposition_reason": "Liquidated; rotated capital",
        "id": "pos_oldcorp_lot_3"
      }
    ],
    "update": [
      {
        "current_value": 1980000,
        "id": "pos_aapl_lot_1",
        "valuation_date": "2026-05-06",
        "valuation_source": "broker_statement"
      },
      {
        "current_value": 2310000,
        "id": "pos_msft_lot_1",
        "valuation_date": "2026-05-06",
        "valuation_source": "broker_statement"
      }
    ]
  }
}

Response

Successful Response

operationstring required

Kebab-case operation name

operationIdstring required

op_-prefixed ULID for audit and SSE correlation

status'completed' | 'pending' | 'failed' required

Operation lifecycle state

atstring required

ISO-8601 UTC timestamp

createdBystring nullable

User ID that initiated the operation

idempotentReplayboolean

True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

Changes

No recorded changes to this operation across all 1 revision of this API.