Portfolio sync

Conditionally sync full or changed portfolios

Changed on

A read-only POST: send knownVersions from your saved portfolios. Changed portfolios return their full payload; unchanged ones appear only in unchangedEmails, so keep their saved data. Without changeCursor, scan the full roster and retain the first page’s nextCursor. With changeCursor, scan affected emails since the saved revision; retain that changeCursor and use the first incremental page’s nextCursor as windowCursor for every later page. Advance offset by limit even when portfolios is empty. Save the new cursor and apply removals only after the entire scan succeeds. Errors per LP are always returned, even for matching versions. There is no updatedSince timestamp filter: the durable change cursor tracks affected LPs. FULL_SYNC_REQUIRED asks for a full conditional scan (including on UTC day rollover); ROSTER_CHANGED asks you to restart the current scan. Required key scope: lp:read.

post/api/v2/lp/portfolios

Request

  • Base URL: https://capitalcompany.ai
  • URL: https://capitalcompany.ai/api/v2/lp/portfolios
  • Auth: one of:
    • HTTP bearer
    • API key in header x-api-key

Request body

limitinteger

Maximum roster or affected-email rows examined per page (1–25). Omitted means 10; unchanged and removed rows also count.

offsetinteger

Number of roster rows to skip; omitted means 0. Advance by the requested limit, not the number of changed portfolios.

rosterVersionstring

Full-scan roster token returned by the first page. Send on later full-scan pages; on ROSTER_CHANGED restart at offset 0 without it. Do not combine with changeCursor.

changeCursorstring

Opaque nextCursor saved from a completed scan. Requests only affected emails since that revision. Omit for a full conditional scan; FULL_SYNC_REQUIRED requires a full scan.

windowCursorstring

For subsequent incremental pages, send nextCursor from the first incremental page. Keep changeCursor fixed through the scan; windowCursor requires it and is mandatory for offset > 0.

Response

Same shape as GET. In incremental mode totalCount counts affected emails including removals; in full mode it counts the roster. knownVersions is required even when empty. Tokens are opaque and team-scoped.

successtrue required

Changes

    • warning

      added the new from-invested-capital enum value to the ///////// response property for the response status

    • warning

      added the new initial-investment enum value to the ///////// response property for the response status