---
title: "Update User Onboarding State"
method: PUT
path: "/api/v1/user/onboarding-state"
tags: ["main"]
---

# Update User Onboarding State

`PUT /api/v1/user/onboarding-state`

## Request

- Base URL: `https://app.dograh.com`
- URL: `https://app.dograh.com/api/v1/user/onboarding-state`
- Auth: none declared

## Headers

- `authorization` string, nullable
- `X-API-Key` string, nullable

## Request body

- OnboardingStateUpdate: Partial update merged into the stored state. Scalars overwrite when supplied; list entries are unioned into the stored lists, so concurrent updates (e.g. two tabs marking different tooltips) don't drop each other's items.
  - `completed_at` string, date-time, nullable
  - `skipped` boolean, nullable
  - `seen_tooltips` string[], nullable
  - `completed_actions` string[], nullable

## Response `200`

Successful Response

- OnboardingState: Per-user onboarding state, stored under UserConfigurationKey.ONBOARDING. Server-authoritative replacement for the browser-localStorage onboarding store, so the post-signup gate and one-time tooltips hold across devices.
  - `completed_at` string, date-time, nullable
  - `skipped` boolean
  - `seen_tooltips` string[]
  - `completed_actions` string[]

## Other responses

- `404`: Not found
- `422`: Validation Error

## Changes

- **2026-11-03** `faa00cf76fcb`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/dograh/apis/dograh-api/changes/api/v1/user/onboarding-state/put.md)

---

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