# Get a content by slug

**Publié le** : 2026-05-12
**Catégorie** : Content

## `GET /contents/slug/:slug`

**Get a content by slug**

Fetch a single published content entry by slug, scoped to the site
identified in the URL `:siteId`. Returns the full body (rendered
HTML), SEO fields, custom data, and structured-data graph. Drafts,
scheduled, and archived entries are not exposed.

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `slug` | path | string | Yes | URL-friendly identifier, unique per site and locale |


### Responses

| Status | Description |
| --- | --- |
| `200` | Successful response |
| `404` | Not found |


> **Notes:** Cache: `Cache-Control: public, max-age=120`. Rate-limit bucket: general.

### Examples

```curl
curl "https://api.lynkow.com/public/{siteId}/contents/slug/how-we-set-our-pricing?locale=en"
```

```javascript
const res = await fetch(`https://api.lynkow.com/public/${siteId}/contents/slug/how-we-set-our-pricing?locale=en`)
const { data } = await res.json()
```

### Response Example

```json
"{\n  \"data\": {\n    \"id\": \"01J9P1B5N4XZRWQEKM2H6A3T8C\",\n    \"title\": \"How we set our pricing\",\n    \"slug\": \"how-we-set-our-pricing\",\n    \"locale\": \"en\",\n    \"categoryId\": \"01J9PA0NZK7BX4HQ7M2DC9V5T8\",\n    \"tags\": [\"pricing\", \"company\"],\n    \"body\": \"<p>Our pricing model is built around three principles...</p>\",\n    \"excerpt\": \"A behind-the-scenes look at the pricing model.\",\n    \"seo\": {\n      \"metaTitle\": \"How we set our pricing | Acme\",\n      \"metaDescription\": \"The principles behind Acme pricing.\",\n      \"ogImage\": \"https://cdn.lynkow.com/sites/acme/og/pricing-blog.png\"\n    },\n    \"publishedAt\": \"2026-05-05T08:00:00.000Z\",\n    \"updatedAt\": \"2026-05-05T08:00:00.000Z\"\n  }\n}\n"
```

---