Create the organization and its first admin (owner), and sign in.
POST
/api/v1/setup
const url = 'https://example.com/api/v1/setup';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"org_name":"ACME","email":"you@example.com","password":"example","token":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/setup \ --header 'Content-Type: application/json' \ --data '{ "org_name": "ACME", "email": "you@example.com", "password": "example", "token": "example" }'Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
org_name
required
string
Example
ACMEemail
required
string
Example
you@example.compassword
required
string format: password
token
The setup token from the installer’s link, when required.
string | null
Responses
Section titled “Responses”Admin created and signed in
Media typeapplication/json
object
id
required
string
email
required
string
display_name
string | null
via
required
How the request was authenticated: session or token.
string
must_change_password
required
The temporary password must be replaced (POST /me/password) before
anything else is allowed.
boolean
Examplegenerated
{ "id": "example", "email": "example", "display_name": "example", "via": "example", "must_change_password": true}Missing, wrong or expired setup token, or plain HTTP from another machine (insecure_transport)
Media typeapplication/json
Problem Details body.
object
code
required
Stable machine-readable code, e.g. forbidden.
string
title
required
Short human readable title.
string
status
required
HTTP status.
integer format: int32
detail
Details, if safe to expose.
string | null
Example
{ "code": "forbidden"}Setup is already complete
Media typeapplication/json
Problem Details body.
object
code
required
Stable machine-readable code, e.g. forbidden.
string
title
required
Short human readable title.
string
status
required
HTTP status.
integer format: int32
detail
Details, if safe to expose.
string | null
Example
{ "code": "forbidden"}Media typeapplication/json
Problem Details body.
object
code
required
Stable machine-readable code, e.g. forbidden.
string
title
required
Short human readable title.
string
status
required
HTTP status.
integer format: int32
detail
Details, if safe to expose.
string | null
Example
{ "code": "forbidden"}