---
title: "Put Draft"
method: PUT
path: "/onboarding/draft"
tags: ["onboarding"]
---

# Put Draft

`PUT /onboarding/draft`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/onboarding/draft`
- Auth: none declared

Insert or wholesale-overwrite the caller's draft (the wizard's autosave, jwt).

Upsert semantics (one row per user); ``draft`` is server-opaque and size-capped
(422 beyond 1 MiB). Rate-limited per user, generously (the client debounces).

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- OnboardingDraftIn: ``PUT /onboarding/draft`` — the wizard state to persist. ``draft`` is the serialized frontend ``OnboardingDraft`` blob — opaque to the server (the SPA sanitizes it on hydration); ``current_step`` is the step key to resume at (unknown values fall back to the first step client-side).
  - `current_step` string, required
  - `draft` object, required

## Response `200`

Successful Response

- OnboardingDraftEnvelope: ``GET/PUT /onboarding/draft`` → the caller's draft, or ``null`` when none.
  - `draft` OnboardingDraftOut: One saved draft (built ``from_attributes`` off the ORM row).
    - `current_step` string, required
    - `draft` object, required
    - `updated_at` string, date-time, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zeno-works/apis/zeno-api.md) · [All operations](https://skmtc.dev/zeno-works/apis/zeno-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zeno-works/apis/zeno-api/revisions/1eb93dde146c?raw)
