The state object

Every field in the state object that drives what the activity shows on the device.

state is the content shown on the device. On an update the fields sent are merged into the current state, so a call only carries what changes. That includes versus, which merges the same way one level down; segments is an array and is replaced whole.

FieldTypeDefaultInstructions
layoutstringprogressThe type: progress, picture, versus, or countdown. Set it on start; change it on an update to swap the layout live.
primaryTextstring""The main headline. Set this on every activity.
secondaryTextstring""A supporting line under the headline. On Countdown it is the short name shown in the expanded Dynamic Island.
accessoryTextstring""A small badge or label. On Picture it is the eyebrow above the headline.
accentColorHexstringaccent blueThe accent color as #RRGGBB. Drives the progress bar, badges, and tints.
backgroundColorHexstringnoneThe Lock Screen / tile surface color as #RRGGBB (Progress, Versus, Countdown). Text color is chosen automatically (black or white) for contrast. The Dynamic Island is always dark.
backgroundGradientHexstringnoneA second color. Set it alongside backgroundColorHex to render an immersive top-to-bottom gradient instead of a flat surface (Versus, Countdown).
backgroundImageUrlstringnoneA full-bleed background image (Countdown art, a Versus map, a Picture). A dark scrim is applied for legibility unless immersive is true.
immersivebooleanfalseWhen true, the background image is shown without the scrim (art only, no overlaid text).
headerIconUrlstringnoneThe main image (a logo on Progress / Countdown, the photo on Picture). PNG transparency is preserved.
lockScreenImageUrlstringnoneAn optional Lock Screen variant of the image, for when the Lock Screen needs a different version than the dark Dynamic Island. Falls back to headerIconUrl.
progressnumber0Progress bar fill from 0.0 to 1.0. Clamped. Used by Progress.
stagestringnoneA short label for the current step (for example "On the way").
estimatedMinutesnumbernoneWhen greater than zero, shows a short "N min" label. Used by Progress.
endIconstringnoneAn SF Symbol for the destination badge at the end of the progress bar. Used by Progress. iOS only.
progressStylestringsegmentedsegmented (separate capsules) or linear (one continuous bar) when segments are present.
segmentsobject[]noneThe segmented bar's steps. Each is { "label": string, "complete": boolean }.
versusobjectnoneThe matchup object for the Versus type. See the versus object.
countdownTonumbernoneUnix epoch seconds for the Countdown target. The clock ticks on the device.
countdownStylestringautohms (00:00:00), days, hours, months, years, or auto. Used by Countdown.
completionTextstringnoneThe copy shown in place of the clock once the countdown reaches countdownTo, and what the alert at that moment says. Falls back to secondaryText. Used by Countdown.
actionLabelstringnoneText for an interactive button (Versus "Watch Live", Picture "View Live").
actionURLstringnoneThe URL the action button opens.
actionColorHexstringredThe action button's color as #RRGGBB.
isCompletebooleanfalseSet to true for the final state. Shows a "Done" label and marks the activity finished. The activity stays on screen until it is ended.

There is no text-color field: text is auto-set to black or white based on the surface so contrast is always correct (the Dynamic Island is always dark). Colors are #RRGGBB strings, and invalid values fall back to a default. endIcon is an SF Symbol name (like mappin.and.ellipse), not a URL; look one up in Apple's free SF Symbols app.

The versus object

Set this inside state when layout is versus.

FieldTypeDefaultInstructions
leftName / rightNamestring""The two sides' names.
leftScore / rightScorestring"0"Scores, sent as strings so "12", "$1,500", and "X" all work.
leftStatus / rightStatusstring""A status sub-label under each name (for example "Terrorist", "Winner").
activeSidestringnone"left" or "right", marks the active side.
leftColorHex / rightColorHexstringblue / pinkPer-side accent colors as #RRGGBB.
centerLabelstringnoneA small label in the middle column (for example "Map").
centerValuestringnoneThe value under the center label (for example "Overpass").
leftImageUrl / rightImageUrlstringnoneThe two team / side logos (transparent PNGs read best).
centerImageUrlstringnoneAn optional center image (an auction item, a map preview).
sourceLogoUrlstringnoneThe league / brand mark, shown in the bottom strip and centered on the Apple Watch tile.
barColorHexstringnoneThe bottom strip color on solid surfaces.

The brand object

Optional, set at the top level of the start call. It carries the activity's own display name (title) and the branding shown on the activity and on the cover the user sees when they first open it. Change it later with POST /api/branding.

