Skip to content
Splashify Pro
Docs

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

bash
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_id

Command reference

What each file row contains

json
{
  "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:

bash
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

bash
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

bash
# 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 {}
  • Messages — pass file_url to message media --url
  • Templates — templates upload-media returns a Meta media handle (different surface; this page is the CDN library)