Skip to content
GitHub

Create the organization and its first admin (owner), and sign in.

POST
/api/v1/setup
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" }'
Media typeapplication/json
object
org_name
required
string
Example
ACME
email
required
string
Example
you@example.com
password
required
string format: password
token

The setup token from the installer’s link, when required.

string | null

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"
}