---
title: "Unskip a habit skipped in today's routine"
method: POST
path: "/completed-activity/{activity_id}/unskip"
tags: ["completed-activity"]
---

# Unskip a habit skipped in today's routine

`POST /completed-activity/{activity_id}/unskip`

## Request

- Base URL: `https://api.focusbear.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.focusbear.io/completed-activity/{activity_id}/unskip`
- Auth: HTTP bearer

Removes the habit's skip from today's routine so the habit is pending again, then sends the activity-completed Pusher event so the other devices re-pull the routine. Unlike undo, it only ever removes a skip: a habit done after its skip keeps its Done. Idempotent: when there is no skip to remove, nothing changes and `unskipped` is false. List today's skipped habit ids with GET /completed-activity-sequence/routine-progress?date=<today> (`skipped_habit_ids`, which carries them for every routine status). A completed routine is reopened as undo reopens it. Clients must also drop the skip from their offline sync queue, otherwise a later sync re-creates it.

## Path parameters

- `activity_id` string, uuid, required

## Request body

- UnskipActivityDto
  - `device_id` string, uuid: The calling device. Sent back as leader_device_id in the activity-completed Pusher event so the device that unskipped can ignore its own echo.

## Response `200`

- UnskipActivityResponse
  - `unskipped` boolean, required: Whether a skip was removed. False, with nothing changed, when the habit has no skip in today's routine: it was never skipped, was already unskipped, or was done after the skip.
  - `activity_sequence_id` string, nullable, required: The routine the habit was restored to.
  - `current_activity_id` string, nullable, required: The user's current habit after the unskip, or null when the routine is not the active one.
  - `routine_reopened` boolean, required: Whether a completed routine was reopened because its habit was unskipped.

## Other responses

- `409`: Another routine is active, or the routine has nothing left to resume.

---

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