Get My Portfolio
Returns the caller's current portfolio draft document (if any), publication status, and billing summary in one call. Session-authenticated only — this route does not accept an API key.
Internal session cookie for local development.
In: cookie
Response Body
application/json
application/json
curl -X GET "https://example.com/api/v1/portfolios/me"{ "success": true, "message": "string", "data": { "draft": { "id": "string", "slug": "string", "templateId": "signal", "content": {}, "revision": 0, "updatedAt": "2019-08-24T14:15:22Z" }, "publication": { "subdomain": "string", "status": "LIVE", "publishedRevision": 0, "publishedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "billing": {} }}Record Portfolio ViewPOST
Records an analytics view for a published portfolio. Responds `202 Accepted` with `data: null` — the count is not persisted synchronously. Views are buffered in Redis, deduplicated per viewer IP for 30 minutes, and flushed to Postgres by a scheduled job. A repeat view inside that window is accepted and silently dropped, so a `202` does not guarantee the count increased. No user session is required, but the request must carry an API key or originate from a whitelisted first-party origin; otherwise it is rejected with `401`.
Save Portfolio DraftPUT
Creates or updates the caller's single PORTFOLIO document with a new content snapshot. Uses optimistic concurrency via `revision` once a draft already exists. Session-authenticated only. The response is a trimmed projection of the document, not a full `Document` record.