All developer docs

EveryCord Developers

Overlays

Name banners, badges, follower and subscriber counts, Sparks goals, recent supporters, chat and the viewer count, drawn into the video on the phone so every destination shows them: your viewers, YouTube, Twitch and SRT alike.

Feature overlays, Engage tier and up (routes /v1/overlays* and /v1/live/:id/overlay).

Early access. Code samples are illustrative until the 1.0.0 release. Write to services@symaro.com to join.

How it works

  • Each creator has one overlay setup: up to 8 widgets, saved on EveryCord. Creators pick templates and fill in fields; nothing a creator sends is ever run as code.
  • With overlays: true, the broadcast extension (iOS) or the capture service (Android) draws the widgets into the video before it is encoded, and reloads them within a few seconds when the creator saves a change.
  • Widget text passes EveryCord's language filter: a save with objectionable words is refused (400 inappropriate).

Widgets

TypeShowsFieldsAt most
lower_thirda name bannertitle (the name, 1 to 40), subtitle (0 to 60)2
badgea short labeltitle (1 to 24)2
follower_countfollowerstitle (the label, 0 to 24), source everycord, youtube or twitch1
subscriber_countsubscriberstitle, source everycord, youtube or twitch1
sparks_goalprogress to a Sparks goaltarget (10 to 10,000,000 Sparks); shown while the stream takes Sparks1
recent_supportersthe latest people who sent Sparkstitle1
chatthe latest chat messagestitle1
viewer_countpeople watchingtitle1

Every widget has an id (1 to 32 of letters, digits, _ and -), an anchor (top_left, top_right, bottom_left, bottom_right), a theme (brand, dark, light) and visible.

Read and save the setup

let overlays = session.overlays
var widgets = try await overlays.widgets()
widgets.append(EveryCordOverlayWidget(id: "name", type: "lower_third", anchor: .bottomLeft,
                                      title: "Maker", subtitle: "Ranked grind, day 12"))
try await overlays.save(widgets)       // the stream shows the change within a few seconds

On Android, session.overlays (when overlays = true) reloads the creator's widgets with refresh(), and adds one thing iOS does not have yet: your app's own picture over the whole video.

val overlays = session.overlays ?: return
overlays.setImage(myOverlayBitmap)     // scaled to the video; transparent pixels show the screen
overlays.setImage(null)                // removes it
overlays.refresh()

Your own picture is drawn under the EveryCord mark when your tier's branding draws it.

The API

  • GET /v1/overlays returns { revision, widgets, updatedAt, templates, pollSeconds }. templates describe each type's fields, so you can build an editor from them.
  • PUT /v1/overlays with { widgets, revision } saves the setup; a save from an older copy is refused with 409 revision_changed.

Both take the creator's access token and the partner headers.

The EveryCord SDKs and the Partner API are in early access. For access, keys and questions, write to services@symaro.com.

These docs are also on GitHub with the install files: overlays.md in SymaroTeam/everycord-sdk.

Updated October 22, 2026.