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

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://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_id when supplied, otherwise the caller's own partner company (company bundle_id = 1).
  • parent_company_id and plan_id are both validated against the auth partner. parent_company_id must pass an ownership check, and plan_id must exist in company_plans for the resolved partner company.

Rate limit

  • No rate limit.

Request body

  • Body (JSON):
FieldTypeRequiredDescription
namestring (max 100)yesNo angle brackets. Account/company name.
websitestring (url)no
billing_idstring (max 100)noNo angle brackets.
client_account_idstring (max 100)noPartner-supplied external id. No angle brackets.
phonestring (9–15)noBusiness phone.
addressstring (max 255)yesNo angle brackets.
city_idintegeryesMust be an existing city.
companyindustry_idintegeryesMust 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_codestring (3–12)yesNo angle brackets.
first_namestring (max 100)yesOwner first name.
last_namestring (max 100)noOwner last name.
owner_emailemail (rfc,dns)yesUnique across users.
owner_phonestring (9–15)no
passwordstringyesMin 8, max 100, mixed case + letters + numbers + symbol; no quotes/backslash/whitespace.
plan_idintegeryesMust exist in plans AND be assigned to the resolving partner via company_plans.
parent_company_idintegernoMust be a bundle_id 1/2/3 company belonging to the auth partner tree; defaults to the caller's partner company.
with_locationin:0,1noWhen 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

{
  "data": {
    "status": "success",
    "message": "Account has been created successfully!",
    "accountId": {
      "label": "Acme Brand",
      "value": 12
    }
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
422The request failed validation — the response names the fields
500Unexpected 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}'

Did this page help you?