> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cabalspy.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Delete

> POST /v1/theses/delete: delete a thesis or reply in the name of its author.

Deletes a thesis or reply in the name of its author, one of your users. Users can delete only their own posts. A `thesis.removed` event goes out on the [stream](/cabalspy-id/stream#thesis-events).

## Body

<ParamField body="thesis_id" type="string" required>
  The thesis or reply to delete.
</ParamField>

<ParamField body="csid_id" type="string" required>
  The author, one of your users.
</ParamField>

<ParamField query="api_key" type="string" required>
  Your API key. Alternatively pass it as an Authorization Bearer header.
</ParamField>

## Usage Example

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api-id.cabalspy.xyz/v1/theses/delete" \
    -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
    -d '{"thesis_id":"8d1f5a2e-6c4b-4e0f-9a7d-1b2c3d4e5f60","csid_id":"0b7c4a52-3f1e-4f43-9d0a-2b5e7c1d9a11"}'
  ```

  ```python Python theme={null}
  import requests

  r = requests.post("https://api-id.cabalspy.xyz/v1/theses/delete",
                    headers={"Authorization": "Bearer YOUR_KEY"},
                    json={"thesis_id": thesis_id, "csid_id": session_user_sub})
  ```

  ```javascript JavaScript theme={null}
  await fetch("https://api-id.cabalspy.xyz/v1/theses/delete", {
    method: "POST",
    headers: { Authorization: "Bearer YOUR_KEY", "Content-Type": "application/json" },
    body: JSON.stringify({ thesis_id: thesisId, csid_id: session.userSub }),
  });
  ```
</CodeGroup>

## Response

<ResponseField name="success" type="boolean">
  True on success.
</ResponseField>

<ResponseField name="data" type="object">
  `{"deleted": true}`
</ResponseField>

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "data": { "deleted": true },
    "meta": { "request_id": "req_5162c7cf7f87", "cached": false, "cache_age_seconds": 0, "version": "v1", "timestamp": "2026-10-13T09:40:00Z" }
  }
  ```
</ResponseExample>

## Errors

| Status | Code | Meaning |
| - | - | - |
| 400 | missing\_parameter | thesis\_id or csid\_id is missing. |
| 400 | invalid\_parameter | csid\_id invalid. |
| 401 | missing\_api\_key | API key missing. |
| 403 | invalid\_api\_key | API key invalid or not enabled for CabalSpy ID. |
| 403 | consent\_required | The user has not granted your app the scope thesis. |
| 403 | plan\_user\_limit | The user is beyond your plan's user limit. |
| 403 | sandbox\_user | Sandbox test users cannot write. |
| 404 | not\_found | The post does not exist, is already deleted, or was written by someone else. |
| 429 | rate\_limit\_exceeded | Your API key's request rate is exceeded. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.