Update Live Activity
Update a Live Activity (legacy manual lifecycle)
Legacy manual lifecycle endpoint. For new integrations, use PUT /live-activity/stream/{stream_key} so ActivitySmith can manage start, update, rotation, and end state for you. This endpoint remains supported for existing integrations and advanced lifecycle control. Updates an existing Live Activity. If the per-activity token is not registered yet, the update is queued. Supports segmented_progress, progress, metrics, stats, alert, timer, and value activity types. For segmented_progress activities, you can increase or decrease number_of_steps here as the workflow changes. For timer activities, send duration_seconds only when you want to reset the timer window; omit it to keep the current timer running. Use secondary_action for a second button on alert, progress, segmented_progress, and value Live Activities.
POST https://activitysmith.com/api/live-activity/updateAuthentication#
Use your API key in the request header.
Authorization: Bearer $YOUR_API_KEYRequest examples#
import ActivitySmith from "activitysmith";const activitysmith = new ActivitySmith({ apiKey: process.env.ACTIVITYSMITH_API_KEY,});await activitysmith.liveActivities.update({ activity_id: "pLAr-Hnq9ZFW4sxlk43Lhbuok4GLh7UW", content_state: { title: "Nightly database backup", subtitle: "upload archive", number_of_steps: 3, current_step: 2, },});Bodyapplication/json
Update an existing Live Activity by activity_id.
metadataMetadataactivity_idstringrequiredtagsarray of string- Tags for notification history. Omit to keep existing Tags, supply an array to replace them, or send an empty array to clear them.
- Max Items:
20Item constraints:Min Length:1Max Length:64 content_stateContentStateUpdaterequiredactionLiveActivityActionsecondary_actionLiveActivityAction- Optional secondary action button. Supported for alert, progress, segmented_progress, and value Live Activities. Uses the same open_url, shortcuts://, and webhook shapes as action.
Additional Properties: false
segmented progress
{ "activity_id": "pLAr-Hnq9ZFW4sxlk43Lhbuok4GLh7UW", "content_state": { "title": "Nightly database backup", "subtitle": "upload archive", "number_of_steps": 3, "current_step": 2 }}progress
{ "activity_id": "pLAr-Hnq9ZFW4sxlk43Lhbuok4GLh7UW", "content_state": { "title": "EV Charging", "subtitle": "Added 120 mi range", "percentage": 60 }}metrics
{ "activity_id": "pLAr-Hnq9ZFW4sxlk43Lhbuok4GLh7UW", "content_state": { "title": "Server Health", "subtitle": "prod-web-1", "type": "metrics", "metrics": [ { "label": "CPU", "value": 25, "unit": "%" }, { "label": "MEM", "value": 67, "unit": "%" } ] }}webhook action
{ "activity_id": "pLAr-Hnq9ZFW4sxlk43Lhbuok4GLh7UW", "content_state": { "title": "Reindexing product search", "subtitle": "Shard 7 of 12", "number_of_steps": 12, "current_step": 7 }, "action": { "title": "Pause Reindex", "type": "webhook", "url": "https://ops.example.com/hooks/search/reindex/pause", "method": "POST", "body": { "job_id": "reindex-2026-03-19", "requested_by": "activitysmith_live_activity", "reason": "paused_from_ios_live_activity" } }}timer preserve window
{ "activity_id": "pLAr-Hnq9ZFW4sxlk43Lhbuok4GLh7UW", "content_state": { "title": "Benchmark Run", "subtitle": "checking p95 latency", "type": "timer" }}timer reset window
{ "activity_id": "pLAr-Hnq9ZFW4sxlk43Lhbuok4GLh7UW", "content_state": { "title": "Benchmark Run", "subtitle": "retrying sample", "type": "timer", "duration_seconds": 180 }}Responses#
200#
Live Activity updated (or queued)
Content type: application/json
Schema: LiveActivityUpdateResponse#
Returned after a Live Activity update is sent or queued.
successbooleanrequiredactivity_idstringrequireddevices_queuedintegerdevices_notifiedintegertimestampstring<date-time>required
Additional Properties: false
sent
{ "success": true, "activity_id": "pLAr-Hnq9ZFW4sxlk43Lhbuok4GLh7UW", "devices_notified": 2, "devices_queued": 0, "timestamp": "2026-01-28T09:57:26.056Z"}403#
Forbidden (activity not owned by this API key account)
Content type: application/json
Schema: ForbiddenError#
errorstringrequiredmessagestringrequired
Additional Properties: true
forbidden
{ "error": "Forbidden", "message": "This API key cannot update this Live Activity"}429#
Rate limit exceeded
Content type: application/json
Schema: RateLimitError#
codestring- Enum:
["rate_limited"] errorstringrequiredmessagestringrequired
Additional Properties: false
rate limited
{ "error": "Rate limit exceeded", "message": "Too many requests, please try again later."}