FieldTypeInstructions
titlestringThe activity's display name, shown as the title of its row in the app. Not part of a running card's attributes, so a later change lands on the app's next refresh with no restart.
namestringThe brand (source) name, shown on the activity (for example "Acme").
urlstringThe brand site. The domain is shown under the brand name, and its favicon is the logo fallback.
logostringA URL to the brand logo. If omitted, the app falls back to the state's headerIconUrl, then the site's favicon.
descriptionstringA short description shown under the title on the activity's cover.
colorstringThe brand accent color as #RRGGBB. Seeds the state's accentColorHex unless the state sets its own.

Errors

A refused call answers with a JSON body { statusCode, error, message }.

StatusMessageMeaning
400variesA required field is missing or no target was named.
401API_KEY_REQUIRED / INVALID_API_KEYThe x-api-key header is missing or wrong.
402FREE_TIER_LIMIT_REACHEDThe free tier's monthly call quota is used up.
402BUTTON_STYLING_REQUIRES_PAID_PLANA button object on the free plan.
404No activity matchedNone of the named activityIds resolved.

Ready To Start Building Live Activities Without “Building Them”?

Ready To Start Building Today?

No App Store submission, no native codebase to maintain. A link gets your activity onto your users’ screens, and an easy to use API keeps it live.

Includes: 10,000 Free Requests per Month

Movistar RidersMovistar RidersTerrorist9
MapOverpass
12HeroicHeroicCounter TerroristCSGOCSGO EsportsWatch Live
8 PM
Doing LaundryComplete This Task By 8:00 PM
Do LaundryClean FloorEat Lunch
Domino'sCooking
912
Movistar RidersMovistar RidersTerrorist9
MapOverpass
12HeroicHeroicCounter TerroristCSGOCSGO EsportsWatch Live
Live
View LiveMoly’s Cat CamUpdated 3 Seconds AgoCat cam
In The Oven NowMat has your order in the oven.Domino's
CookingOn The WayDelivered
Thinking
Researching API EndpointPreparing changes to Foodscout
ThinkingWorkingComplete
Delivery in 30 MinutesMat is racing your way.Domino's
On The WayDelivered
GTA00:00
GTA00:00:00GTA VI
San Francisco ShockHome1
MapMidtown
3
Dallas FuelAwayOverwatch LeagueWatch Live
United 1423Gate B22 · Seat 14C · SFO → JFK
BoardingIn AirArrived
Boarding
Arriving in 6 MinutesMarcus · Toyota CamryToyota Camry
On The WayArrived
6 Min
Movistar RidersMovistar RidersTerrorist9
MapOverpass
12HeroicHeroicCounter TerroristCSGOCSGO EsportsWatch Live
8 PM
Doing LaundryComplete This Task By 8:00 PM
Do LaundryClean FloorEat Lunch
Domino'sCooking
912
Movistar RidersMovistar RidersTerrorist9
MapOverpass
12HeroicHeroicCounter TerroristCSGOCSGO EsportsWatch Live
Live
View LiveMoly’s Cat CamUpdated 3 Seconds AgoCat cam
In The Oven NowMat has your order in the oven.Domino's
CookingOn The WayDelivered
Thinking
Researching API EndpointPreparing changes to Foodscout
ThinkingWorkingComplete
Delivery in 30 MinutesMat is racing your way.Domino's
On The WayDelivered
GTA00:00
GTA00:00:00GTA VI
San Francisco ShockHome1
MapMidtown
3
Dallas FuelAwayOverwatch LeagueWatch Live
United 1423Gate B22 · Seat 14C · SFO → JFK
BoardingIn AirArrived
Boarding
Arriving in 6 MinutesMarcus · Toyota CamryToyota Camry
On The WayArrived
6 Min
Movistar RidersMovistar RidersTerrorist9
MapOverpass
12HeroicHeroicCounter TerroristCSGOCSGO EsportsWatch Live
8 PM
Doing LaundryComplete This Task By 8:00 PM
Do LaundryClean FloorEat Lunch
Domino'sCooking
912
Movistar RidersMovistar RidersTerrorist9
MapOverpass
12HeroicHeroicCounter TerroristCSGOCSGO EsportsWatch Live
Live
View LiveMoly’s Cat CamUpdated 3 Seconds AgoCat cam
In The Oven NowMat has your order in the oven.Domino's
CookingOn The WayDelivered
Thinking
Researching API EndpointPreparing changes to Foodscout
ThinkingWorkingComplete
Delivery in 30 MinutesMat is racing your way.Domino's
On The WayDelivered
GTA00:00
GTA00:00:00GTA VI
San Francisco ShockHome1
MapMidtown
3
Dallas FuelAwayOverwatch LeagueWatch Live
United 1423Gate B22 · Seat 14C · SFO → JFK
BoardingIn AirArrived
Boarding
Arriving in 6 MinutesMarcus · Toyota CamryToyota Camry
On The WayArrived
6 Min