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

# Send Email

> This endpoint allows you to send an email.

#### Body

<ParamField body="to" type="array" placeholder="Enter email address" required>
  This is to contain email ids where you need to send emails. you can add
  multiple email ids where you need to send emails. Max 10 emails at one api.
</ParamField>

<ParamField body="subject" type="string" placeholder="Enter email subject" required>
  This contains email subject
</ParamField>

<ParamField body="from" type="string" placeholder="Enter 'from' email address" required>
  This is a from email id. you can assigned only verified email id. you can
  verify from email id from zixflow dashboard by below-specified section.
  dashboard - campaign -> settings -> email -> domain
</ParamField>

<ParamField body="fromName" type="string" placeholder="Enter 'from' display name" required>
  Display name for from email address
</ParamField>

<ParamField body="bodyHtml" type="string" placeholder="Enter HTML content" required>
  This field used to send html content in email either bodyHtml or bodyText is
  required
</ParamField>

<ParamField body="bodyText" type="string" placeholder="Enter plain text content" required>
  This field used to send normal text content in email either bodyHtml or
  bodyText is required
</ParamField>

<ParamField body="trackClicks" type="boolean" placeholder="Enter 'true' or 'false'">
  Should the click be tracked? If no value has been provided, Account's default
  setting will be used.
</ParamField>

<ParamField body="trackOpens" type="boolean" placeholder="Enter 'true' or 'false'">
  Should the opens be tracked? If no value has been provided, Account's default
  setting will be used
</ParamField>

<ParamField body="replyToEmail" type="string" placeholder="Enter reply-to email address">
  Email address to reply to
</ParamField>

<ParamField body="replyToName" type="string" placeholder="Enter reply-to display name">
  Name to use when replying to the email.
</ParamField>

<ParamField body="attachments" type="array" placeholder="Enter attachment IDs">
  An array of ID's of attachments. Note: you can get attachment id from
  uploading attachment by upload attachment API
</ParamField>

<ParamField body="reportURL" type="string" placeholder="Enter report URL">
  (Optional) Specify the URL where the user's report and deliveries should be
  delivered.
</ParamField>

#### Response

<ResponseField name="status" type="boolean">
  Indicates whether the call was successful. true if successful, false if not.
</ResponseField>

<ResponseField name="message" type="string">
  success or error response message
</ResponseField>

