Initiate signup (create/resume activation + email OTP)

Overview

Step 1 of self-service signup. Creates a new SignupActivation for the email (or resumes an in-progress one), optionally tagging it with a plan and referral code. It then emails a one-time verification code (OTP, category rs_signup, 5-minute expiry). Rejects an email that already has a registered User.

Prerequisites

  • No authentication — this endpoint is public.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/signup

Authentication

  • No bearer token required.

  • Public — no bearer token (auth: noauth). Route lives in the public login/signup throttle group.

Rate limit

  • 10 requests/min per IP. Public route.

Request body

FieldTypeRequiredDescription
emailstringRequiredValid email (rfc,dns); must be unused — a taken email fails validation (422).
term_and_conditionintegerRequiredMust be 1 (terms accepted).
plan_idintegerOptionalMust be an existing plan; stored on the activation.
company_industry_idintegerOptionalMust be an existing industry.
referral_codestringOptionalReferral / partner code; ties the signup to a partner or account company.
query_stringstringOptionalRaw marketing query string (e.g. UTM params) kept for attribution.
{
  "email": "[email protected]",
  "term_and_condition": 1,
  "plan_id": 3,
  "referral_code": "REF123",
  "query_string": "utm_source=google"
}

How it works

  • Synchronous. 200 returns the activation snapshot (data.account, plus data.business / data.feature_options / data.meta_data once later steps run, and data.user once a User exists).
  • 422 when the email is already registered (The email has already been taken.).
  • 422 when the activation is already Active (You have already registered.).
  • 422 on validation failure.

Response

200 OK · 200

{
  "data": {
    "message": null,
    "account": {
      "id": 101,
      "email": "[email protected]",
      "email_verified_at": null,
      "first_name": null,
      "last_name": null,
      "mobile": null,
      "plan_id": 3,
      "plan_group_name": null,
      "referral_code": "REF123",
      "referral_company_id": 5,
      "referral_company_name": "Acme Partner",
      "step": "account_activation",
      "who_will_pay": "brand",
      "hear_about_us": null,
      "hear_others": null,
      "hide_password": null,
      "show_skip_google_connect_button": 0
    },
    "business": null,
    "feature_options": null,
    "meta_data": null
  }
}

422 Email already registered · 422

{
  "message": "The email has already been taken.",
  "errors": {
    "email": ["The email has already been taken."]
  }
}

422 Validation error · 422

{
  "message": "The email field is required.",
  "errors": {
    "email": [
      "The email field is required."
    ],
    "term_and_condition": [
      "The selected term and condition is invalid."
    ]
  }
}

Errors

StatusMeaning
422Validation error, already registered, or already active
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/signup" \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"email": "[email protected]", "term_and_condition": 1, "plan_id": 3, "referral_code": "REF123", "query_string": "utm_source=google"}'

Notes

  • Sends an OTP email.

Did this page help you?