Вау! Создайте интеграцию с WhatsApp. Начните бесплатно. Регистрация
WhatsApp API

Суточная скидка в статусе WhatsApp до полуночи

Кто видит статус магазина, может открыть скидку, которая действует только из этого статуса и сгорает в полночь. Когда окно суток начинается, ваш бэкенд публикует изображение товара через Whapi.Cloud. Этот сценарий показывает интеграторам, как собрать такой поток на WhatsApp API.

Скрытый URL держит ваш бэкенд Одна публикация медиа с номера магазина
Телефон магазина со статусом WhatsApp: изображение товара и суточная скидка, которая заканчивается в полночь.
Декоративный пузырь
Сценарий

Когда нужен этот поток

Скидка заканчивается в полночь

Берите этот поток, когда акция длится сутки и ваш бэкенд гасит ссылку в полночь.

Ссылка действует только из статуса

Берите этот поток, когда ссылка работает только из этого статуса, а пересланный чат не должен активировать акцию.

В статусе изображение товара

Берите этот поток, когда в статусе изображение товара, а не обратный отсчёт до старта дропа.

Статус WhatsApp на телефоне с изображением товара и скидкой, которую можно открыть до полуночи.
Опыт клиента

Зритель открывает скидку из статуса

До автоматизации ссылку на скидку пересылают в чаты и открывают без статуса, а сотрудники забывают погасить её в полночь.

После потока тот, кто видит статус, может открыть скидку, которая действует только из этого статуса и заканчивается в полночь. Интеграторы собирают этот результат на WhatsApp API.

Поток

От старта окна к одной публикации

1

Окно скидки открылось

Ваш бэкенд открывает суточное окно, собирает URL только для статуса и ставит ссылке отсечку в полночь.

2

Опубликуйте изображение товара

POST /stories/send/media

createStoryMedia публикует это изображение в статус номера магазина. Скрытый URL и полночь остаются в вашем бэкенде.

Подготовка

Перед запуском потока

Подключите номер WhatsApp магазина, с которого уходит статус, и подписывайте каждый запрос токеном этого номера. Окно скидки, скрытый URL и полночь остаются в вашем бэкенде.

Дополнительно: глубже по этому потоку

Реализация API

Опубликуйте изображение товара

В бэкенде уже есть изображение товара и ссылка, которая действует только из этого статуса. Этот шаг публикует изображение с номера магазина, когда открывается суточное окно.

Получите API-токен бесплатно после регистрации на whapi.cloud и подставьте его в код вместо Your_Token из примеров.

Опубликуйте изображение товара

Опубликуйте изображение в статус магазина, чтобы зритель открыл скидку, которую бэкенд принимает только из этого статуса до полуночи.

curl --request POST \
     --url https://gate.whapi.cloud/stories/send/media \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token' \
     --header 'content-type: application/json' \
     --data '
{
  "media": "https://example.com/product.jpg"
}
'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/stories/send/media",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"media\":\"https://example.com/product.jpg\"}",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer Your_Token",
    "content-type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
import requests

url = "https://gate.whapi.cloud/stories/send/media"

payload = {
  "media": "https://example.com/product.jpg"
}
headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token",
    "content-type": "application/json",
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const url = 'https://gate.whapi.cloud/stories/send/media';

const response = await fetch(url, {
  method: 'POST',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer Your_Token',
    'content-type': 'application/json',
  },
  body: JSON.stringify({
    media: 'https://example.com/product.jpg',
  }),
});

console.log(await response.text());
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"media\":\"https://example.com/product.jpg\"}");
Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/stories/send/media")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer Your_Token")
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("https://gate.whapi.cloud/stories/send/media");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
request.AddHeader("content-type", "application/json");
request.AddStringBody("{\"media\":\"https://example.com/product.jpg\"}", DataFormat.Json);
var response = await client.PostAsync(request);

Console.WriteLine("{0}", response.Content);
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	body := strings.NewReader(`{"media":"https://example.com/product.jpg"}`)
	req, _ := http.NewRequest("POST", "https://gate.whapi.cloud/stories/send/media", body)
	req.Header.Set("accept", "application/json")
	req.Header.Set("authorization", "Bearer Your_Token")
	req.Header.Set("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}
Когда что-то ломается

Разберите сбой на каждом шаге

Окно скидки может открыться, а статус не опубликоваться, и зритель не увидит ссылку. Разберите этот обрыв до того, как считать акцию живой.

Окно открылось, а статус не вышел?

Канал может быть без авторизации, медиа отклонено или файл слишком большой. Повторите публикацию или отправьте алерт и не считайте акцию живой. Клиенты часто отмечают, что поддержка отвечает. Напишите, если нужна помощь.

Напишите в поддержку, если что-то пошло не так

Разбор по шагу API

Код Что это значит Что делать
400 Wrong request parameters
401 Need channel authorization for posting stories
402 Trial version limit exceeded
403 It is forbidden to send to this group/recipient
404 Media with specified id not found
413 Request media too large
415 Unsupported media type
429 Too many requests
500 Internal Error
FAQ

Вопросы операторов

Ваш бэкенд собирает скрытый URL и принимает его только из этого статуса. Whapi.Cloud публикует изображение товара. Сервис не проверяет, откуда открыли ссылку.
Ваш бэкенд гасит ссылку скидки в полночь. Статус остаётся доступным до 24 часов после публикации. Этот поток не удаляет статус в полночь.
Окно может открыться, а публикация упасть: нет авторизации канала, медиа отклонено или файл слишком большой. Повторите публикацию или отправьте алерт и не считайте акцию живой.
Этот поток публикует изображение товара для скидки, которая заканчивается в полночь. Обратный отсчёт до старта дропа — другой поток.
У кого уже есть номер магазина, тот видит статус с этого номера, включая изображение товара, без отдельного чата каждому контакту.
Поддерживаемые функции WhatsApp

Всё, что нужно для создания автоматизации WhatsApp

Whapi.Cloud предоставляет доступ к полному набору функций WhatsApp — сообщениям, медиа, группам, каналам, вебхукам и не только. Создавайте ботов, автоматизации и интеграции без функциональных ограничений.

Выбор разработчиков

Нам доверяют 3 300+ разработчиков и SaaS-команд

Разработчики по всему миру используют Whapi.Cloud для создания автоматизаций, ботов, CRM-интеграций, массовых рассылок и продвинутых WhatsApp-воркфлоу. Наша инфраструктура обрабатывает миллионы API-запросов с высокой стабильностью — и этот показатель растёт каждый месяц.

Иконка функции

5,5K+

активных API-каналов

Иконка функции

21M+

API-запросов в месяц

«Всё просто, интуитивно и легко. Документация понятная, и вся нужная информация всегда под рукой. Отличная работа.»

Roberto K. / Web-разработчик

«Мы подключили WhatsApp к нашим процессам через n8n всего за несколько минут. Без кода, без сложностей — всё заработало с первого раза.»

Martin P. / Разработчик

«Whapi.Cloud стал важной частью нашей коммуникации с клиентами. Мы автоматизировали обновления по продуктам, уведомления о заказах и поддержку — без шаблонов и модерации.»

Oscar T. / CTO

Декоративный пузырь