Changelog

Evenings.fm home
docs

New guides for going live

We've spent the last few weeks rewriting the docs, and added a lot of new pages:

If your setup isn't covered, write to us at contact@evenings.email. We'll write it up.

Web

Station pages play closer to live

We've rebuilt how station pages play your broadcast. Instead of handing the stream to the browser, the page now manages its own small buffer using Media Source Extensions. It starts at live, catches up when a listener drifts behind, and rejoins live after a pause or a dropped connection. Listeners now hear you about 0.6 seconds behind live, down from about 1.9. After a 5-second pause, they're back to about half a second behind instead of 7.

Browsers that can't do this keep the standard player, including iPhones and iPads on versions before iOS 17.1. If you run a player on your own site, How to reduce audio player latency shows how to make the same change.

API

API errors you can act on

We've rewritten every error the API returns. Each one is now JSON with two parts:

{ "title": "No resource on the horizon 🌞", "error": "We couldn't find that track on your station. Check the track ID." }

error says what we saw and what to change, and it's the part to show people or log. title is a short line set by the status code, and it may change, so don't parse it. If your code read the old message field, switch it to error.

We also fixed PATCH /v1/tracks/{id}. It now changes only the fields you send. Before, renaming a track also cleared its link. Unknown track IDs now return 404.

WebAPIMedia

Always On shows up straight away

When you turn Always On on or off, your station page now switches to ALWAYS ON (or back) as soon as you save. Before, you had to wait for the next refresh, up to 10 seconds.

WebAPI

Repeating shows keep their time

We've rebuilt how repeating shows work out their dates:

  • They keep their local time. Daily and weekly shows used to move by an hour when the clocks changed. A 2:00pm show in Los Angeles came back as 1:00pm after 1 November. They now stay at the time you set, in your time zone.
  • Monthly on the last weekday. If the first date falls on the last Friday (or any weekday) of its month, you can now pick Monthly on the last Friday from the repeat menu.
  • Calendars show the whole last day. A month view was leaving out shows late on its final day, which meant everything from 5pm onward on the 30th in Pacific time. That's fixed in the app and in the API.
  • Date ranges start where you ask. The API used to return every earlier date of a repeating show, whatever startDate you sent. It now respects startDate.
WebAPI

Listen live from event pages

We've made event pages work better on the night:

  • LISTEN LIVE. When your station is on air, the event page shows a LISTEN LIVE button above I'M GOING, with what's on air underneath. The reminder text links to this page, so one tap takes listeners straight to your show.
  • RSVPs close after the show. Once a one-off show has ended, the page says "This event has ended" instead of offering an RSVP. Private shows don't accept RSVPs at all.
  • STOP means stop. Anyone who replies STOP stays opted out. That includes reminders for shows they RSVP'd to and future RSVPs. The confirmation text now tells people to reply STOP, which is the word that works.
  • Text blasts are limited per station. The limit of two blasts a minute was shared by every station on Evenings, so one busy station could block another. It now applies to each station separately.

The event pages guide and How to run an event cover the whole flow.

API

Clear limits on uploads

We've set clear limits on what can be uploaded to Evenings:

  • Audio: MP3, WAV, AIF/AIFF, M4A and FLAC, up to 12 GB per file. That's room for about 12 hours of 24-bit, 48 kHz stereo WAV, and far longer in compressed formats.
  • Images: JPG, PNG, GIF and WebP, up to 20 MB.

We now check each file's type before storing it and serve it with the right type for its extension. Files that don't fit get a specific error (413 for too large, 415 for an unsupported type) instead of a generic one. We also added limits on repeated sign-in and sign-up attempts. Someone who mistypes their password a couple of times isn't locked out.

Web

More room in the dashboard

We've tidied up the dashboard so your tracks and shows get more of the screen:

  • On Library, Calendar, Account and Go Live, the right-hand drawer folds away when there's nothing in it, and the main area fills the space.
  • The Library opens with your newest track already selected.
  • The player dock at the bottom of the screen has a close button, so you can put it away when you're not listening.
Web

Light mode

We've added a light theme to evenings.fm. On your first visit we follow your device's setting. After that, you can switch between Dark and Light under Appearance on your Account page. Your choice is saved in that browser, so set it once on each device you use.

API

Going-live texts for every subscriber, and 24-hour times

We've changed how we send the text your subscribers get when you go live. Instead of one request per subscriber, we now send a single batched request per message, so the text reaches everyone at once, however many subscribers your station has.

