Skip to main content

Image Attachments

Send images alongside your notifications. Attachments appear inline in the web app, mobile app, and as rich push notification previews on iOS and Android.

Private Topics Only

Image attachments are available on private topics only. Learn about private topics →

Sending Attachments

Multipart Form Upload

The most common method - used by the web app and integrations:

curl -F "message=Server dashboard screenshot" \
-F "title=CPU Alert" \
-F "attachment=@screenshot.png" \
-H "X-API-Key: noti_your_key_here" \
https://app.notifer.io/your-topic

Binary Upload (curl -T)

Upload an image file directly as the request body. Message and title are sent via headers:

curl -T /path/to/image.jpg \
-H "X-API-Key: noti_your_key_here" \
-H "X-Message: Grafana dashboard" \
-H "X-Title: Daily Report" \
-H "X-Filename: dashboard.jpg" \
https://app.notifer.io/your-topic

Image from URL (X-Attach)

Have Notifer download an image from a URL and attach it to your message:

curl -d "Dashboard alert triggered" \
-H "X-API-Key: noti_your_key_here" \
-H "X-Attach: https://grafana.example.com/render/dashboard.png" \
https://app.notifer.io/your-topic
info

The server downloads the image from the URL (timeout: 15 seconds). Both HTTP and HTTPS URLs are supported.

Supported Formats

FormatMIME TypeMax Dimensions
JPEGimage/jpeg4096 x 4096
PNGimage/png4096 x 4096
GIFimage/gif4096 x 4096
WebPimage/webp4096 x 4096

Files are validated by magic bytes (actual file content), not just the file extension.

Limits by Plan

All plans support the same maximum file size of 15 MB per file. Plans differ by daily bandwidth:

PlanMax File SizeDaily Bandwidth
Free15 MB500 MB
Essentials15 MB2 GB
Team15 MB5 GB

There is no limit on the number of uploads per day — only the total bandwidth consumed counts.

When a limit is exceeded, the API returns 429 Too Many Requests with rate limit headers.

Response Format

When a message includes an attachment, the response contains an attachment object:

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"topic": "your-topic",
"message": "Server dashboard screenshot",
"title": "CPU Alert",
"attachment": {
"id": "7a3b5c1d-2e4f-6a8b-9c0d-1e2f3a4b5c6d",
"name": "screenshot.png",
"type": "image/png",
"size": 275485,
"width": 1920,
"height": 1080,
"url": "/api/attachments/7a3b5c1d-2e4f-6a8b-9c0d-1e2f3a4b5c6d",
"thumbnail_url": "/api/attachments/7a3b5c1d-2e4f-6a8b-9c0d-1e2f3a4b5c6d/thumb",
"expires_at": "2026-03-30T06:00:00Z"
}
}

Thumbnails

A WebP thumbnail (max 400x400px) is automatically generated for each upload. Thumbnails are used in message lists and push notification previews.

Expiration

Attachments expire after 12 hours and are automatically deleted. The expires_at field in the response indicates when the image will no longer be available.

warning

Attachments are temporary by design. If you need permanent storage, save the image separately before it expires.

Push Notification Previews

When a message with an attachment triggers a push notification:

  • iOS: The image is displayed as a rich notification preview (visible when expanding the notification)
  • Android: The image is displayed as a big picture notification

No additional configuration is needed - it works automatically.

Real-World Examples

Grafana Alert with Dashboard Screenshot

curl -d "High CPU usage detected on prod-web-01" \
-H "X-API-Key: noti_your_key_here" \
-H "X-Title: CPU Alert" \
-H "X-Priority: 2" \
-H "X-Tags: grafana,cpu,warning" \
-H "X-Attach: https://grafana.internal/render/d/cpu-dashboard?width=800&height=400" \
https://app.notifer.io/server-alerts

CI/CD Build Failure Screenshot

curl -F "message=Build #1234 failed - see screenshot" \
-F "title=Build Failed" \
-F "priority=2" \
-F "tags=ci,build,failure" \
-F "attachment=@build-error.png" \
-H "X-API-Key: noti_your_key_here" \
https://app.notifer.io/ci-notifications

Security Camera Alert

curl -T /tmp/motion-detected.jpg \
-H "X-API-Key: noti_your_key_here" \
-H "X-Message: Motion detected at front door" \
-H "X-Title: Security Alert" \
-H "X-Priority: 1" \
-H "X-Filename: motion.jpg" \
https://app.notifer.io/security