---
title: "Get full product details"
method: GET
path: "/api/v1/products/{slug}"
tags: ["Products"]
---

# Get full product details

`GET /api/v1/products/{slug}`

## Request

- Base URL: `https://peerpush.com`
- URL: `https://peerpush.com/api/v1/products/{slug}`
- Auth: one of:
  - API key in header `X-PeerPush-Api-Key`
  - API key in query parameter `api_key`

## Path parameters

- `slug` string, required

## Response `200`

Get full product details

- object
  - `data` Product, required
    - `id` string
    - `slug` string
    - `name` string
    - `tagline` string
    - `description` string
    - `websiteUrl` string, uri: PeerPush redirect to the product website, attributed to your API key. Use it for every link you render; it lands on the product site with PeerPush UTM tags.
    - `domain` string, nullable: Bare hostname of the product website (e.g. "example.com"), for display and matching
    - `appStoreUrl` string, uri, nullable: PeerPush redirect to the Apple App Store listing, attributed to your API key, or null
    - `playStoreUrl` string, uri, nullable: PeerPush redirect to the Google Play Store listing, attributed to your API key, or null
    - `mcpServerUrl` string, uri, nullable: Remote MCP server endpoint or registry/install page URL (raw, connect or install directly), or null
    - `cliInstallCommand` string, nullable: One-line CLI install command (e.g. "npm install -g foo"), or null
    - `apiDocsUrl` string, uri, nullable: API documentation link (UTM-tagged), or null
    - `peerpushUrl` string, uri: URL to the product page on PeerPush
    - `logoUrl` string, uri
    - `pricing` object
      - `type` 'Free' | 'Freemium' | 'Subscription' | 'OneTime' | 'Paid' | 'null', nullable
      - `startingPrice` number, nullable
    - `platforms` string[]
    - `useCases` string[]
    - `audiences` string[]
    - `categories` string[]
    - `community` object
      - `upvotes` integer
      - `followers` integer
      - `comments` integer
      - `rating` object, nullable: Aggregate rating across public (non-owner) reviews; null when there are no public ratings
        - `average` number, required: Raw average star rating (1–5) over public reviews
        - `count` integer, required: Number of public (non-owner) ratings
        - `weighted` number, required: Confidence-weighted Bayesian rating that pulls low-sample ratings toward a global prior. Use this when ranking or recommending products by rating; it prevents a single 5★ from beating a 50×4.8★ average.
      - `peerPushScore` number
      - `totalScore` number
    - `badges` object
      - `current` 'Live' | 'Trending' | 'ProductOfTheDay' | 'ProductOfTheWeek' | 'ProductOfTheMonth'
      - `productOfTheDay` string, date-time, nullable
      - `productOfTheWeek` string, date-time, nullable
      - `productOfTheMonth` string, date-time, nullable
    - `social` object
      - `twitterUsername` string, nullable
      - `linkedinUrl` string, nullable
    - `publishedAt` string, date-time, nullable
    - `lastUpdatedAt` string, date-time, nullable
    - `uptime` object: Result of the most recent uptime probes.
      - `status` 'Unknown' | 'Online' | 'Degraded' | 'Offline', required: Online (all recent probes succeeded), Degraded (mixed results), Offline (all recent probes failed), Unknown (no probes recorded yet).
      - `checkedAt` string, date-time, nullable, required
    - `activeDeals` object[]
      - `title` string
      - `percentOff` integer
      - `validUntil` string, date-time
    - `recentUpdates` object[]: Up to 10 most recent product updates, newest first. Empty when the owner has posted none.
      - `title` string, required
      - `content` string, required
      - `createdAt` string, date-time, required
      - `engagement` object, required
        - `upvotes` integer, required
        - `comments` integer, required

## Other responses

- `400`: Invalid query parameters (code: VALIDATION_ERROR)
- `401`: Missing, unknown, or revoked API key (code: UNAUTHORIZED or INVALID_API_KEY)
- `404`: Resource not found (code: NOT_FOUND)
- `429`: Hourly per-key quota exhausted (code: RATE_LIMITED)
- `500`: Unexpected server error (code: INTERNAL_ERROR)

---

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