---
title: "Create Demo Customer"
method: POST
path: "/internal/demo-customers"
tags: ["Internal"]
---

# Create Demo Customer

`POST /internal/demo-customers`

## Request

- Base URL: `https://api.openintake.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openintake.ai/internal/demo-customers`
- Auth: none declared

Provision a demo customer with widgets enabled and pre-filled configs.

Idempotent on admin_email: if a user with that email already exists, the
existing customer is returned with existing=true and nothing is created.

## Request body

- CreateDemoCustomerRequest
  - `firm_name` string, required
  - `admin_email` string, required
  - `admin_password` string, required
  - `default_timezone` string
  - `chat_widget` DemoChatWidgetInput: Optional chat widget config overrides; absent fields use model defaults.
    - `assistant_name` string, nullable
    - `greeting_message` string, nullable
    - `persona_prompt` string, nullable
    - `law_firm_context` string, nullable
    - `fields_to_collect` object[], nullable
    - `intake_goal` string, nullable
  - `intake_form` DemoIntakeFormInput: Optional intake form config overrides; absent fields use model defaults.
    - `form_title` string, nullable
    - `completion_message` string, nullable
    - `law_firm_context` string, nullable
    - `intake_goal` string, nullable

## Response `200`

Successful Response

- CreateDemoCustomerResponse
  - `customer_id` string, uuid, required
  - `customer_name` string, required
  - `admin_user_id` string, uuid, required
  - `admin_email` string, required
  - `existing` boolean, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/openintake/apis/openintake-api.md) - [All operations](https://skmtc.dev/openintake/apis/openintake-api/llms.txt) - [OpenAPI document](https://skmtc.dev/openintake/apis/openintake-api/revisions/de90a8dcbc07?raw)
