назад
Документация API FormToMail

API FormToMail предназначен для отправки форм с вашего сайта на электронную почту и Telegram.

POST /send

Headers

  • Authorization: Bearer YOUR_API_KEY — авторизация по ключу. Он является публичным и с других сайтов приниматься не будет.
  • Content-Type: application/json

Параметры

  • title (string, необязательно) — заголовок формы. То, что вы увидите первым (например: "Новая заявка").
  • body ({ [key: string]: HTML }, обязательно) — форма. Ключи объекта — это описания полей, а значения — сами данные в формате HTML строки.

Пример кода (JS)

const response = await fetch("https://api.formtomail.ru/send", {
    method: "POST",
    headers: {
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        title: "Новая заявка",
        body: {
            "Имя": "значение поля",
            "Телефон": "значение поля"
        }
    })
});
const body = await response.json();

Ответ API

  • 200 OK — форма успешно отправлена. Ответ (JSON):
{ "statusCode": 200, "message": "Успешно отправлено" }
  • 400 Bad Request — ошибка, которую стоит показать пользователю. Пример (JSON):
{ "statusCode": 400, "message": "Обслуживание сайта завершено" }
  • Другая ошибка — не стоит показывать пользователю (пример, JSON):
{ "statusCode": 403, "message": "Срок обслуживания истек" }

POST /send

Headers

  • Authorization: Bearer YOUR_API_KEY — авторизация по ключу. Он является публичным и с других сайтов приниматься не будет.
  • Content-Type: multipart/form-data

Поля

  • attachments (File[], необязательно) — массив файлов, передаваемых с запросом. Для корректной передачи имён файлов кодируйте имя файла с помощью encodeURIComponent перед отправкой
  • title (string, необязательно) — заголовок формы. То, что вы увидите первым (например: "Новая заявка").
  • body (JSON.stringify({ [key: string]: HTML }), обязательно) — форма в виде JSON строки

Ограничения

  • Максимальное количество файлов: 10
  • Максимальный объём всех файлов: 20MB
  • Расширения: .jpg, .jpeg, .png, .webp, .bmp, .gif, .mov, .mp4
const SUPPORTED_EXTENSIONS = ["jpg", "jpeg", "png", "webp", "bmp", "gif", "mov", "mp4"];

Пример кода (JS)

const formData = new FormData();

formData.append("title", "Новая заявка");
formData.append("body", JSON.stringify({
    "Имя": "значение поля",
    "Телефон": "значение поля"
}));

// Пример добавления файлов
const SUPPORTED_EXTENSIONS = ["jpg", "jpeg", "png", "webp", "bmp", "gif", "mov", "mp4"];
const filesInput = document.getElementById("files");
const files = Array.from(filesInput.files);
for (const file of files) {
  const extension = file.name.split(".").pop()?.toLowerCase();
  if (!extension || !SUPPORTED_EXTENSIONS.includes(extension)) {
    continue; // неподдерживаемый тип
  }
  formData.append("attachments", file, encodeURIComponent(file.name));
}

const response = await fetch("https://api.formtomail.ru/send", {
    method: "POST",
    headers: {
        "Authorization": "Bearer YOUR_API_KEY"
    },
    body: formData,
});
const body = await response.json();

Ответ API

  • 200 OK — форма успешно отправлена. Ответ (JSON):
{ "statusCode": 200, "message": "Успешно отправлено" }
  • 400 Bad Request — ошибка, которую стоит показать пользователю. Пример (JSON):
{ "statusCode": 400, "message": "Отправить можно не более 10 файлов" }
  • Другая ошибка — не стоит показывать пользователю (пример, JSON):
{ "statusCode": 403, "message": "Срок обслуживания истек" }