# CEO.ca — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Monitor trending stocks, browse popular discussion posts, and read full conversation threads from CEO.ca to stay informed on market discussions and investment opportunities. Get real-time insights into what's being talked about and what stocks are gaining traction on the platform.

**Category:** Finance & Markets | **Website:** [ceo.ca/](https://ceo.ca/) | **Docs:** [parse.bot/marketplace/5f294198-b72e-4e23-824c-c5ccec0ef5a8/ceo-ca-api](https://parse.bot/marketplace/5f294198-b72e-4e23-824c-c5ccec0ef5a8/ceo-ca-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/ceo-ca/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get discussion thread

Fetch the discussion thread for a specific stock channel (ticker) or topic. Returns posts in reverse chronological order. Supports time-based pagination via the until parameter — pass the timestamp of the last post to load older posts.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channel` | string | Yes | The stock ticker or channel name (e.g. 'gold', 'silver', 'index', 'boardroom', or a company ticker like 'eqx'). |
| `limit` | integer | No | Maximum number of posts to fetch. |
| `until` | integer | No | Timestamp (milliseconds since epoch) to paginate from. Posts older than this timestamp will be returned. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/ceo-ca/get-discussion-thread \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<string>","limit":"<integer>","until":"<integer>"}'
```

### Get popular posts

Fetch the most popular posts across all channels on CEO.ca. Returns posts ordered by engagement score descending. Supports time-based pagination via the until parameter — pass the timestamp of the last post to load older posts.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Maximum number of posts to fetch. |
| `until` | integer | No | Timestamp (milliseconds since epoch) to paginate from. Posts older than this timestamp will be returned. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/ceo-ca/get-popular-posts \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","until":"<integer>"}'
```

### Get stock news

Fetch recent CEO.ca newsfeed articles for a specific stock channel. Extracts news and featured articles embedded in the channel's data response (no extra upstream request per article). Returns structured article metadata including title, publication timestamp, source/publisher, canonical URL, and tags. Articles are deduplicated by slug, filtered to the requested lookback window, and sorted newest first. The upstream source provides up to 8 articles (4 news + 4 featured); news_window_complete indicates whether the lookback window is fully covered by available data.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channel` | string | Yes | The stock ticker or channel name (e.g. 'mog', 'eqx', 'big'). |
| `news_limit` | integer | No | Maximum number of news articles to return. Must be between 1 and 25. |
| `news_lookback_days` | integer | No | Number of days to look back for news articles. Must be between 1 and 30. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/ceo-ca/get-stock-news \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<string>","news_limit":"<integer>","news_lookback_days":"<integer>"}'
```

### Get stock snapshot

Fetch a combined snapshot of a stock channel's current trading volume, latest discussion comments, and recent CEO.ca news articles in a single Parse API request. Volume metrics come from the channel's quote data. Comments use the same upstream discussion-thread source. News is extracted from the embedded articles in the same upstream response (no extra request for the news list). When include_comments or include_news is false, the respective section is skipped. Returns upstream_error when the channel has no quote data (e.g. non-company topic channels or non-existent tickers).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channel` | string | Yes | The stock ticker or channel name (e.g. 'mog', 'eqx', 'big'). |
| `comment_limit` | integer | No | Maximum number of discussion comments to return. Must be between 1 and 25. |
| `include_comments` | boolean | No | When false, skip fetching comments and return only volume and news data. |
| `include_news` | boolean | No | When false, skip news extraction and return only volume and comments data. |
| `news_limit` | integer | No | Maximum number of news articles to return. Must be between 1 and 25. |
| `news_lookback_days` | integer | No | Number of days to look back for news articles. Must be between 1 and 30. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/ceo-ca/get-stock-snapshot \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<string>","comment_limit":"<integer>","include_comments":"<boolean>","include_news":"<boolean>","news_limit":"<integer>","news_lookback_days":"<integer>"}'
```

### Get stock volume

Fetch the current trading volume and average volume for a specific stock channel on CEO.ca. Makes one request to the channel's data endpoint and extracts quote-level volume metrics. Returns upstream_error when the channel has no quote data (e.g. non-company topic channels or non-existent tickers).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channel` | string | Yes | The stock ticker or channel name (e.g. 'mog', 'eqx', 'big'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/ceo-ca/get-stock-volume \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<string>"}'
```

### Get trending stocks

Fetch currently trending stocks, featured channels, and channel categories (commodities, crypto, etc.) from CEO.ca. Accepts limit and page parameters for paginating the trending stocks list. Returns the current snapshot of trending activity with pagination metadata.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Maximum number of trending stocks to return per page. |
| `page` | integer | No | Page number for paginating through trending stocks (1-based). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/ceo-ca/get-trending-stocks \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>"}'
```

### Get volume anomalies

Fetch CEO.ca's company list sorted by volume anomaly (highest volume-to-average ratio first). Makes one upstream request per 50-item source page. Returns ticker, channel, company name, exchange, current session volume, average volume, volume ratio, last price, and quote timestamp. Supports limit (1–100, default 25) and page (1-based) parameters for pagination. Returns freshness metadata (fetched_at timestamp) and has_more/total_available for continuation. Non-company channels or tickers without quote data may have null fields. Outside market hours, the anomalies array may be empty.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Maximum number of volume anomaly records to return per page. Must be between 1 and 100. |
| `page` | integer | No | Page number for pagination (1-based). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/ceo-ca/get-volume-anomalies \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>"}'
```

## Next steps

- [All wrapped API providers](https://paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://paywithlocus.com/agent/index.md): every Locus agent page.