enabled is false, POST media 404s and GET ui reports features.media: false so the composer hides the control.
Request
multipart/form-data field file. Authenticated users need create on Comment. Guests need allow_guests and media.guests not deny.
Response 201:
. The bundled composer does this for you when media is on.
Allowed MIME types (config): image/gif, image/jpeg, image/png, image/webp.
Limits by role
ModeratorGate::role() → guest | user | moderator:
Oversized files →
413. Too many uploads → 429 (commentify-media:{id|ip}).
media.guests: allow (default) or deny (403). The config also accepts review; uploads still store like allow — hold the comment with require_approval if you need a queue.
Disk
- If
COMMENTIFY_MEDIA_BUCKETis set, Pro registers acommentify-mediadisk cloned fromfilesystems.disks.{COMMENTIFY_MEDIA_DISK}with that bucket. - Otherwise it stores on
media.disk(defaults3in config — usepublicfor local).
commentify. Visibility: public by default. Thumbnails: max edge thumbnail_max (320px); if generation fails, thumbnail_url equals url.
Use a dedicated bucket when comment images should not share your private app disk.
Livewire
The API is the upload path. Livewire threads that need images should use the samePOST media endpoint (or enable the React/Vue composer, which already calls uploadMedia()).
