PMOS
API Reference

The PMOS API.

~70 routes covering products, sources, modules, aggregate, PRDs and GitHub integration. Long-running jobs stream progress via text/event-stream.

products

Products

CRUD + analyze. Analyze uses an agent to propose description, target audience, competitors, and topics from a name + optional URLs.

GET
/api/products

List products.

POST
/api/products

Create a product with its initial config.

GET
/api/products/{id}

Read a product (with masked GitHub token).

PATCH
/api/products/{id}

Update identity, topics, competitors, agent settings, GitHub integration.

DELETE
/api/products/{id}

Delete a product and cascading rows.

POST
/api/products/analyze/stream
SSE

Stream agent-proposed description / audience / competitors / topics from a name + URLs.

sources

Sources

Source instances per (product, module, type). Collect, pre-filter, inspect items, and use search helpers to discover new ones.

GET
/api/products/{id}/sources

List activated sources for a product.

POST
/api/products/{id}/sources

Activate a new source instance with config.

PATCH
/api/products/{id}/sources/{sid}

Update a source's config.

DELETE
/api/products/{id}/sources/{sid}

Deactivate a source.

POST
/api/products/{id}/sources/{sid}/collect

Collect now (fresh run).

POST
/api/products/{id}/sources/{sid}/pre-filter

Run the pre-filter LLM pass on recent items.

GET
/api/github/search
PUBLIC

Discover GitHub sources by keyword / owner / topic.

GET
/api/reddit/search
PUBLIC

Discover subreddits matching keywords.

GET
/api/youtube/search
PUBLIC

Discover YouTube channels matching keywords.

GET
/api/linkedin/search
PUBLIC

Discover LinkedIn companies / handles.

modules

Modules — Discover · Listen · Compare

Per-module feed, stats, chat, report generation, and smart-configure. Generate streams step events over SSE.

GET
/api/products/{id}/modules/{module}/feed

Paginated feed of labeled items in the module.

GET
/api/products/{id}/modules/{module}/stats

Stats block: item count, per-label counts, last run.

POST
/api/products/{id}/modules/{module}/collect

Trigger a collection run across the module's sources.

GET
/api/products/{id}/modules/{module}/collection-progress
SSE

Subscribe to live collection progress events.

POST
/api/products/{id}/modules/{module}/generate

Generate a fresh module report.

POST
/api/products/{id}/modules/{module}/generate/stream
SSE

Stream report generation step events.

GET
/api/products/{id}/modules/{module}/reports

List historical reports.

POST
/api/products/{id}/modules/{module}/chat

Q&A chat scoped to the module's filtered items.

POST
/api/products/{id}/modules/{module}/smart-configure

Auto-fill sources and topics from the product profile.

aggregate

Aggregate

Cross-module synthesis — generate snapshot batches of feature suggestions with evidence, and write a PRD from any suggestion.

GET
/api/products/{id}/aggregate

List suggestions in the current batch.

POST
/api/products/{id}/aggregate/generate

Generate a fresh aggregate batch.

GET
/api/products/{id}/aggregate/batches

List prior batches (history).

GET
/api/products/{id}/aggregate/suggestions/{sid}/evidence

Evidence items that back a suggestion.

POST
/api/products/{id}/aggregate/suggestions/{sid}/write-prd

Generate a PRD from a suggestion (competitor research included).

GET
/api/products/{id}/aggregate/prompt-preview

Inspect the exact prompt that will be sent to the agent.

prds

PRDs & GitHub handoff

CRUD on PRDs plus the GitHub issue handoff. Duplicate sends are blocked (409); issue URL persists back on the source suggestion.

GET
/api/products/{id}/prds

List PRDs (manual + from suggestions).

POST
/api/products/{id}/prds

Create a blank manual PRD.

GET
/api/products/{id}/prds/{pid}

Read a PRD (title + markdown content).

PATCH
/api/products/{id}/prds/{pid}

Update title / content (debounced autosave client-side).

DELETE
/api/products/{id}/prds/{pid}

Delete a PRD.

POST
/api/products/{id}/github/issues

Create a GitHub issue from a PRD. Persists URL back on the suggestion.

ops

Ops & registry

Health, setup, global stats, and the source registry used by the UI to discover what's available.

GET
/api/health
PUBLIC

Liveness probe.

GET
/api/setup/check
PUBLIC

Report Claude CLI availability + setup status.

GET
/api/stats

Global counts (products, items, runs).

GET
/api/settings

Read global key-value settings.

POST
/api/settings

Update global settings.

GET
/api/registry

Full source registry (all collectors + capabilities).

GET
/api/registry/groups

Registry grouped into Research / Industry / GitHub / Social / Trends.

GET
/api/sources

Flat list of available source types.

GET
/api/url/check
PUBLIC

Validate and normalize a URL (used in onboarding).