---
title: "Fetch raw SKILL.md content for a published skill"
method: GET
path: "/api/v1/catalog/skills/{owner}/{name}/content"
tags: ["Catalog"]
---

# Fetch raw SKILL.md content for a published skill

`GET /api/v1/catalog/skills/{owner}/{name}/content`

## Request

- Base URL: `https://skillrepo.dev`
- URL: `https://skillrepo.dev/api/v1/catalog/skills/{owner}/{name}/content`
- Auth: HTTP bearer

Returns the raw SKILL.md body as `text/markdown`. This is the ONLY content-delivery route in the catalog that does not wrap the payload in a JSON envelope — clients must set their `Accept` header accordingly (or accept the default).

404 is emitted BOTH when the skill does not exist and when it exists but has no SKILL.md content attached — the error body differs (`Skill not found` vs `Content not available`), but clients should treat both as terminal.

## Path parameters

- `owner` string, required
- `name` string, required

## Response `200`

Skill markdown body.

## Other responses

- `401`: Missing or invalid authentication. For routes that require `bearerAccessKey` or `bearerCatalogKey`.
- `404`: Resource does not exist, OR exists but the caller has no permission to see it. Private resources return 404 (never 403) to avoid leaking existence.
- `429`: Rate limit exceeded on the route's bucket. Includes `X-RateLimit-*` headers indicating the limit, remaining, and reset time.

---

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