---
title: "Update a Live Activity"
method: POST
path: "/push/live-activities/update"
tags: ["Push"]
---

# Update a Live Activity

`POST /push/live-activities/update`

## Request

- Base URL: `https://api.sequenzy.com/api/v1`
- URL: `https://api.sequenzy.com/api/v1/push/live-activities/update`
- Auth: HTTP bearer

Sends new content state to every running copy of the contact's activity (one per device that reported an update token). Each request carries a fixed timestamp, so a retried or late delivery never replaces newer content. Returns tokenCount 0 when no running copy has reported a token. Requires the transactional:send scope.

## Request body

- object
  - `email` string: Contact whose activity it is. Provide email or subscriberId; activities are always addressed per contact, so a token registered under the same activityId by another device never receives this content.
  - `subscriberId` string: Subscriber whose activity it is.
  - `activityId` string, required: Your id for the activity, chosen when it starts.
  - `contentState` object, required: Your Swift ContentState as JSON. Date fields decode as seconds since 2001-01-01 unless your struct decodes them differently.
  - `alert` LiveActivityAlert: Alert shown with the push. Provide a title, a body, or both.
    - `title` string
    - `body` string
    - `sound` string: Sound name, such as `default`. Omit for a silent alert.
  - `priority` 'high' | 'low': high (default) delivers immediately and counts against Apple's Live Activity update budget; low (apns-priority 5) does not. Pushes with an alert always go at high priority.
  - `staleDate` union: Unix seconds, or an ISO 8601 date. A string of digits is read as Unix seconds.
    - integer
    - string
  - `relevanceScore` number: Orders a person's concurrent activities; higher shows first.

## Response `202`

Queued (or nothing to send when tokenCount is 0)

- LiveActivityDispatch
  - `success` boolean
  - `event` 'start' | 'update' | 'end'
  - `activityId` string
  - `tokenCount` integer: Devices the push was queued for. 0 means nothing was sent.
  - `jobIds` string[]: Queued delivery jobs, one per batch of 100 devices.
  - `message` string

## Other responses

- `400`: Missing contact, invalid ids or dates, APNs not configured, payload over 4 KB, or more than 1000 matching devices
- `401`: Unauthorized
- `403`: Missing transactional:send scope
- `404`: Contact not found
- `422`: Malformed body (a required field missing or of the wrong type)
- `500`: Server error

## Changes

- **2026-10-21** `62f1bc53cfd2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/push/live-activities/update/post.md)

---

[API](https://skmtc.dev/sequenzy/apis/sequenzy-api.md) - [All operations](https://skmtc.dev/sequenzy/apis/sequenzy-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sequenzy/apis/sequenzy-api/revisions/8156dc12d8b4?raw)
