List portfolio positions
GET/portfolio/positions
Returns the authenticated investor's positions, one per offering
(fundraise), newest first. Position totals cover everything the investor
holds in that offering; securities breaks the total down by security
offering and legal owner, so early bird tiers and personally-held vs
entity-held stakes each appear separately. Fund and SPV positions identify
the companies the vehicle invested in under holdings.
Mind the units when deriving an average cost per share: cost_basis_cents
is integer cents, while shares_held, current_share_price and
terms.share_price are decimal strings in major units of the position's
currency. Use decimal arithmetic and divide the cents by 100 first:
cost_basis_cents / 100 / shares_held. For example, 215000 cents over
"200.0" shares is 1075 cents per share, or 10.75 USD per share, which is
what to compare with a current_share_price of "14.4632". Dividing
cost_basis_cents by shares_held without the / 100 yields cents per
share, 100 times the prices shown. When shares_held is null or zero (a
non-share security, or a valuation that is not per-share) there is no
average cost per share: report it as unavailable instead of treating the
missing share count as a number.
Requires a user-authorized token, like GET /portfolio.
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 429
Successful response
Invalid filter value (unknown status or malformed cursor)
Authentication required or token is invalid/expired. This error occurs when:
- No Authorization header is provided
- The access token is invalid or malformed
- The access token has expired
- The access token has been revoked
To resolve: Obtain a new access token using the OAuth 2.0 flow.
The authenticated user does not have permission to access this resource. This typically means:
- The user is authenticated but lacks the required OAuth scope
- The resource belongs to a different user
- The user's role doesn't allow this operation
Check that your OAuth token includes the necessary scopes for this endpoint.
Filtered company not found
Too many requests in a short time period. The API enforces rate limits to ensure fair usage and system stability. When you exceed the limit, you'll receive this error along with headers indicating when you can retry.
Check the X-RateLimit-Reset header to know when your limit will reset.
Consider implementing exponential backoff in your application.
Response Headers
Request limit per hour
Remaining requests
UTC timestamp when the limit resets