> ## Documentation Index
> Fetch the complete documentation index at: https://cofounder.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Public Diary

> Read someone's public co-founder diary — no auth required.

```
GET /v1/cofounder/diary/:slug
```

This is the only **un-authenticated** endpoint in the cofounder API. Anyone with the slug can read the latest sanitized entries.

See [Public Founder Diary capability](../capabilities/public-diary) for the full conceptual overview, sanitization rules, and how to enable it.

## GET

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl https://api.appeeky.com/v1/cofounder/diary/yourname-a3kf9q?limit=20
```

Query params:

| Param   | Default | Notes   |
| ------- | ------- | ------- |
| `limit` | 20      | Max 100 |

Response:

```jsonc theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": {
    "slug": "yourname-a3kf9q",
    "entries": [
      {
        "id": "uuid",
        "appName": "Phosum: Photo & Screenshot",
        "headline": "Conversion still flat, but Mexico is screaming for localization.",
        "briefing": "...full markdown briefing with $ values masked as $▒...",
        "metricsSummary": {
          "asoScore": 38,
          "grade": "D",
          "asoScoreDelta": 0,
          "downloadsDeltaPct": 13,
          "revenueDeltaPct": -100,
          "conversionRate": 0
        },
        "publishedAt": "2026-05-02T08:00:00Z"
      }
    ]
  }
}
```

## What's in the response

* **`appName`** — public-friendly app name
* **`headline`** — one-line summary
* **`briefing`** — full markdown briefing with absolute dollars masked as `$▒`
* **`metricsSummary`** — relative metrics only (deltas %, ASO score, conversion %)
* **`publishedAt`** — when the entry was published (i.e., when the run completed)

## What's NOT in the response

* Owner email
* Integration credentials or details
* Absolute dollar revenue / MRR / ARR (always masked)
* API keys, webhooks, secrets
* The underlying full `report` object (only the sanitized briefing is exposed)

## Errors

* `404 NOT_FOUND` — slug doesn't exist or has no public entries

## Caching

The endpoint is read-only and deterministic per (slug, limit). Cache it freely on your side — entries are append-only so the same response is safe to cache for 5-10 minutes.

## Building on top

Common patterns:

```jsx theme={"theme":{"light":"github-light","dark":"github-dark"}}
// Fetch latest entry for an embedded card on your portfolio site
const { data } = await fetch(`/v1/cofounder/diary/${slug}?limit=1`).then(r => r.json());
const entry = data.entries[0];
return <DiaryCard headline={entry.headline} metrics={entry.metricsSummary} />;
```

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
# Render the latest as markdown (e.g., a daily 'build log' on your site)
curl -s https://api.appeeky.com/v1/cofounder/diary/yourname-a3kf9q?limit=1 \
  | jq -r '.data.entries[0].briefing'
```
