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 url 7a32bce6-910d-4b1f-... # print one file's public URL
splashify media delete 7a32bce6-910d-4b1f-... # remove a file by media_idCommand reference
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.
You can also skip the URL entirely and send by id — message media --media-id
resolves it to file_url for you:
MID=$(splashify media upload ./poster.jpg | jq -r '.media.media_id')
splashify message media --to "+919876543210" --type image --media-id "$MID"Note that media_id is this platform's id (a row in your media library),
not a WhatsApp/Meta media handle — which is why it has to be resolved to a URL
before sending rather than passed through to Meta.
Accepted file types
Enforced by the backend's classifyFileType:
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 {}