Skip to main content
20% off 3 months · code LAUNCH20 · until 31 October

Insights API

“How was this week?” answered by one request. Signups and where they came from, entries published, subscribers gained, feedback by type with what people actually said, notification read rate, and the MRR change if Stripe is connected. Every number comes with the same number for the period before.

Get an API key → Endpoint reference

How do I get a weekly summary of my product without analytics?

Call GET /v1/insights?period_days=7 with a secret key, or ask an agent with the Nordva Launch MCP server connected “how was this week?”: it calls get_insights. The response counts rows Launch already holds for your project, so there is no script to add and nothing collected about visitors. Available on every plan.

The call

curl "https://api.nordva.dev/v1/insights?period_days=7" \
  -H "Authorization: Bearer nv_live_…"

The response

{
  "period_days": 7,
  "from": "2026-09-11T03:00:00.000Z",
  "to": "2026-09-18T03:00:00.000Z",
  "waitlist": {
    "signups": { "current": 38, "previous": 21 },
    "confirmed": 31, "invited": 0, "via_referral": 9, "total": 412,
    "top_sources": [{ "source": "news.ycombinator.com", "signups": 17 }, { "source": "twitter", "signups": 8 }]
  },
  "changelog": { "published": { "current": 2, "previous": 0 }, "new_subscribers": { "current": 6, "previous": 3 }, "subscribers_total": 58 },
  "feedback": {
    "submissions": { "current": 11, "previous": 4 },
    "by_classification": [{ "classification": "feature_request", "count": 6 }, { "classification": "bug", "count": 3 }],
    "latest_summaries": [{ "classification": "bug", "summary": "Export fails for lists over 2,000 rows", "created_at": "2026-09-17T20:41:07.512Z" }]
  },
  "notifications": { "sent": { "current": 120, "previous": 96 }, "read": 74, "read_rate": 0.617 },
  "revenue": { "connected": true, "by_currency": [{ "currency": "usd", "mrr_minor": 184000, "new_mrr_minor": 9800, "churned_mrr_minor": 1900, "collected_minor": 203400 }] }
}

Amounts are in the smallest currency unit and never converted between currencies. period_days is 1 to 365, default 30. read_rate is null when nothing was sent.

What it is for

  • A Monday status line in your own Slack, from a cron that calls it with period_days=7 and posts the numbers that moved.
  • An agent's first call when you ask how things are going; it then uses the specific tools (waitlist stats, feedback list, revenue summary, attribution) to dig into one part.
  • A founder dashboard that is one fetch and no analytics vendor: the numbers are the rows in your waitlist, changelog, feedback and notifications tables.
  • The weekly digest email is this call, formatted, sent only when something happened.

What it is not

Not web analytics. No pageviews, sessions, unique visitors, paths or countries, and no script to install. If you want to know which channel drives paying customers, that is the attribution report, which joins each signup's first-touch source to Stripe and can, opt-in, count anonymous page views per source.

Questions

Is this web analytics?

No. There is no script on your site and no pageviews. Every number is a count of rows Launch already stores because you use its waitlist, changelog, feedback, notifications or Stripe connection. Views per source exist separately, opt-in, in the attribution report.

Which plans include it?

All of them, including Free. It needs a secret key; the MCP tool get_insights returns the same data to an AI agent. The revenue section is empty until a Stripe account is connected read-only, which is an Indie and Builder feature.

What does “previous” mean?

The same metric for the period of the same length immediately before. With period_days=7 on a Thursday, current is the last seven days and previous the seven before those, so an agent or a dashboard can say up or down from one call.

Is there an email version?

Yes. The weekly digest, opt-in under Settings, is built from the same call with period_days=7 and sent on Mondays. A week with nothing in it sends nothing.

Where do feedback summaries come from?

On Indie and up, each feedback item is classified and summarised by a model when it arrives, after best-effort removal of emails, phone and card numbers. Insights returns the five most recent summaries so a status update can name what people asked for, not just how many. On Free, feedback is sorted by keywords and has no summary, so Insights shows the start of each message instead.