---
title: "Update the site-wide SEO title and description"
method: PATCH
path: "/sites/{id}/meta"
tags: ["Sites"]
---

# Update the site-wide SEO title and description

`PATCH /sites/{id}/meta`

## Request

- Base URL: `https://api.nippy.host`
- URL: `https://api.nippy.host/sites/{id}/meta`
- Auth: `bearer` (a scheme the document does not define)

Persists the owner-supplied `metaTitle` / `metaDescription` overrides and re-publishes the KV record so the worker injects the new tags on the next request. Empty / whitespace-only values are stored as null (no override). Either field can be omitted to leave it unchanged.

## Path parameters

- `id` string, required

## Request body

- UpdateSiteMetaDto
  - `metaTitle` string, nullable: Site-wide `<title>` override. Empty or whitespace-only is normalised to null. Null clears the override.
  - `metaDescription` string, nullable: Site-wide `<meta name="description">` override. Empty or whitespace-only is normalised to null. Null clears the override.

## Response `200`

- APISiteMetaResponse
  - `id` string, required: Site UUID
  - `metaTitle` string, nullable, required: Site-wide `<title>` override. Null means no override; the worker leaves the source HTML untouched.
  - `metaDescription` string, nullable, required: Site-wide `<meta name="description">` override. Null means no override; the worker leaves the source HTML untouched.

## Other responses

- `400`: Invalid request body
- `401`: Not authenticated
- `403`: You do not own this site
- `404`: Site not found

---

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