---
title: Форматы payload по каналам
description: Форматы payload для каждого канала OMNI API Multi API — SMS, RCS, Viber, WhatsApp, WeChat, Email, Telegram, Push, TTS, Mobile Push, FlashCall
---

> **For AI agents:** the complete documentation index is at [llms.txt](/llms.txt). Append `.md` to any page URL for its markdown version.



> **Коротко:** поле `payload` в запросе OMNI API имеет свой формат для каждого канала. Здесь собраны все форматы с примерами JSON.

## Кому подходит

- Роль: Разработчик, Интегратор
- Уровень: Опытный

## Что это

Общая структура запроса одинаковая для всех каналов. Отличается только поле `payload` — его формат зависит от канала, указанного в поле `channel`.

## SMS (channel: 1)

| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| text | string | Да | Текст сообщения |

**Пример:**

```json
{
  "payload": {
    "text": "Тестовое сообщение"
  }
}
```

## RCS (channel: 2)

RCS использует объект `RCSMessage`. Можно отправить один из типов:

| Поле | Тип | Что означает |
|---|---|---|
| textMessage | string | Текстовое сообщение |
| fileMessage | object | Файл |
| audioMessage | object | Аудиосообщение |
| geolocationPushMessage | object | Геолокация |
| richcardMessage | object | Ричкарта |
| suggestedChipList | object | Кнопки ответа/действий |
| isTyping | string | Индикатор набора текста (`active` или `idle`) |

**Пример простого текста:**

```json
{
  "payload": {
    "RCSMessage": {
      "textMessage": "Это простое текстовое сообщение"
    }
  }
}
```

**Пример ричкарты:**

```json
{
  "payload": {
    "RCSMessage": {
      "richcardMessage": {
        "layout": {
          "cardOrientation": "VERTICAL",
          "titleFontStyle": ["bold"],
          "descriptionFontStyle": ["italic"]
        },
        "content": {
          "media": {
            "height": "SHORT_HEIGHT",
            "mediaUrl": "https://<домен>/files/pepsi.png",
            "thumbnailUrl": "https://<домен>/files/thumb",
            "mediaContentType": "image/png",
            "mediaFileSize": 791264,
            "thumbnailContentType": "image/png",
            "thumbnailFileSize": 4013
          },
          "title": "Заголовок карточки",
          "description": "Текст описания",
          "suggestions": [
            { "reply": { "displayText": "Первый ответ" } },
            { "reply": { "displayText": "Второй ответ" } }
          ]
        }
      }
    }
  }
}
```

**Пример файла:**

```json
{
  "payload": {
    "RCSMessage": {
      "fileMessage": {
        "fileUrl": "https://<домен>/files/document.pdf",
        "fileMIMEType": "application/pdf",
        "fileSize": 12345,
        "fileName": "document.pdf"
      }
    }
  }
}
```

**Пример геолокации:**

```json
{
  "payload": {
    "RCSMessage": {
      "geolocationPushMessage": {
        "pos": "59.94 30.31",
        "label": "Эрмитаж",
        "radius": 100
      }
    }
  }
}
```

## Viber (channel: 3)

| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| text | string | Да | Текст сообщения |
| imageUrl | string | Нет | URL изображения |
| buttonUrl | string | Нет | URL кнопки |
| buttonCaption | string | Нет | Текст кнопки |

**Пример:**

```json
{
  "payload": {
    "text": "У нас акция. Подробнее: https://example.com",
    "imageUrl": "https://<домен>/files/promo.jpg",
    "buttonUrl": "https://example.com/order",
    "buttonCaption": "Заказать"
  }
}
```

## WhatsApp (channel: 4)

WhatsApp использует поле `type` для выбора типа сообщения. Возможные значения: `template`, `text`, `image`, `video`, `audio`, `document`, `location`, `contacts`, `sticker`, `interactive`.

### Текстовое сообщение

```json
{
  "payload": {
    "recipient_type": "individual",
    "type": "text",
    "preview_url": true,
    "text": {
      "body": "Текст сообщения"
    }
  }
}
```

### Шаблон

```json
{
  "payload": {
    "recipient_type": "individual",
    "type": "template",
    "template": {
      "namespace": "<namespace>",
      "name": "<template_name>",
      "language": {
        "code": "en",
        "policy": "deterministic"
      },
      "components": [
        {
          "type": "body",
          "parameters": [
            { "type": "text", "text": "Alex" },
            { "type": "text", "text": "1234" }
          ]
        }
      ]
    }
  }
}
```

### Медиафайл

```json
{
  "payload": {
    "type": "image",
    "image": {
      "link": "https://<домен>/files/image.png",
      "caption": "Подпись к изображению"
    }
  }
}
```

Возможные типы медиа: `image`, `video`, `audio`, `document`, `sticker`. Для каждого — свои поля (`link`, `caption`, `filename`).

### Геолокация

```json
{
  "payload": {
    "type": "location",
    "location": {
      "latitude": 59.94,
      "longitude": 30.31,
      "name": "Эрмитаж",
      "address": "Санкт-Петербург"
    }
  }
}
```

