Media library
The media command surfaces the /media page — list every file
uploaded to your account, see storage usage, upload new files from disk,
and delete files by media_id.
Quick start
splashify media # list every file (URLs + details)
splashify media list # same as above (alias)
splashify media list --type image # filter by type
splashify media storage # storage quota + usage
splashify media upload ./logo.png # upload a file from disk
splashify media upload /var/files/invoice.pdf
splashify media delete 7a32bce6-910d-4b1f-... # remove a file by media_idCommand reference
| Subcommand | Backed by |
|---|---|
(none — default) / list / ls | GET /api/v1/app/media[?type=...] |
storage / quota | GET /api/v1/app/media/storage |
upload <path> | POST /api/v1/app/media/upload (multipart, field file) |
delete <media_id> / rm <media_id> | DELETE /api/v1/app/media/:media_id |
What each file row contains
{
"media_id": "uuid",
"file_name": "media/.../1700000000-original.png",
"original_name": "logo.png",
"file_url": "https://splashify.blr1.cdn.digitaloceanspaces.com/media/...",
"file_type": "image",
"mime_type": "image/png",
"file_size": 12345,
"file_extension": ".png",
"created_at": "2026-05-19T13:57:23.582Z"
}The file_url is the public CDN URL of the file. You can hand it
straight to splashify message media --url <file_url> to send the file
in a WhatsApp message without re-uploading.
Accepted file types
Enforced by the backend’s classifyFileType:
| Type | Extensions | Max size |
|---|---|---|
image | .jpg .jpeg .png | per backend config |
video | .mp4 | per backend config |
audio | .mp3 .ogg .webm .aac .amr .m4a | per backend config |
document | .pdf .xlsx .xls .doc .docx .csv | per backend config |
Other extensions are refused with a 400 listing the accepted set. The exact per-type size caps live in the backend and are reported in the error message when a file is too large.
Storage quota
splashify media storage | jq
# {
# "success": true,
# "storage_used": 524288,
# "storage_limit": 5368709120,
# "files_count": 12
# }When an upload would exceed the quota the backend refuses with HTTP 400
and the JSON includes storage_used and storage_limit so the CLI
surfaces a clear “storage quota exceeded” message.
Common patterns
# Just the URLs of every image
splashify media list --type image | jq -r '.files[].file_url'
# Total bytes used by uploaded videos
splashify media list --type video | jq '[.files[].file_size] | add'
# Most recent upload of any type
splashify media | jq '.files | sort_by(.created_at) | reverse | .[0]'
# Bulk delete every audio file — irreversible
splashify media list --type audio | jq -r '.files[].media_id' | \
xargs -I{} splashify media delete {}