Create account
Overview
Create a new account (bundle_id=3) under the authenticated partner, together with its owner user/person. It links an account-level plan and sends the owner a set-password welcome email. When with_location=1, it also auto-creates one location-account + store on that plan.
Prerequisites
- A bearer token. Callable with Partner tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/partner/account/create
Authentication
- Requires a bearer token in the
Authorization: Bearer <bearer-token>header. - Who can call it: Partner tokens.
- Authentication is under
partner/account. - The new account's parent is
parent_company_idwhen supplied, otherwise the caller's own partner company (companybundle_id= 1). parent_company_idandplan_idare both validated against the auth partner.parent_company_idmust pass an ownership check, andplan_idmust exist incompany_plansfor the resolved partner company.
Rate limit
- No rate limit.
Request body
- Body (JSON):
| Field | Type | Required | Description |
|---|---|---|---|
name | string (max 100) | yes | No angle brackets. Account/company name. |
website | string (url) | no | |
billing_id | string (max 100) | no | No angle brackets. |
client_account_id | string (max 100) | no | Partner-supplied external id. No angle brackets. |
phone | string (9–15) | no | Business phone. |
address | string (max 255) | yes | No angle brackets. |
city_id | integer | yes | Must be an existing city. |
companyindustry_id | integer | yes | Must be an existing (active) industry. Required. When omitted at the model layer the owning partner's industry is used only as a fallback, but this endpoint's validation requires it. |
postal_code | string (3–12) | yes | No angle brackets. |
first_name | string (max 100) | yes | Owner first name. |
last_name | string (max 100) | no | Owner last name. |
owner_email | email (rfc,dns) | yes | Unique across users. |
owner_phone | string (9–15) | no | |
password | string | yes | Min 8, max 100, mixed case + letters + numbers + symbol; no quotes/backslash/whitespace. |
plan_id | integer | yes | Must exist in plans AND be assigned to the resolving partner via company_plans. |
parent_company_id | integer | no | Must be a bundle_id 1/2/3 company belonging to the auth partner tree; defaults to the caller's partner company. |
with_location | in:0,1 | no | When 1, auto-creates a default location + store on the chosen plan. |
{
"name": "Acme Brand",
"website": "https://acmebrand.com",
"billing_id": "BILL-001",
"client_account_id": "ACC-001",
"phone": "1234567890",
"address": "123 Brand Street",
"city_id": 123,
"companyindustry_id": 123,
"postal_code": "10001",
"first_name": "John",
"last_name": "Doe",
"owner_email": "demo.owner+{{$timestamp}}@example.com",
"owner_phone": "9876543210",
"password": "<your-password>",
"plan_id": 123,
"with_location": 0
}Response
data.status(string) —success.data.message(string) —Account has been created successfully!.accountId.label(string) — created account name.accountId.value(integer) — created account company id.
200 Success · 200
200{
"data": {
"status": "success",
"message": "Account has been created successfully!",
"accountId": {
"label": "Acme Brand",
"value": 12
}
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
422 | The request failed validation — the response names the fields |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/partner/account/create" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"name": "Acme Brand", "website": "https://acmebrand.com", "billing_id": "BILL-001", "client_account_id": "ACC-001", "phone": "1234567890", "address": "123 Brand Street", "city_id": 123, "companyindustry_id": 123, "postal_code": "10001", "first_name": "John", "last_name": "Doe", "owner_email": "demo.owner+{{$timestamp}}@example.com", "owner_phone": "9876543210", "password": "<your-password>", "plan_id": 123, "with_location": 0}'Updated 9 days ago
Did this page help you?
