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.
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
The server downloads the image from the URL (timeout: 15 seconds). Both HTTP and HTTPS URLs are supported.
Supported Formats
| Format | MIME Type | Max Dimensions |
|---|---|---|
| JPEG | image/jpeg | 4096 x 4096 |
| PNG | image/png | 4096 x 4096 |
| GIF | image/gif | 4096 x 4096 |
| WebP | image/webp | 4096 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:
| Plan | Max File Size | Daily Bandwidth |
|---|---|---|
| Free | 15 MB | 500 MB |
| Essentials | 15 MB | 2 GB |
| Team | 15 MB | 5 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.
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