> ## Documentation Index
> Fetch the complete documentation index at: https://dev.puppetvendors.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Vendor Portal Signup

> Create a new vendor portal signup request (pending merchant approval)

<Note>
  **V2 Preview** — This endpoint is part of the V2 API preview. Breaking changes may occur.
</Note>

## Overview

Create a new vendor portal signup request. The account is created in a pending state (`approved: false`) and requires manual merchant approval before the vendor can log in. This endpoint is public (no authentication required) and accepts legacy compatibility aliases (`shopId`, `email_address`) for backwards compatibility with older clients.

### Use Cases

* **Self-service onboarding** — Vendors submit a signup request from the vendor portal landing page
* **Multi-shop installations** — Vendors specify `shopDomain` to target a specific merchant
* **Honeypot protection** — `emailAddress` / `email_address` fields trap automated bots

## Request Body

<ParamField body="email" type="string" required>
  Vendor's email address.
</ParamField>

<ParamField body="password" type="string" required>
  Password, minimum 6 characters.
</ParamField>

<ParamField body="vendor" type="string" required>
  Vendor / business name.
</ParamField>

<ParamField body="shopDomain" type="string">
  Preferred shop identifier (e.g. `my-store.myshopify.com`).
</ParamField>

<ParamField body="shopId" type="string">
  Legacy compatibility shop identifier.
</ParamField>

<ParamField body="profile" type="object">
  Optional profile metadata.
</ParamField>

<ParamField body="termsAccepted" type="boolean">
  Must be `true` if terms acceptance is required by the shop.
</ParamField>

<ParamField body="emailAddress" type="string">
  Honeypot field — must be empty.
</ParamField>

<ParamField body="email_address" type="string">
  Legacy honeypot alias — must be empty.
</ParamField>

<ParamField body="message" type="string">
  Optional custom success message.
</ParamField>

## Response

```json 200 theme={null}
{
  "success": true,
  "data": {
    "userId": "507f1f77bcf86cd799439011",
    "email": "vendor@example.com",
    "approved": false,
    "message": "Thank you for submitting your request. We will respond as soon as possible."
  }
}
```

## Example

```bash theme={null}
curl -X POST "https://staging-api.puppetvendors.com/portal/auth/signup" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "vendor@example.com",
    "password": "secret123",
    "shopDomain": "my-store.myshopify.com",
    "vendor": "Acme Co",
    "termsAccepted": true,
    "email_address": ""
  }'
```

### More Examples

**Signup with full profile**

```bash theme={null}
curl -X POST "https://staging-api.puppetvendors.com/portal/auth/signup" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "newvendor@example.com",
    "password": "secure-pass-123",
    "shopDomain": "my-store.myshopify.com",
    "vendor": "Fresh Produce Co",
    "firstName": "Jane",
    "lastName": "Smith",
    "phone": "+1-555-0456",
    "message": "We sell organic farm produce and would love to join your marketplace.",
    "termsAccepted": true
  }'
```
