POST /api/dialogs/attachments/upload-url?channelId=550e8400-e29b-41d4-a716-446655440000
{
"fileName": "screenshot.png",
"fileType": "image/png",
"fileSize": 1024000
}POST /api/dialogs/attachments/upload-url?dialogId=550e8400-e29b-41d4-a716-446655440000
{
"fileName": "screenshot.png",
"fileType": "image/png",
"fileSize": 1024000
}{
"uploadId": "uuid",
"uploadUrl": "https://hb.ru-msk.vkcloud-storage.ru/...",
"expiresIn": 3600
}POST /api/dialogs/attachments/confirm (с теми же query параметрами)POST /api/dialogs/{dialogId}/send с полем attachments[]channelId ИЛИ dialogId (один из двух)channelId → получаем project_id из каналаdialogId → получаем project_id из диалогаcurl --location --request POST '/api/dialogs/attachments/upload-url?channelId&dialogId' \
--header 'Accept-Language;' \
--header 'Content-Type: application/json' \
--data-raw '{
"fileName": "screenshot.png",
"fileType": "image/jpeg",
"fileSize": 1024000
}'{
"uploadId": "550e8400-e29b-41d4-a716-446655440000",
"uploadUrl": "https://hb.ru-msk.vkcloud-storage.ru/aisenler-attachments/widget/2025/12/uuid.jpg?X-Amz-...",
"expiresIn": 3600
}