---
title: "Remove a published post from every platform it is live on"
method: POST
path: "/posts/{id}/takedown"
---

# Remove a published post from every platform it is live on

`POST /posts/{id}/takedown`

## Request

- Base URL: `https://xpost.to/api/v1`
- URL: `https://xpost.to/api/v1/posts/{id}/takedown`
- Auth: HTTP bearer

Takes a whole POST down: every delivery of it that is live right now, or only the ones on `platform`. Same effect and the same care as `/post-results/{id}/takedown` — no undo, receipt rows stay, the actor is recorded — without fetching the receipt first to learn a delivery id. One platform refusing does not stop the others: each delivery answers for itself in `deliveries`, with `error_code` and `retriable` where it was refused. Only ever on an explicit request to take that post down.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `platform` string: Only take it down here (e.g. `x`). Omit for every platform it is live on.

## Response `200`

Each live delivery's outcome

- object
  - `post_id` string, uuid
  - `taken_down` integer: How many deliveries came down
  - `deliveries` object[]
    - `id` string, uuid
    - `platform` string
    - `username` string
    - `taken_down` boolean
    - `error` string
    - `error_code` string
    - `retriable` boolean

## Other responses

- `400`: Body must be JSON
- `401`: Missing or invalid API key
- `403`: Missing posts:write scope
- `404`: That post isn't in this project
- `409`: The post isn't live anywhere (never_went_out)
- `429`: Rate limited

---

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