We've also fixed scheduling with a partly typed time. Times like "7 PM" or "19:30 PM" made saving the show fail with a generic error, and "7:3 PM" was quietly saved as 7:03. Times are now accepted as 6:30 PM or 18:30, and anything else gets a message saying exactly that.

Web

Mix a second tab into browser broadcasts

We've added a Second Tab source to the Go Live page, so one browser broadcast can mix two tabs at once. For example, music playing in one tab and a guest on a call in another, with your microphone on top. Each source has its own toggle, volume slider and level meter, and everything goes out as one stream.

Tab audio needs Chrome or Edge, so in Firefox you broadcast from a microphone.

WebAPI

A schedule page for every station

We've given every station a public schedule page at evenings.fm/{your-station}/schedule. It shows your upcoming published shows by month, and each one links to its event page, where listeners can RSVP for a text reminder.

Anyone with the link can open it, so you can put it in your bio, a newsletter or a flyer. Shows you haven't made public stay off it.

Media

Less delay on live streams

We've cut two sources of delay on every live stream. Our media server used to forward incoming audio in batches of about 230 ms. It now sends each packet on as soon as it arrives. We also changed the short burst of recent audio a new listener gets, so playback starts instantly. It's now capped at about 1.5 seconds, whichever way you went live. Before, it varied between ingest methods.

This applies to every station, with nothing to change on your side.

Web

Louder microphones in browser broadcasts

We've raised the default microphone level on the Go Live page to 2x, and widened the volume slider so it runs from 0 to 2. Browser broadcasts capture your mic without automatic gain, so voices came in noticeably quieter than tab audio. Tab audio stays at 1x, and you can still pull either source back with its slider.

API

A public calendar for your shows, in the API

We've added a station calendar endpoint to the API:

GET /v1/stations/{slug}/events?startDate=2026-11-01&endDate=2026-11-30

It returns your public shows to anyone who asks, so you can put your schedule on your own website without handling a key. Repeating shows come back as one entry per date. The Events API reference has the fields and a calendar embed example.

WebMedia

Broadcast from your browser

We've added a way to go live from your browser. Open your station, press Go Live, pick your sources (a browser tab, your microphone or both), then press Go Live again to start. Your audio travels over a WebSocket into the same pipeline as every other broadcast, so to your listeners a browser tab sounds the same as a full studio rig.

It works in Chrome, Edge and Firefox. Tab and system audio need Chrome or Edge, so in Firefox you broadcast from a microphone.

We built it for first shows and last-minute guest spots, and your encoder setup keeps working exactly as before.

Media

Stream with Icecast source clients

We've opened Evenings up to Icecast source connections alongside RTMP. If your setup speaks the Icecast source protocol, such as BUTT, Mixxx, darkice or a hardware encoder, you can point it at Evenings and broadcast without an RTMP bridge in between. Your stream key goes in the mountpoint field, and the BUTT guide has the full server settings.

This is also the groundwork for the Evenings mobile broadcaster, which streams over the same protocol.

WebAPI

Export your tracks to SoundCloud

We've added SoundCloud export. Connect your SoundCloud account from the Account tab, then choose Export to SoundCloud from a published track's menu. We upload the audio with its title, description, tags and artwork, so you don't have to download it and upload it again yourself.

Only published tracks can be exported, so drafts and private recordings stay on Evenings.

Web

A faster evenings.fm

We've done a round of performance work across evenings.fm.

  • The homepage loads noticeably faster. We tuned how images and analytics load so they stay out of the way of the page you came for.
  • Going back to a page you've already visited is now instant.
  • We moved the site to the latest version of its framework, which speeds up the rest of the site too.
Web

The Evenings Blog

We've launched the Evenings blog. At launch, we moved our guides there from the old docs site, from streaming with OBS or Audio Hijack to scheduling prerecorded livestreams and using the API. The blog is also where longer updates and stories about stations live.

Update: on 22 July 2026 we moved the guides again, to their own home at evenings.fm/docs. The blog now carries announcements and stories.

Web

Cover art for live broadcasts, smoother browsing

We've made two changes to how broadcasts look and browse.

  • Cover art while you're live. When you set a cover on the recording of a broadcast that's in progress, it now shows on your station while you're still on air, instead of only after the recording is published. Until you set one, your station's image is used.
  • Infinite scroll. Long track lists now keep loading as you scroll, instead of stopping at a fixed page.
WebAPI

Generate API keys

We've added API keys. Open the Account tab, find the API Key card and click Generate. Send the key as a Bearer token to manage your station's tracks through the API or wire Evenings into your own site. Each station has one key, and regenerating it stops the old one from working. The API keys guide has the details.