Skip to content
The API may change between versions while TTX-Zone is 0.x.

Sign up with an organization

POST
/api/v1/organizations
curl --request POST \
--url https://example.com/api/v1/organizations \
--header 'Content-Type: application/json' \
--data '{ "accepted_legal": [ { "kind": "terms", "version": 1 } ], "admin": { "email": "hello@example.com", "full_name": "example", "password": "example" }, "organization": { "name": "example", "tax_id": "example" } }'

Create an account together with its organization.

accept-language
Any of:
string
Media typeapplication/json
OrganizationSignupRequest
object
accepted_legal
Accepted Legal
Array<object>
<= 4 items
LegalAcceptanceItem

One version of one document the user accepts (signup, or after a substantial change). Must be the version currently published.

object
kind
required
LegalDocumentKind

The legal documents a deployment’s operator publishes for its users (Platform), accepted together at signup.

string
Allowed values: terms privacy
version
required
Version
integer
>= 1
admin
required
ProgramManagerCreate
object
email
required
Email
string format: email
full_name
required
Full Name
string
>= 1 characters <= 255 characters
password
required
Password
string
>= 8 characters <= 128 characters
organization
required
OrganizationProfileCreate
object
name
required
Name
string
>= 1 characters <= 255 characters
tax_id
Any of:
string
<= 50 characters

Successful Response

Media typeapplication/json
OrganizationSignupResponse
object
organization
required
OrganizationRead

Not built via automatic from_attributes conversion (despite the model_config below, kept for the id/name/tax_id/subscription_tier/ created_at fields that do map 1:1 onto the Organization model) – logo_url has no matching attribute on Organization (only logo_path does, see organization_logo_service.logo_url), so every call site constructs this explicitly, field by field.

object
alias
required
Any of:
string
created_at
required
Created At
string format: date-time
description
required
Any of:
string
domain
required
Any of:
string
id
required
Id
string format: uuid
logo_url
required
Any of:
string
name
required
Name
string
subscription_tier
required
Subscription Tier
string
tax_id
required
Any of:
string
user
required
UserRead
object
email
required
Email
string
full_name
required
Full Name
string
id
required
Id
string format: uuid

Example generated

{
"organization": {
"alias": "example",
"created_at": "2026-04-15T12:00:00Z",
"description": "example",
"domain": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"logo_url": "example",
"name": "example",
"subscription_tier": "example",
"tax_id": "example"
},
"user": {
"email": "example",
"full_name": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string

Example generated

{
"detail": [
{
"ctx": {},
"input": "example",
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}