<RequestExample>
  ```bash cUrl theme={null}
  curl --location --request POST 'https://api.zixflow.com/api/v1/campaign/email/send' \
  --header 'Authorization: Bearer 56616641ee123b80a36b99fedc2bfa4f0d7f63072d97ddb1578c7a5aa970e7edde6618c7f750beb921aee3eebc9cc48899ee992fa4eb95a663d0e0b2eaa35b73f3b2344c' \
  --header 'Content-Type: application/json' \
  --data-raw '{
      "to": [
          "sample@gmail.com"
      ],
      "subject": "API test 1",
      "from": "test@domain.com",
      "fromName": "sahil",
      "bodyHtml": "<h1>Test 1</h1>",
      "trackClicks": true,
      "trackOpens": true,
      "replyToEmail": "test2@domain2.com",
      "attachments": ["63a98c9c2b6df936ac930c17"],
      "replyToName": "sam",
      "bodyText": "Just Text Email",
      "reportUrl": "https://webhook.site/0a276bc5-f0e4-4235-9006-b58b7d224ad5"
  }'
  ```

  ```js Nodejs theme={null}
  var axios = require("axios");
  var data = JSON.stringify({
    to: ["sample@gmail.com"],
    subject: "API test 1",
    from: "test@domain.com",
    fromName: "sahil",
    bodyHtml: "<h1>Test 1</h1>",
    trackClicks: true,
    trackOpens: true,
    replyToEmail: "test2@domain2.com",
    attachments: ["63a98c9c2b6df936ac930c17"],
    replyToName: "sam",
    bodyText: "Just Text Email",
    reportUrl: "https://webhook.site/0a276bc5-f0e4-4235-9006-b58b7d224ad5",
  });

  var config = {
    method: "post",
    url: "https://api.zixflow.com/api/v1/campaign/email/send",
    headers: {
      Authorization:
        "Bearer 56616641ee123b80a36b99fedc2bfa4f0d7f63072d97ddb1578c7a5aa970e7edde6618c7f750beb921aee3eebc9cc48899ee992fa4eb95a663d0e0b2eaa35b73f3b2344c",
      "Content-Type": "application/json",
    },
    data: data,
  };

  axios(config)
    .then(function (response) {
      console.log(JSON.stringify(response.data));
    })
    .catch(function (error) {
      console.log(error);
    });
  ```

  ```php PHP theme={null}
  <?php
  require_once 'HTTP/Request2.php';
  $request = new HTTP_Request2();
  $request->setUrl('https://api.zixflow.com/api/v1/campaign/email/send');
  $request->setMethod(HTTP_Request2::METHOD_POST);
  $request->setConfig(array(
    'follow_redirects' => TRUE
  ));
  $request->setHeader(array(
    'Authorization' => 'Bearer 56616641ee123b80a36b99fedc2bfa4f0d7f63072d97ddb1578c7a5aa970e7edde6618c7f750beb921aee3eebc9cc48899ee992fa4eb95a663d0e0b2eaa35b73f3b2344c',
    'Content-Type' => 'application/json'
  ));
  $request->setBody('{\n    "to": [\n        "sample@gmail.com"\n    ],\n    "subject": "API test 1",\n    "from": "test@domain.com",\n    "fromName": "sahil",\n    "bodyHtml": "<h1>Test 1</h1>",\n    "trackClicks": true,\n    "trackOpens": true,\n    "replyToEmail": "test2@domain2.com",\n    "attachments": ["63a98c9c2b6df936ac930c17"],\n    "replyToName": "sam",\n    "bodyText": "Just Text Email",\n    "reportUrl": "https://webhook.site/0a276bc5-f0e4-4235-9006-b58b7d224ad5"\n}');
  try {
    $response = $request->send();
    if ($response->getStatus() == 200) {
      echo $response->getBody();
    }
    else {
      echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
      $response->getReasonPhrase();
    }
  }
  catch(HTTP_Request2_Exception $e) {
    echo 'Error: ' . $e->getMessage();
  }
  ```

  ```py Python theme={null}
  import requests
  import json

  url = "https://api.zixflow.com/api/v1/campaign/email/send"

  payload = json.dumps({
    "to": [
      "sample@gmail.com"
    ],
    "subject": "API test 1",
    "from": "test@domain.com",
    "fromName": "sahil",
    "bodyHtml": "<h1>Test 1</h1>",
    "trackClicks": True,
    "trackOpens": True,
    "replyToEmail": "test2@domain2.com",
    "attachments": [
      "63a98c9c2b6df936ac930c17"
    ],
    "replyToName": "sam",
    "bodyText": "Just Text Email",
    "reportUrl": "https://webhook.site/0a276bc5-f0e4-4235-9006-b58b7d224ad5"
  })
  headers = {
    'Authorization': 'Bearer 56616641ee123b80a36b99fedc2bfa4f0d7f63072d97ddb1578c7a5aa970e7edde6618c7f750beb921aee3eebc9cc48899ee992fa4eb95a663d0e0b2eaa35b73f3b2344c',
    'Content-Type': 'application/json'
  }

  response = requests.request("POST", url, headers=headers, data=payload)

  print(response.text)
  ```

  ```java JAVA theme={null}
  OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
  MediaType mediaType = MediaType.parse("application/json");
  RequestBody body = RequestBody.create(mediaType, "{\n    \"to\": [\n        \"sample@gmail.com\"\n    ],\n    \"subject\": \"API test 1\",\n    \"from\": \"test@domain.com\",\n    \"fromName\": \"sahil\",\n    \"bodyHtml\": \"<h1>Test 1</h1>\",\n    \"trackClicks\": true,\n    \"trackOpens\": true,\n    \"replyToEmail\": \"test2@domain2.com\",\n    \"attachments\": [\"63a98c9c2b6df936ac930c17\"],\n    \"replyToName\": \"sam\",\n    \"bodyText\": \"Just Text Email\",\n    \"reportUrl\": \"https://webhook.site/0a276bc5-f0e4-4235-9006-b58b7d224ad5\"\n}");
  Request request = new Request.Builder()
    .url("https://api.zixflow.com/api/v1/campaign/email/send")
    .method("POST", body)
    .addHeader("Authorization", "Bearer 56616641ee123b80a36b99fedc2bfa4f0d7f63072d97ddb1578c7a5aa970e7edde6618c7f750beb921aee3eebc9cc48899ee992fa4eb95a663d0e0b2eaa35b73f3b2344c")
    .addHeader("Content-Type", "application/json")
    .build();
  Response response = client.newCall(request).execute();
  ```

  ```dart DART theme={null}
  var headers = {
    'Authorization': 'Bearer 56616641ee123b80a36b99fedc2bfa4f0d7f63072d97ddb1578c7a5aa970e7edde6618c7f750beb921aee3eebc9cc48899ee992fa4eb95a663d0e0b2eaa35b73f3b2344c',
    'Content-Type': 'application/json'
  };
  var request = http.Request('POST', Uri.parse('https://api.zixflow.com/api/v1/campaign/email/send'));
  request.body = json.encode({
    "to": [
      "sample@gmail.com"
    ],
    "subject": "API test 1",
    "from": "test@domain.com",
    "fromName": "sahil",
    "bodyHtml": "<h1>Test 1</h1>",
    "trackClicks": true,
    "trackOpens": true,
    "replyToEmail": "test2@domain2.com",
    "attachments": [
      "63a98c9c2b6df936ac930c17"
    ],
    "replyToName": "sam",
    "bodyText": "Just Text Email",
    "reportUrl": "https://webhook.site/0a276bc5-f0e4-4235-9006-b58b7d224ad5"
  });
  request.headers.addAll(headers);

  http.StreamedResponse response = await request.send();

  if (response.statusCode == 200) {
    print(await response.stream.bytesToString());
  }
  else {
    print(response.reasonPhrase);
  }

  ```
</RequestExample>

<ResponseExample>
  ```json 200-Success theme={null}
  {
    "status": true,
    "message": "Email sent successfully!"
  }
  ```

  ```json 400-Bad Request theme={null}
  {
    "status": false,
    "message": "to[1] must be a valid email"
  }
  ```

  ```json 401-Unauthorised theme={null}
  {
    "status": false,
    "message": "No token provided"
  }
  ```
</ResponseExample>
