DELETE /v1/projects/:projectId/app-media/:mediaId
Soft-delete a partner-managed app-media asset.
DELETE
/v1/projects/:projectId/app-media/:mediaIdstableidempotent
- Auth
- Bearer
- Scope
- projects:write
Soft-deletes the row. The R2 object is reaped by a background sweep; the asset disappears from GET /app-media and from content-generation queries immediately.
Scoped to the four partner-managed kinds (logo, screenshot, demo-video, end-card). Attempts to delete system-managed rows (auto-generated end-cards with metadata.source = 'end-card-generator', internal-only kinds) return 404 to avoid leaking row existence across role boundaries.
Response
200Deleted
{
"id": "med_01HZ...",
"deleted": true
}Errors
| Status | Code | When |
|---|---|---|
| 422 | VALIDATION | :mediaId is not a valid med_<uuid> id. |
| 401 | UNAUTHENTICATED | Missing or invalid key. |
| 403 | FORBIDDEN_SCOPE | Key lacks projects:write. |
| 404 | NOT_FOUND | The media row doesn't exist, is already deleted, isn't in this project, or isn't a partner-managed kind. |
Notes
- Logo replacement is automatic. Uploading a new logo via
POST /app-mediasoft-deletes any prior logo on the project. You don't need to DELETE the old one first. - Screenshots and demo videos are independently deletable. Each is a separate row.