## WeChat (channel: 6)

| Тип | Что указать |
|---|---|
| Только текст | Текст сообщения (до 2000 символов) |
| Файл | Изображение (jpg, jpeg, png, gif, до 10 МБ) |

**Пример текста:**

```json
{
  "payload": {
    "type": "text",
    "text": "Текст сообщения"
  }
}
```

## Email (channel: 7)

| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| subject | string | Нет | Тема письма |
| subtitle | string | Нет | Подзаголовок (сейчас не влияет) |
| body.rendered | array | Да | Массив тел письма |

**Поля элемента `rendered`:**

| Поле | Тип | Что указать |
|---|---|---|
| contentType | string | `html`, `mjml` или `plainText` |
| content | string | Тело письма |

**Пример:**

```json
{
  "payload": {
    "subject": "Тема письма",
    "subtitle": "Подзаголовок",
    "body": {
      "rendered": [
        {
          "contentType": "html",
          "content": "<html>Текст письма</html>"
        }
      ]
    }
  }
}
```

## Telegram Gateway (channel: 8)

| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| code | integer | Да* | Готовый код (4–8 цифр) |
| code_length | integer | Да* | Длина кода для генерации (4–8). Игнорируется, если указан `code` |
| ttl | integer | Нет | Время жизни кода в секундах (30–3600) |

> *- нужен либо `code`, либо `code_length`.

**Пример:**

```json
{
  "channel": 8,
  "contact": "905518709790",
  "senderId": "transit",
  "isOtp": true,
  "payload": {
    "code_length": 5,
    "ttl": 300
  }
}
```

## Telegram (channel: 9)

| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| type | string | Да | `text`, `photo`, `video`, `audio`, `voice`, `document` |
| photo / video / audio / voice / document | object | Да* | Объект медиа |

**Поля медиа:**

| Поле | Тип | Что указать |
|---|---|---|
| link | string | URL файла |
| caption | string | Подпись |

> *- нужен один из медиа-объектов.

**Пример текста:**

```json
{
  "payload": {
    "type": "text",
    "text": "Привет"
  }
}
```

**Пример фото:**

```json
{
  "payload": {
    "type": "photo",
    "photo": {
      "link": "https://<домен>/files/photo.png",
      "caption": "Хорошее фото"
    }
  }
}
```

## Push (channel: 10)

| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| notification | object | Да | Объект push-уведомления |
| notification.title | string | Да* | Заголовок |
| notification.body | string | Да* | Текст |
| notification.image | string | Нет | URL изображения |

> *- нужен хотя бы один из блоков: `title`, `body` или `image`.

**Пример:**

```json
{
  "payload": {
    "notification": {
      "title": "Заголовок",
      "body": "Текст уведомления",
      "image": "https://<домен>/files/promo.png"
    }
  }
}
```

## TTS (channel: 11)

| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| text | string | Да | Текст, который будет озвучен |
| language | string | Да | Код языка (`en`, `ru` и так далее) |
| repeat_count | integer | Нет | Сколько раз повторить (1, 2 или 3) |

**Пример:**

```json
{
  "payload": {
    "text": "31245",
    "language": "ru",
    "repeat_count": 1
  }
}
```

## Mobile Push (channel: 13)

| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| title | string | Да | Заголовок уведомления |
| body | string | Да | Текст уведомления |

**Пример:**

```json
{
  "payload": {
    "title": "Ваш промокод",
    "body": "1111"
  }
}
```

## FlashCall (channel: 14)

| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| code | string | Да | Последние цифры входящего звонка |
| dial_timeout | string | Нет | Секунды до завершения звонка, если не ответили |

**Пример:**

```json
{
  "payload": {
    "code": "1234",
    "dial_timeout": 5
  }
}
```

## Общие правила

<Note>
Для всех каналов работают общие параметры запроса: `contact`, `channel`, `senderId`, `webhook`, `clientInfo`, `isOtp`. Подробнее — [OMNI API — отправка сообщений](/03-multiapi/02-api/mapi-103-omni-api).
</Note>

<Note>
Если сообщение содержит одноразовый код — установите `isOtp: true`, чтобы содержимое скрывалось в EDR.
</Note>

## См. также

<Columns cols={2}>
  <Card title="OMNI API — отправка сообщений" icon="paper-plane" href="/03-multiapi/02-api/mapi-103-omni-api">
    Эндпоинты, параметры, каскад, шаблоны
  </Card>
  <Card title="Подключение к API" icon="plug" href="/03-multiapi/02-api/mapi-102-api-connection">
    Аутентификация, базовый URL
  </Card>
  <Card title="Вебхуки" icon="link" href="/06-reference/01-api/api-webhooks">
    Статусы сообщений
  </Card>
  <Card title="Обработка ошибок API" icon="triangle-exclamation" href="/06-reference/01-api/api-errors">
    HTTP-коды и форматы ответов
  </Card>
</Columns>

## Нужна помощь?

- Multi API: support@multiapi.ru
