---
title: "End a live notification"
method: POST
path: "/v1/live_notifications/end"
tags: ["Live Notifications"]
---

# End a live notification

`POST /v1/live_notifications/end`

End a running activity, referenced by its `instance_id`. On iOS, the system dismisses the activity from the Lock Screen. On Android, the SDK normally renders the final content as a non-ongoing notification; it cancels the notification only when there's no final notification to render. You can include a final `content_state` to show before the activity ends.

`push_payload` is optional on the end call, whether Customer.io delivers directly through APNs or relays through Firebase Cloud Messaging (FCM). If you include a `push_payload.alert`, it must contain both a `title` and a `body`.

## Request body

- object
  - `instance_id` string, required — The activity's instance ID (ULID), returned when you started it.
  - `content_state` union — The final content state to show before the activity ends. Defaults to the last state you sent. The content state's shape depends on the activity's `notification_type`. For iOS or a free form Android activity, pick the free form variant. For other Android notification types, pick the matching variant below.
    - LiveNotificationFreeFormContentState — Your own dynamic fields. On iOS, field names must match your `ContentState` type. For Android custom types, fields pass through to your app's renderer as-is. Date fields are epoch seconds.
    - SegmentsContentState — Dynamic fields for the multi-step tracker template. `notification_type`: `io.customer.livenotifications.segments`.
      - `status` string, required — Primary status line, like `Out for delivery`.
      - `substatus` string — Secondary line under the status.
      - `segmentsTotal` integer, required — The total number of segments in the progress bar. Values above 20 are capped at 20.
      - `segmentsComplete` integer, required — How many segments are filled; the remainder render as incomplete. Values above segmentsTotal are capped at segmentsTotal.
      - `trailingText` string — Short text on the Dynamic Island trailing edge, e.g. \"5 min\". Keep it brief; the trailing region is narrow.
    - CountdownTimerContentState — Dynamic fields for the countdown timer template. `notification_type`: `io.customer.livenotifications.countdowntimer`.
      - `title` string, required — Primary status line.
      - `statusMessage` string — Secondary line under the title.
      - `endTime` integer — Countdown target, in whole seconds since 1970 UTC. A time in the future renders a live countdown; omit it to render no timer. The countdown does not clear itself when it reaches zero — it rests at \"0:00\" until you send an update with a finished title and no endTime.
  - `attributes` object — Static activity fields, for renderers that need them alongside the content state.
  - `push_payload` object — The alert to accompany the end event. Optional whether Customer.io delivers directly through APNs or relays through Firebase Cloud Messaging (FCM). If you include an alert, provide both its `title` and `body`.
    - `alert` object
      - `title` string, required — The alert title.
      - `body` string, required — The alert body.
      - `sound` string — The sound to play with the end event.
  - `deep_link` string — A link to open when the person taps the activity.

## Response `200`

The end event was queued.

- object
  - `instance_id` string — The activity's instance ID.

## Other responses

- `400` — The request was malformed, `instance_id` isn't a valid ULID, or a `push_payload.alert` was missing a `title` or `body`.
- `404` — Live notifications aren't enabled for this workspace.

---

[API](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference.md) · [All operations](https://skmtc.dev/customer/apis/customer-io-journeys-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/customer/customer-io-journeys-api-reference/revisions/4b391af7cb06/schema)
