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

# End a Live Activity

`POST /push/live-activities/end`

## Request

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

Ends the contact's activity on every device running it. Tokens are marked ended as APNs accepts the push, so an end that failed can be sent again. Without dismissalDate iOS keeps an ended activity on the Lock Screen for up to four hours. 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: Final content shown until the activity is removed. Required, as in Apple's end payloads.
  - `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.
  - `dismissalDate` union: Unix seconds, or an ISO 8601 date. A string of digits is read as Unix seconds.
    - integer
    - string
  - `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/end/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/3d816357b738?raw)
