Create the owner account
Uses up the setup token, creates the owner with email and password and signs them in (HttpOnly cookie). CONFLICT when an owner already exists.
Needs no sign-in. Not available to MCP clients or the assistant.
application/json- body
token*stringThe t= value of the installer's setup link.
1 <= length <= 200email*stringemaillength <= 254name?stringlength <= 80password*stringAt least 10 characters.
10 <= length <= 1024Success.
application/json- response
viewer*curl -X POST 'https://example.com/api/v1/setup.createOwner' \ -H 'Content-Type: application/json' \ -d '{ "token": "string", "email": "[email protected]", "password": "stringstri"}'{ "viewer": { "id": "string", "email": "[email protected]", "name": "string", "role": "owner" }}Upload a logo or favicon POST
Replaces one branding image. The file travels as a base64 data URL (PNG, SVG, WebP, JPEG or ICO, at most 512 KiB). SVGs are served with a sandboxing Content-Security-Policy. Needs `settings.manage`, which owners and admins hold. Not available to MCP clients or the assistant.
Finish first-run setup POST
Marks the setup wizard as done, so the web app stops offering it. Steps left out can be done later in settings. Needs `setup.finish`, which owners and admins hold. Not available to MCP clients or the assistant.