---
title: "Signup"
method: POST
path: "/auth/signup"
tags: ["Auth"]
---

# Signup

`POST /auth/signup`

Create an operator account. Password must meet dashboard password policy. Requires the deployment's admin secret in `x-admin-secret` unless `user_auth.signup_requires_admin_secret` is set to false in config (it defaults to true).

## Request body

- SignupRequest
  - `email` string, required
  - `password` string, required
  - `merchant_id` string, nullable — Attach the new user to an existing merchant.

## Response `200`

Authenticated user

- AuthResponse
  - `token` string
  - `user_id` string
  - `email` string
  - `merchant_id` string
  - `role` string
  - `merchants` MerchantInfo[]
    - `merchant_id` string
    - `merchant_name` string
    - `role` string

## Changes

> 13 revisions in range; 1 could not be searched.

- **2026-08-04** `36e7a0972ee6` — 1 breaking, 1 info
  - the request property `merchant_id` became not nullable
  - the endpoint scheme security `AdminSecret` was added to the API
- **2026-04-25** `986e537b0455` — 1 info
  - endpoint added
- **2026-04-10** `9618544de91a` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/juspay/apis/decision-engine/changes/auth/signup/post.md)

---

[API](https://skmtc.dev/juspay/apis/decision-engine.md) · [All operations](https://skmtc.dev/juspay/apis/decision-engine/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/juspay/decision-engine/revisions/a35ceeb59faf/schema)
