Create account
const url = 'https://api.ultimateteam.ai/api/v1/auth/signup';const options = { method: 'POST', headers: {'X-API-Key': '<X-API-Key>', 'Content-Type': 'application/json'}, body: '{"company_name":"example","coupon_code":"example","email":"hello@example.com","password":"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://api.ultimateteam.ai/api/v1/auth/signup \ --header 'Content-Type: application/json' \ --header 'X-API-Key: <X-API-Key>' \ --data '{ "company_name": "example", "coupon_code": "example", "email": "hello@example.com", "password": "example" }'Register a new tenant and owner user, returns a token pair.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Request body for the signup endpoint.
Attributes: email: The new user’s email address. password: The new user’s password (min 8 characters). company_name: The company or tenant name. coupon_code: Optional coupon code granting a plan tier and/or bonus credits. A supplied-but-invalid code fails the signup with a 400 rather than silently provisioning Starter.
object
Examplegenerated
{ "company_name": "example", "coupon_code": "example", "email": "hello@example.com", "password": "example"}Responses
Section titled “ Responses ”Successful Response
Response body for the signup endpoint.
Attributes:
access_token: A short-lived JWT access token.
refresh_token: A long-lived JWT refresh token.
token_type: Always ‘bearer’.
tenant_id: The newly created tenant’s UUID.
user_id: The newly created user’s UUID.
applied_coupon: Summary of the redeemed coupon, or None when no
coupon was supplied. bonus_credits_granted reports what
actually landed in the credit store, which can be 0 even for a
coupon carrying bonus credits if the credit store was
unreachable — the account is still created and on the granted
plan, because that is durable in Postgres.
object
Short-lived JWT access token
Coupon summary embedded in the signup response.
bonus_credits is the entitlement recorded in the redemption row;
bonus_credits_granted is what actually landed in the credit store.
They differ when the Redis grant failed after the account was already
created — signup still succeeds (the plan is durable in Postgres), and
the response reports what happened rather than what was intended.
Long-lived JWT refresh token
Newly created tenant UUID
Token scheme, always ‘bearer’
Newly created user UUID
Example
{ "initial_credit_status": { "initial_plan": "starter", "status": "ready" }}Validation Error
object
object
object
Examplegenerated
{ "detail": [ { "ctx": {}, "input": "example", "loc": [ "example" ], "msg": "example", "type": "example" } ]}