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

# Register

> Create a new PingBack user account.

## Overview

Creates a new user account. After registering, use the [login endpoint](/api-reference/auth/login) to obtain a Bearer token.

## Request

**Method**: `POST`
**URL**: `/api/v1/auth/register`

### Headers

| Header       | Value            |
| ------------ | ---------------- |
| Content-Type | application/json |

### Body parameters

<ParamField body="email" type="string" required>
  The user's email address. Must be unique — registration fails if this email is already in use.
</ParamField>

<ParamField body="full_name" type="string" required>
  The user's full name.
</ParamField>

<ParamField body="password" type="string" required>
  The user's password. Must be at least 8 characters.
</ParamField>

## Response

Returns the newly created user object.

<ResponseField name="id" type="string (UUID)">
  Unique identifier for the user.
</ResponseField>

<ResponseField name="email" type="string">
  The user's email address.
</ResponseField>

<ResponseField name="full_name" type="string">
  The user's full name.
</ResponseField>

<ResponseField name="is_verified" type="boolean">
  Whether the user's email address has been verified. Defaults to `false` on registration.
</ResponseField>

<ResponseField name="is_google_account" type="boolean">
  Whether this account was created via Google OAuth.
</ResponseField>

<ResponseField name="avatar_url" type="string | null">
  URL of the user's avatar image, or `null` if not set.
</ResponseField>

## Example

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.pingback.live/api/v1/auth/register \
    -H "Content-Type: application/json" \
    -d '{
      "email": "jane@example.com",
      "full_name": "Jane Smith",
      "password": "securepassword123"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.pingback.live/api/v1/auth/register', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      email: 'jane@example.com',
      full_name: 'Jane Smith',
      password: 'securepassword123',
    }),
  });
  const data = await response.json();
  ```
</CodeGroup>

### Response example

```json theme={null}
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "email": "jane@example.com",
  "full_name": "Jane Smith",
  "is_verified": false,
  "is_google_account": false,
  "avatar_url": null
}
```

## Errors

| Status | Meaning                                                          |
| ------ | ---------------------------------------------------------------- |
| 400    | Email already registered                                         |
| 422    | Validation error — missing required fields or password too short |
