API ReferenceMedia
Delete a file
Soft-deletes a file. The file remains accessible for 30 days and can be recovered within that window from the dashboard. After 30 days a nightly purge removes it from storage permanently.
Requires media:write scope.
Authorization
bearerAuth media:writeAuthorizationBearer <token>
API token from your dashboard.
Format: so_live_... (production) or so_test_... (test mode).
Tokens carry one or more scopes. Request only the scopes your integration needs:
| Scope | Grants |
|---|---|
media:read | List and retrieve files |
media:write | Upload and delete files |
logs:read | Read log entries |
logs:write | Ingest log entries |
cases:read | Read cases |
cases:write | Create and update cases |
apps:read | Read apps |
apps:write | Submit apps |
usage:read | Read quota usage |
members:read | List organisation members |
members:write | Invite and remove members |
billing:read | Read billing and subscription info |
tokens:write | Create and revoke API tokens |
In: header
Scope: media:write
Path Parameters
id*string
File ID (ULID with f_ prefix)
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/media/f_01HZXXXXXXXXXXXXXXXXXXXXX"{
"id": "f_01HZXXXXXXXXXXXXXXXXXXXXX",
"deleted": true,
"purges_at": "2026-06-14T12:00:00Z"
}{
"error": {
"code": "unauthorized",
"message": "missing or invalid authorization token"
}
}{
"error": {
"code": "forbidden",
"message": "token does not have the required scope"
}
}{
"error": {
"code": "not_found",
"message": "file not found"
}
}{
"error": {
"code": "internal",
"message": "an unexpected error occurred"
}
}