---
title: "Get one listing by slug id"
method: GET
path: "/api/upstream/listings/{id}"
tags: ["catalog"]
---

# Get one listing by slug id

`GET /api/upstream/listings/{id}`

## Request

- Base URL: `https://skillselion.com`
- URL: `https://skillselion.com/api/upstream/listings/{id}`
- Auth: none declared

Full detail row for a skill, MCP server, marketplace or plugin. Path-style ids (colons, slashes, hashes) must be URL-encoded.

## Path parameters

- `id` string, required

## Headers

- `API-Version` '1'

## Response `200`

The listing.

- Listing
  - `id` string, required: Listing slug id (path-style ids are URL-encoded).
  - `type` 'skill' | 'marketplace' | 'plugin' | 'mcp' | 'workflow', required
  - `name` string, required
  - `author` string
  - `repo` string: GitHub owner/repo when known.
  - `description` string
  - `summary` string
  - `category` string
  - `stage` 'idea' | 'validate' | 'build' | 'ship' | 'launch' | 'grow' | 'operate'
  - `stars` integer
  - `installs` integer: Real install count from the skills.sh registry.
  - `votes` integer: Internal ranking tiebreak only; voting UI is retired.
  - `verifiedSafe` boolean
  - `trustScore` number

## Other responses

- `400`: Invalid query or body.
- `401`: Authentication required (staff routes only).
- `404`: No listing or route matches.
- `405`: Method not allowed.
- `429`: Rate limited. Retry-After and RateLimit headers are set.
- `500`: Upstream or server error.

---

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