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

# Add Notifications

Use this API to add notifications.

# Endpoint

`POST https://api.velt.dev/v1/notifications/add`

# Headers

<ParamField header="x-velt-api-key" type="string" required>
  Your API key.
</ParamField>

<ParamField header="x-velt-auth-token" type="string" required>
  Your [Auth Token](/security/auth-tokens).
</ParamField>

# Body

#### Params

<ParamField body="data" type="object" required>
  <Expandable title="properties">
    <ParamField body="organizationId" type="string" required>
      Organization ID
    </ParamField>

    <ParamField body="documentId" type="string" required>
      Document ID
    </ParamField>

    <ParamField body="actionUser" type="User" required>
      User who took the action
    </ParamField>

    <ParamField body="notificationId" type="string">
      Notification ID. If not provided, Velt will generate a random ID.
      Use this if you want more control on the ID being set and prevent duplicate notifications.
      Only the special characters `_`, `-` are allowed.
    </ParamField>

    <ParamField body="displayHeadlineMessageTemplate" type="string" required>
      Display Headline Message Template
    </ParamField>

    <ParamField body="displayHeadlineMessageTemplateData" type="object">
      Display Headline Message Template Data (Optional)

      <Expandable title="properties">
        <ParamField body="actionUser" type="User">
          User who took the action
        </ParamField>

        <ParamField body="recipientUser" type="string">
          User who was directly affected by the action
        </ParamField>

        <ParamField body="yourCustomField" type="string">
          Any custom field with string value
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="displayBodyMessage" type="string" required>
      Display Body Message
    </ParamField>

    <ParamField body="notifyUsers" type="User[]" required>
      Array of Notify Users
    </ParamField>

    <ParamField body="notifyAll" type="boolean">
      Default is true.
      If set to true, the notification will be sent to all users in the organization.
      If set to false, the notification will be sent to only the users specified in the `notifyUsers` array.
    </ParamField>

    <ParamField body="notificationSourceData" type="object">
      Any custom object to be stored with the notification.
      When the user clicks on the notification, this data will be sent in the callback.
    </ParamField>

    <ParamField body="createDocument" type="boolean">
      If set to true, a new document will be created before the notification is created.
    </ParamField>

    <ParamField body="createOrganization" type="boolean">
      If set to true, a new organization will be created (if it doesn't exist) before the notification is created.
    </ParamField>
  </Expandable>
</ParamField>

## **Example Request**

```JSON theme={null}
{
  "data": {
    "organizationId": "yourOrganizationId",
    "documentId": "yourDocumentId",
    "actionUser": {
      "userId": "yourUserId",
      "name": "User Name",
      "email": "user@example.com"
    },
    "displayHeadlineMessageTemplate": "This is main template, you can pass variables using curly brackets like this: {actionUser}, {recipientUser}, {yourCustomVariableWithStringValue}",
    "displayHeadlineMessageTemplateData": {
      "actionUser": {
        "userId": "yourUserId",
        "name": "User Name",
        "email": "user@example.com"
      },
      "recipientUser": {
        "userId": "recipientUserId",
        "name": "Recipient Name",
        "email": "recipient@example.com"
      },
      "yourCustomField": "Variable will be replaced with this text"
    },
    "displayBodyMessage": "This is body message (Secondary message)",
    "notifyUsers": [
      {
        "email": "test@example.com",
        "userId": "testingUserId"
      },
      {
        "userId": "yourUserId",
        "name": "User Name",
        "email": "user@example.com"
      }
    ]
  }
}
```

# Response

#### Success Response

```JSON theme={null}
{
  "result": {
    "status": "success",
    "message": "Notification added successfully.",
    "data": {
      "success": true,
      "message": "Notification added successfully."
    }
  }
}
```

#### Failure Response

```JSON theme={null}
{
  "error": {
    "message": "ERROR_MESSAGE",
    "status": "INVALID_ARGUMENT"
  }
}
```

<ResponseExample>
  ```js theme={null}
  {
    "result": {
      "status": "success",
      "message": "Notification added successfully.",
      "data": {
        "success": true,
        "message": "Notification added successfully."
      }
    }
  }
  ```
</ResponseExample>
