Создать WhatsApp Flow
Создаёт WhatsApp Flow в статусе draft (name и categories обязательны). Опционально можно задать endpointUri (URL вашего data channel), сразу загрузить Flow JSON и опубликовать.
JWT tokentoken<token>multipart/form-data- body
name*stringНазвание сценария
categories*array<>Категории (через запятую или массив)
endpointUri?stringHTTPS-адрес вашего сервера для data channel этого Flow. Это не маршрут 1msg, и эти вызовы не приходят на webhookUrl канала.
WhatsApp отправляет POST JSON с полями encrypted_flow_data, encrypted_aes_key и initial_vector. Расшифруйте encrypted_aes_key приватным RSA-ключом от загруженного business_public_key (RSA-OAEP, SHA-256), затем encrypted_flow_data через AES-128-GCM (initial_vector — IV, последние 16 байт ciphertext — auth tag). Ответ — эта ciphertext-строка в base64 и заголовок Content-Type: text/plain. Шифруйте ответ тем же AES-ключом и IV, у которого инвертирован каждый байт. Если расшифровать запрос не удалось, ответьте HTTP 421: приложение WhatsApp заново запросит публичный ключ.
Тот же URL получает служебный ping. Ответьте в том же зашифрованном виде; расшифрованное тело — {"data":{"status":"active"}}. ping и обмены экранами не приходят в webhook канала. Когда пользователь отправляет форму, итог приходит на webhookUrl канала: messages[].interactive.type = nfm_reply.
Сначала загрузите публичный ключ через POST /whatsapp_business_encryption и вызывайте GET /whatsapp_business_encryption, пока business_public_key_signature_status не станет VALID.
uricloneFlowId?stringID сценария для клонирования
publish?booleanОпубликовать сразу
flowJson?|JSON сценария (строка или объект)
file?unknownНеобязательная загрузка flow.json
Flow создан
application/json- response
id?stringsuccess?booleanflowJson?publish?curl -X POST 'https://api.1msg.io/123/flows' \ -F 'name=lead_form' \ -F 'categories=[ "LEAD_GENERATION"]' \ -F 'publish=false'{ "id": "string", "success": true, "flowJson": { "success": true, "validationErrors": [ { "error": "string", "errorType": "string", "message": "string", "lineStart": 0, "lineEnd": 0, "columnStart": 0, "columnEnd": 0, "pointers": [ { "lineStart": 0, "lineEnd": 0, "columnStart": 0, "columnEnd": 0, "path": "string" } ] } ] }, "publish": {}}