Enhanced webhook security and stream identification
Read more in our blog post
Added
-
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
Changed
-
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
Read more in our blog post
Added
-
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
Changed
Minor Bugfixes and Documentation Tweaks
Changed
-
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
Added
-
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
Changed
Track background jobs and monitor email delivery status with new Jobs API
Added
-
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
Changed
Improve email sending API with smart input filtering and MIME type detection
Added
-
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
Changed
-
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
Added
Changed
-
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
Deprecated
Add email attachment support for sending messages
Added
-
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
Changed
Major API consolidation and architecture improvements for email providers
Read more in our blog post
Added
-
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
Changed
-
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
Deprecated
Standardize all error responses to JSON:API format and switch to camelCase naming convention
Added
Changed
-
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
Deprecated
- Separate /activate and /deactivate endpoints removed in favor of PATCH with active field
Introduce Global Streams for automatic email collection across all providers
Read more in our blog post
Added
-
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
Changed
-
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
Read more in our blog post
Added
-
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
Changed
-
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
Added
-
{“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)
Changed
- Stream API responses now include showHtmlBody attribute
Save sent emails to IMAP sent folders with smart provider defaults
Added
-
{“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
Added
- Reply-To field for sending emails
Streams API
Read more in our blog post
Added
- Added the Streams API Endpoints
General Performance Improvements
OpenAPI 3.1 compliant
Changed
-
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
Deprecated
- Removed the RECENT endpoint as it was superseeded by the SEARCH endpoint
Improved Threads Endpoint
Changed
- The threads endpoint is now json:api compliant. You can page it and get all messages of a thread nested into the response.
New search endpoint
Added
- The Sunnybox API now has a search endpoint for filtering mailboxes.
Make Sunnybox API ChatGPT compliant
Read more in our blog post
Changed
- The Sunnybox API now works with OpenAIs implementation of OpenAPI.
New Threads endpoint
Added
- You can now view the thread structure of your IMAP Account via the threads endpoint. The endpoint will probably get some more polish but it’s there for you to try out now.
Changed
- There were some internal updates to improve speed and the application itself.
Message Flagging
Added
- You can add remove or replace message flags via our new patch message endpoint
Autoconfig UI
Read more in our blog post
Added
Sunnybox API is now stable.
Read more in our blog post
Added
- Toggle to show the headers of all fetched messages
Changed
-
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.
Read more in our blog post
Added
- Create a new IMAP Provider via automatic configuration API Endpoint: https://api.sunnybox.io/api/v1/imap_providers/autoconfig.
Changed
- Payload nesting for imap_providers CRUD (post/patch/put)
Sunnybox now supports the creation of Streams. A Stream can group Providers together and posts new mails to a given callback URL.
Read more in our blog post
Added
Changed
Public Beta Release of the Sunnybox Email API.
Read more in our blog post