---
title: "Replace Seed Skill Tiptap Document"
method: POST
path: "/api/py/sandbox/seeding/replace-skill-tiptap"
---

# Replace Seed Skill Tiptap Document

`POST /api/py/sandbox/seeding/replace-skill-tiptap`

## Request

- Base URL: `https://api.getauctor.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getauctor.com/api/py/sandbox/seeding/replace-skill-tiptap`
- Auth: none declared

Replace the Tiptap document of an existing skill row for a starter
skill restore (onboarding ADR 0017).

Restore targets keep their row id, and a legacy starter skill row carries
a non-deterministic id, so the create route's derivation check cannot
authorize this write. Containment comes from the database instead: the
skill row must exist under the caller's authenticated organization and
the given user, whatever its deleted state. Replacement overwrites an
existing document and creates a missing one — a soft-deleted skill's
document was deleted with it.

## Request body

- ReplaceSkillTiptapBody
  - `skill_id` string, uuid, required
  - `user_id` string, required
  - `content` object, required

## Response `200`

Successful Response

- ReplaceSkillTiptapResponse
  - `replaced` boolean, required

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-01** `aeb6faa3b8f0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/getauctor/apis/getauctor-api/changes/api/py/sandbox/seeding/replace-skill-tiptap/post.md)

---

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