Skip to main content
When 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:
Insert markdown: ![image](url). 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_BUCKET is set, Pro registers a commentify-media disk cloned from filesystems.disks.{COMMENTIFY_MEDIA_DISK} with that bucket.
  • Otherwise it stores on media.disk (default s3 in config — use public for local).
Path prefix: 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 same POST media endpoint (or enable the React/Vue composer, which already calls uploadMedia()).
Last modified on September 12, 2026