---
title: "Transition the first-session state (dismiss, resume, complete)"
method: PATCH
path: "/api/first-run/state"
tags: ["First run"]
---

# Transition the first-session state (dismiss, resume, complete)

`PATCH /api/first-run/state`

## Request

- Base URL: `https://api.setluca.com`
- URL: `https://api.setluca.com/api/first-run/state`
- Auth: API key in cookie `luca.session_token`

Moves the first-session state as the coach progresses, dismisses, or resumes. It only accepts states the coach is allowed to set.

**Session-only.** This endpoint isn't on the API-key allowlist. An organization API key gets a 403 here, whatever scopes it holds.

## Headers

- `Luca-API-Version` '1'

## Request body

- FirstRunStateUpdate
  - `state` 'first_visit' | 'activated' | 'dismissed' | 'completed', required

## Response `200`

ok

- FirstRunStateUpdateResponse
  - `ok` true, required
  - `firstSessionState` 'first_visit' | 'activated' | 'dismissed' | 'completed', required

## Other responses

- `401`: unauthorized
- `429`: rate limited
- `500`: internal error
- `503`: service unavailable

---

[API](https://skmtc.dev/setluca/apis/luca-api.md) · [All operations](https://skmtc.dev/setluca/apis/luca-api/llms.txt) · [OpenAPI document](https://skmtc.dev/setluca/apis/luca-api/revisions/90a200e4100b?raw)
