Workspace Owner Signup (v1)
Method & Path
POST /api/v1/signup
Actual backend path: /v1/signup
note
This public signup path is separate from /v1/workspace/:workspaceId so registration cannot collide with authenticated workspace routes. The legacy POST /v1/workspace/ create endpoint is unchanged.
Description
Creates a new workspace and Workspace Owner login. Returns a workspace access token for the new owner.
Authentication
None: Public. Unauthenticated visitor becomes a Workspace Owner.
Persona access:
- Visitor (public): yes
- Workspace Owner: created by this call
- Staff: no
- Admin: no
- Customer: no
Headers
| Header | Type | Required | Description |
|---|---|---|---|
Content-Type | string | Yes | application/json |
Request Body
{
"email": "owner@example.com",
"password": "SecurePass12",
"phone": "+972595590939",
"planId": "507f1f77bcf86cd799439011",
"businessCategorySlug": "stores",
"marketingOptIn": true
}
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Owner email (unique) |
password | string | Yes | At least 8 characters and one number |
phone | string | Yes | E.164 phone number, e.g. +972595590939 |
planId | string | Yes | Active plan id |
businessCategorySlug | string | Yes | Active business category slug |
marketingOptIn | boolean | No | Defaults to false |
name | string | No | Workspace name |
slogan | string | No | Workspace slogan |
workingHours | object | No | Optional 7-day schedule |
Response 201 Created
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"workspace": {
"id": "507f1f77bcf86cd799439011",
"name": null,
"slogan": null,
"email": "owner@example.com",
"phone": "+972595590939",
"phoneVerified": false,
"requirePhoneVerification": true,
"planId": "507f1f77bcf86cd799439011",
"businessCategorySlug": "stores",
"marketingOptIn": true,
"discountPercentage": null
}
}
Common Errors
- 409 Conflict: Email (or another unique field) already exists
- 422 Unprocessable Entity: Invalid email, password, phone, plan, or category
- 400 Bad Request: Malformed JSON or invalid identifier
- 500 Internal Server Error: Unexpected server error (response
messageincludes the underlying cause)