---
title: "Api Portfolio Sync Tickers Post"
method: POST
path: "/api/portfolio/sync-tickers"
tags: ["Portfolio"]
---

# Api Portfolio Sync Tickers Post

`POST /api/portfolio/sync-tickers`

## Request

- Base URL: `https://www.oxfordledge.com` (the document declares no server; this is the origin it was published from)
- URL: `https://www.oxfordledge.com/api/portfolio/sync-tickers`
- Auth: none declared

Save portfolio ticker list to server for the authenticated user.

## Response `200`

Successful Response

- PortfolioSyncTickersPostResponse: `POST /api/portfolio/sync-tickers` — save ticker list cross-device. Run 19 F4 backfill 2026-05-12 (Initiative 6). Persists the authenticated user's `portfolio_tickers` preference; returns `{status: 'ok', persisted: bool}`. `persisted=False` when PG is unavailable (request still succeeds, just not durable).
  - `status` string, required: 'ok' on success. FE treats absence as failure.
  - `persisted` boolean, nullable: True when the change was written to PG. False on PG-unavailable fallback (still a 200 status).
  - `mirrored` integer, nullable: Number of tickers newly inserted into portfolio_positions on this call (0 if all were already mirrored).
  - `error` string, nullable: Validation or persist error.

---

[API](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api.md) · [All operations](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/llms.txt) · [OpenAPI document](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/revisions/e832a1260f0b?raw)
