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

# Delete Story

> Soft delete or hard delete stories with StoryRepository deletion APIs.

Story repositories expose soft delete and hard delete operations. Soft delete marks a story as deleted and removes it from normal story collections. Hard delete passes the permanent-delete flag to the backend.

> [!WARNING]
>
> Treat hard delete as irreversible from the client perspective. Do not offer it in user-facing flows without confirmation.

## Parameters

| Operation | Parameter | Required | Description |
| - | - | - | - |
| Soft delete | `storyId` | Yes | Story ID to soft delete. |
| Hard delete | `storyId` | Yes | Story ID to hard delete after confirmation. |

## Soft Delete

Soft delete a story when the item should disappear from normal story surfaces while preserving deleted-state semantics.

```typescript TypeScript theme={null}
import { StoryRepository } from '@amityco/ts-sdk';

const deleted = await StoryRepository.softDeleteStory(storyId);
showSuccessMessage(deleted);
```

```swift iOS theme={null}
try await storyRepository.softDeleteStory(storyId: "story-id")
showSuccessMessage("Story soft deleted")
```

```kotlin Android theme={null}
fun softDeleteStory(
    storyRepository: AmityStoryRepository,
    storyId: String
) {
    storyRepository.softDeleteStory(storyId = storyId)
        .doOnComplete { showSuccessMessage("Story soft deleted") }
        .doOnError { error -> showErrorMessage(error = error) }
        .subscribe()
}
```

```dart Flutter theme={null}
Future<void> softDeleteStory(String storyId) async {
  await AmitySocialClient.newStoryRepository().softDeleteStory(
    storyId: storyId,
  );
}
```

## Hard Delete

Hard delete a story only after the product confirms permanent removal is intended.

```typescript TypeScript theme={null}
import { StoryRepository } from '@amityco/ts-sdk';

const deleted = await StoryRepository.hardDeleteStory(storyId);
showSuccessMessage(deleted);
```

```swift iOS theme={null}
try await storyRepository.hardDeleteStory(storyId: "story-id")
showSuccessMessage("Story hard deleted")
```

```kotlin Android theme={null}
fun hardDeleteStory(
    storyRepository: AmityStoryRepository,
    storyId: String
) {
    storyRepository.hardDeleteStory(storyId = storyId)
        .doOnComplete { showSuccessMessage("Story hard deleted") }
        .doOnError { error -> showErrorMessage(error = error) }
        .subscribe()
}
```

```dart Flutter theme={null}
Future<void> hardDeleteStory(String storyId) async {
  await AmitySocialClient.newStoryRepository().hardDeleteStory(
    storyId: storyId,
  );
}
```

## Choosing a Delete Type

| Delete type | Use when |
| - | - |
| Soft delete | You want the story removed from normal story surfaces while preserving delete semantics in SDK state. |
| Hard delete | You need a permanent deletion request and have confirmed the action with the user or moderator. |

## Related Topics

> [card] [Get Stories](/social-plus-sdk/social/content-management/stories/retrieval/get-stories.md)
>
> Observe collections after delete operations.

> [card] [Create Story](/social-plus-sdk/social/content-management/stories/creation/create-story.md)
>
> Create new story content.


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