TagStack supports both ICY protocol versions. ICY 1.x is the simple, universally compatible now-playing title push. ICY 2.2 is the full extended metadata specification with 90+ structured header fields.
ICY 1.x sends a plain-text stream title via a GET request to the admin endpoint. Every Icecast2 and Mcaster1DNAS server supports this.
GET /admin/metadata?mount=/yourmount&mode=updinfo&song=Artist+-+Track+Title
Authorization: Basic base64(admin:adminpassword)
song parameter is URL-encoded (spaces become + or %20). TagStack uses libcurl's curl_easy_escape automatically.Artist - Track Title (separated by a space-dash-space).ICY 2.2 sends a structured set of HTTP headers via a PUT request to the source mount. TagStack builds the full header set from the 4-tab composer and sends only the non-empty fields to avoid noise.
PUT /yourmount HTTP/1.1
Host: dnas.example.com:8000
Authorization: Basic base64(source:sourcepassword)
Content-Type: audio/mpeg
Content-Length: 0
icy-metadata-version: 2.2
icy-meta-station-id: my-station-001
icy-meta-show-title: Morning Drive
icy-meta-dj-handle: @djname
icy-meta-social-twitter: @djname
...
Authentication: ICY 2.2 PUT uses source password (not admin password). ICY 1.x GET uses admin password. Both are stored per-server in TagStack.
| Header | Description | Example |
|---|---|---|
icy-metadata-version | Protocol version — always 2.2 | 2.2 |
icy-meta-station-id | Unique station identifier | wkrp-cincinnati-001 |
icy-meta-station-logo-url | Full URL to station logo image (PNG/JPG) | https://mystation.com/logo.png |
icy-meta-station-verified | Verification status: verified, unverified, pending | verified |
icy-meta-show-title | Current show or program name | Morning Drive with DJ Ace |
icy-meta-show-start | Show start time (ISO 8601 or HH:MM) | 06:00 |
icy-meta-show-end | Show end time | 10:00 |
icy-meta-next-show | Name of the following show | Midday Mix |
icy-meta-autodj | AutoDJ active: 1 or 0 | 0 |
icy-meta-playlist-name | Active playlist or rotation name | Top 40 Hot |
| Header | Description | Example |
|---|---|---|
icy-meta-dj-handle | DJ or host social handle | @djace |
icy-meta-dj-bio | Short DJ biography or tagline | Top 40 specialist since 2018 |
icy-meta-genre | Primary genre of current show | Top 40 |
icy-meta-show-rating | Content rating: G, PG, PG-13, R | PG |
icy-meta-track-artwork-url | URL to current track album art | https://cdn.example.com/art.jpg |
icy-meta-album | Album name of current track | Future Nostalgia |
icy-meta-year | Release year | 2024 |
icy-meta-label | Record label | Warner Records |
icy-meta-bpm | Beats per minute of current track | 128 |
icy-meta-key | Musical key (Camelot notation or standard) | 8A |
icy-meta-podcast-host | Podcast host or network name | My Radio Network |
icy-meta-podcast-rss | Podcast RSS feed URL | https://feeds.example.com/show.xml |
icy-meta-podcast-episode | Episode number or identifier | EP-042 |
icy-meta-language | BCP 47 language tag | en-US |
| Header | Description | Example |
|---|---|---|
icy-meta-creator-handle | Primary content creator handle | @mystation |
icy-meta-social-twitter | Twitter/X handle or profile URL | @mystation |
icy-meta-social-twitch | Twitch channel name | mystation |
icy-meta-social-ig | Instagram handle | @mystation |
icy-meta-social-tiktok | TikTok handle | @mystation |
icy-meta-social-youtube | YouTube channel URL | https://youtube.com/@mystation |
icy-meta-social-facebook-page | Facebook page URL | https://facebook.com/mystation |
icy-meta-social-linkedin | LinkedIn profile or company URL | https://linkedin.com/company/mystation |
icy-meta-social-linktree | Linktree or link-in-bio URL | https://linktr.ee/mystation |
icy-meta-hashtag-array | JSON array of hashtags | ["#NowPlaying","#Radio","#Top40"] |
icy-meta-listener-requests | Listener requests enabled: 1/0 | 1 |
icy-meta-request-url | URL for song/shoutout requests | https://mystation.com/request |
icy-meta-chat-url | Live chat URL | https://mystation.com/chat |
icy-meta-tip-url | Tip / donation URL (PayPal, Ko-fi) | https://ko-fi.com/mystation |
icy-meta-events-url | Events calendar URL | https://mystation.com/events |
| Header | Description | Example |
|---|---|---|
icy-meta-crosspost | Comma-separated crosspost platforms | twitch,youtube,facebook |
icy-meta-cdn-region | CDN delivery region (ISO country code) | US-EAST |
icy-meta-relay-origin | Relay source URL for relay chains | http://origin.example.com:8000/live |
icy-meta-station-notice | Free-text station announcement | Station closed Dec 25 |
icy-meta-notice-url | URL for the notice detail page | https://mystation.com/news |
icy-meta-notice-expiry | ISO 8601 datetime when notice expires | 2026-12-26T00:00:00Z |
icy-meta-audio-codec | Audio codec name | MP3 |
icy-meta-audio-samplerate | Sample rate in Hz | 44100 |
icy-meta-audio-channels | Channel count | 2 |
icy-meta-audio-lufs | Integrated loudness (LUFS) | -14 |
icy-meta-audio-encoder | Encoder software | LAME 3.100 |
icy-meta-content-nsfw | Explicit content flag: 1/0 | 0 |
icy-meta-content-ai | AI-generated content flag | 0 |
icy-meta-content-royalty-free | Royalty-free content flag | 0 |
icy-meta-geo-region | ISO 3166-1 country code restriction | US |
icy-meta-license-type | Content license identifier | CC-BY-4.0 |
icy-meta-stream-session-id | Unique session identifier for analytics | sess-2026-03-01-001 |
icy-metadata-version: 2.2
icy-meta-station-id: wkrp-001
icy-meta-show-title: Friday Night Bass
icy-meta-dj-handle: @djace
icy-meta-genre: House
icy-meta-bpm: 128
icy-meta-social-twitter: @djace
icy-meta-social-ig: @djace
icy-meta-hashtag-array: ["#FridayNight","#House","#DJSet"]
icy-metadata-version: 2.2
icy-meta-station-id: wkrp-cincinnati-001
icy-meta-station-logo-url: https://wkrp.com/logo.png
icy-meta-station-verified: verified
icy-meta-show-title: Morning Drive
icy-meta-show-start: 06:00
icy-meta-show-end: 10:00
icy-meta-next-show: Midday Mix
icy-meta-dj-handle: @djace
icy-meta-genre: Top 40
icy-meta-social-twitter: @wkrp
icy-meta-social-ig: @wkrpcincinnati
icy-meta-social-tiktok: @wkrp
icy-meta-social-youtube: https://youtube.com/@wkrp
icy-meta-social-facebook-page: https://facebook.com/wkrpcincinnati
icy-meta-audio-codec: MP3
icy-meta-audio-samplerate: 44100
icy-meta-audio-channels: 2
icy-meta-audio-lufs: -14
icy-meta-hashtag-array field as a proper JSON array — TagStack validates the format before sending.icy-meta-bpm and icy-meta-key accurately — ICY 2.2-aware players and future Mcaster1 features will use these for harmonic mixing and energy profiling.icy-meta-track-artwork-url — many players and web widgets display this art as the album cover.