---
title: "Signup"
method: POST
path: "/v1/auth/signup"
tags: ["Authentication", "Authentication"]
---

# Signup

`POST /v1/auth/signup`

## Request

- Base URL: `https://api.call2me.app`
- URL: `https://api.call2me.app/v1/auth/signup`
- Auth: HTTP bearer

Register a new user account.

## Request body

- SignupRequest: User registration request.
  - `email` string, email, required
  - `password` string, required: Minimum 8 characters, max 72 bytes
  - `full_name` string, nullable
  - `attribution` Attribution: Where this user came from, captured in the browser on first touch. GA4 loses the source when a visitor crosses from call2me.app to dash.call2me.app, so every conversion landed in "Unassigned" and we could not say how our first paying customer found us (14 Aug 2026). This travels with the signup request instead, so attribution lives in our own DB — independent of analytics and ad blockers. Every field is optional: a direct visit legitimately has no referrer. Lengths are capped because these strings come from the client.
    - `referrer` string, nullable
    - `landing` string, nullable
    - `utm_source` string, nullable
    - `utm_medium` string, nullable
    - `utm_campaign` string, nullable
    - `gclid` string, nullable

## Response `200`

Successful Response

- AuthResponse: Authentication response with tokens.
  - `access_token` string, required
  - `refresh_token` string, required
  - `token_type` string
  - `expires_in` integer, required
  - `user` object, required

## Other responses

- `422`: Validation Error

---

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