Version 2.0.2 (2026-02-03)
Internal updates and dependency maintenance
Changed
- Updated Ruby version and dependencies for improved performance and security
This is a quick overview of the latest changes and additions.
Internal updates and dependency maintenance
Minor fixes and improvements
Sunnybox 2.0 - Faster, Smarter, and Built for Scale
Email Drafts Management
Email Folder Management
Email Batch Operations
Webhook Event Listing
Gmail Support
URL structure
Cursor based pagination
Enhanced webhook security and stream identification
Stream identification in all webhook payloads for better webhook routing
Job completion webhooks now include streamId and streamName in metadata
New message webhooks now include complete stream object in meta section
All API endpoints now use secure public IDs instead of internal database IDs
Webhook payloads are now consistently formatted as JSON objects (fixes string payload bug)
Stream metadata in webhooks matches provider metadata structure for consistency
API Autodiscoverability, Jobs Dashboard, and CASA Certification
API autodiscoverability feature for easier client integration
Jobs view in admin dashboard for monitoring background operations
CASA certification achieved (Google LOV processing)
Restish CLI documentation and setup guide
Enhanced API documentation with CLI tool examples
Improved developer experience with standardized discovery endpoints
Minor Bugfixes and Documentation Tweaks
Adding attachments now correctly sets the main Content-Type to multipart/mixed which fixes Thunderbird attachment display
Improved Mail Sent Job Results
Minor Documentation Tweaks (remove 500 error codes from job results, better result documentation)
Automatic webhook notifications for job completions and failures
Job completion webhooks sent to all associated streams when jobs complete or fail
Webhook events include job.completed and job.failed with full job details
Provider-based routing ensures streams only receive notifications for their jobs
Global streams receive notifications for all jobs without specific providers
Comprehensive webhook payload includes job ID, status, duration, metadata, and results
Job notifications are now always enabled for all streams (no configuration needed)
Comprehensive webhook documentation added to OpenAPI specification for both job completions and new messages
Track background jobs and monitor email delivery status with new Jobs API
Jobs API endpoints to track background operations like email sending
Real-time status monitoring for sent emails (pending, processing, completed, failed)
Job details include execution duration, error messages, and retry attempts
Filter jobs by status or type for better visibility into async operations
Send Message API now returns job tracking information for monitoring delivery
Message sending is now asynchronous with immediate job ID response
Enhanced pagination system with standardized metadata across all list endpoints
Improve email sending API with smart input filtering and MIME type detection
Automatic MIME type detection for attachments when contentType is missing
Intelligent filtering of empty strings in email arrays (to, cc, bcc, replyTo)
Automatic removal of empty attachment objects
Email arrays now accept and filter out empty strings while maintaining validation for actual email addresses
Attachment contentType is now optional - automatically detected from filename when possible
More forgiving API that handles common client-side edge cases gracefully
Improve IMAP provider configuration and password handling
Optional password fields when updating IMAP providers - passwords remain unchanged when left blank
Helpful placeholder text and validation messages for password fields
Renamed enableSsl to tls for IMAP connections for consistency
Removed redundant smtpSsl field (use smtpTls instead)
Improved form UX - no need to re-enter passwords when updating other settings
Better naming consistency across SSL/TLS configuration options
enableSsl field renamed to tls (automatically migrated)
smtpSsl field removed in favor of smtpTls (automatically migrated)
Add email attachment support for sending messages
Email attachment support when sending messages via the API
Attachments array parameter accepting filename, content (base64), and contentType
Comprehensive OpenAPI documentation with base64 encoding examples
Code examples for encoding attachments in JavaScript, Python, Ruby, PHP, and curl
Multiple request examples showing how to send emails with attachments
Message sending endpoint now accepts attachments array with base64-encoded file content
Enhanced OpenAPI documentation with detailed attachment formatting instructions
Major API consolidation and architecture improvements for email providers
Gmail OAuth2 provider support (currently requires your own OAuth tokens - automated token flow coming soon pending CASA verification)
Unified provider configuration with embedded settings
Enhanced autoconfig detection for popular email providers
Discriminated union schemas for type-safe provider configurations
Consolidated all provider operations under single /api/v1/providers endpoint
Provider configurations now embedded directly in provider objects
Replaced polymorphic providableType/providableId with simple providerType field
Improved OpenAPI documentation with comprehensive examples
Streamlined provider creation with automatic server detection
Provider IDs now use URL-safe Base58 format (e.g., “h8Kzj9Tx5mFqL3Nw7pRcVb2Y”) for better security and uniqueness
Removed separate /api/v1/imap_providers endpoints (use /api/v1/providers instead)
Deprecated providableType and providableId fields in favor of embedded configuration
Standardize all error responses to JSON:API format and switch to camelCase naming convention
Consistent JSON:API error format for all 4xx and 5xx responses
Error documentation in OpenAPI spec with example format
All API parameter names converted from snake_case to camelCase (e.g., provider_id → providerId)
All request body field names converted to camelCase (e.g., save_to_sent → saveToSent)
Schema references renamed to camelCase convention
Operation IDs updated to camelCase format
Provider update endpoint now uses PATCH method instead of separate activate/deactivate endpoints
All ID fields in responses are now strings instead of integers for consistency
Introduce Global Streams for automatic email collection across all providers
Global stream type that automatically includes all active providers
Every account now gets an “All Emails” global stream on creation
Visual indicators and tooltips for global streams in the UI
Protection against deleting or modifying system-managed global stream fields
Streams now have a stream_type field (standard or global)
Stream index page shows global streams first
API returns 422 error when attempting to delete global streams
Enhanced webhook monitoring and UI improvements
Comprehensive webhook event tracking with request/response details
Success rate indicators on streams page
Color-coded performance chips for webhook health
Improved event details view with copy functionality
Unified table-based layouts across all index pages
Removed redundant stream detail pages
Replaced inline JavaScript with Stimulus controllers
Add HTML body support to webhook payloads
{“showHtmlBody field to Stream API for controlling HTML inclusion in webhooks (default”=>”true)”}
bodyHtmlSanitized field now populated in webhook payloads when showHtmlBody is enabled
Existing streams automatically get HTML body in webhooks (backwards compatible)
Save sent emails to IMAP sent folders with smart provider defaults
{“save_to_sent parameter to control saving sent messages (default”=>”true)”}
sent_folder parameter to specify custom sent folder location
Smart default folder detection (Gmail “Sent Mail”, Outlook “Sent Items”, others “Sent”)
Automatic saving of sent emails to IMAP folders for visibility in email clients
Add Reply-To to message sending
Streams API
General Performance Improvements
OpenAPI 3.1 compliant
The whole API is now OpenAPI 3.1 compliant
The documentation was improved
Error Messages are now using application/problem+json MIME-type and are JSON:API 1.1 compliant
Minor Bugfixes
Improved Threads Endpoint
New search endpoint
Make Sunnybox API ChatGPT compliant
New Threads endpoint
Message Flagging
Autoconfig UI
You can now quickly add new mail accounts via our autoconfig feature in the admin ui too
When fetching messages you can now flag them to be set as seen
Sunnybox API is now stable.
Sending messages has been enhanced to include CC, BCC, Plain Body and HTML Body
Returned list of messages has been reversed (newest is the first array item)
Sunnybox now adds an endpoint for automatic imap provider creation. This endpoint deducts configuration settings from Thunderbird-Database and DNS SRV records.
Sunnybox now supports the creation of Streams. A Stream can group Providers together and posts new mails to a given callback URL.
Message Streams
Webhooks via Message Streams
Improve robustness with for handling certain non UTF-8 compliant notifications
Minor Bugfixes
Public Beta Release of the Sunnybox Email API.