Wow! Redução de 65% no preço para clientes brasileiros! Registre-se agora
WhatsApp API

Um desconto de um dia em um status do WhatsApp até a meia-noite

Quem vê o status da loja pode abrir um desconto que só vale a partir desse status e acaba à meia-noite. Quando essa janela de um dia começa, seu backend publica a imagem do produto pela Whapi.Cloud. Este caso de uso mostra aos integradores como implementar esse fluxo com a WhatsApp API.

Seu backend guarda a URL oculta Uma publicação de mídia no número da loja
Um telefone da loja com um status do WhatsApp: imagem do produto e desconto de um dia que termina à meia-noite.
Balão decorativo
Caso de uso

Quando usar este fluxo

O desconto acaba à meia-noite

Use este fluxo quando a oferta dura um dia e seu backend expira o link à meia-noite.

O link só vale a partir do status

Use este fluxo quando o link só funciona a partir deste status e um chat encaminhado não deve resgatar a oferta.

O status é uma imagem do produto

Use este fluxo quando o status leva uma imagem do produto, não uma contagem regressiva até o início de um drop.

Status do WhatsApp em um telefone com a imagem do produto e um desconto que dá para abrir antes da meia-noite.
Experiência do cliente

Quem vê abre o desconto pelo status

Antes da automação, o link do desconto é encaminhado nos chats e aberto sem o status, e a equipe esquece de expirar à meia-noite.

Depois que o fluxo roda, quem vê o status pode abrir um desconto que só vale a partir desse status e acaba à meia-noite. Integradores constroem esse resultado com a WhatsApp API.

Fluxo

Do início da janela a uma publicação

1

A janela do desconto começa

Seu backend abre a janela de um dia, monta a URL só para o status e faz esse link expirar à meia-noite.

2

Publique a imagem do produto

POST /stories/send/media

createStoryMedia publica essa imagem no status do número da loja. A URL oculta e o corte da meia-noite ficam no seu backend.

Pré-requisitos

Antes de rodar o fluxo

Conecte o número de WhatsApp da loja que publica o status e autentique cada pedido com o token desse número. A janela, a URL oculta e a expiração à meia-noite ficam no seu backend.

Opcional: aprofunde este fluxo

Implementação da API

Publique a imagem do produto

Seu backend já tem a imagem do produto e o link que só vale a partir deste status. Este passo publica essa imagem no número da loja quando a janela de um dia começa.

Obtenha seu token de API grátis depois de se registrar no whapi.cloud e use esse token no código no lugar de Your_Token dos exemplos.

Publique a imagem do produto

Publique a imagem no status da loja para quem vê abrir o desconto que seu backend aceita só a partir desse status até a meia-noite.

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))
}
Quando algo quebra

Trate falhas em cada passo

A janela do desconto pode começar e o status não ser publicado, então ninguém vê o link. Trate esse corte antes de contar a oferta como ativa.

A janela começou e o status não publicou?

O canal pode estar sem autorização, a mídia rejeitada ou o arquivo grande demais. Tente de novo ou avise a equipe, e não conte a oferta como ativa. Clientes costumam dizer que nosso suporte responde. Peça ajuda.

Fale com o suporte se algo deu errado

Diagnóstico por passo da API

Status O que significa O que fazer
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

Perguntas de quem opera

Seu backend monta a URL oculta e a aceita só a partir deste status. A Whapi.Cloud publica a imagem do produto. Ela não verifica de onde o link foi aberto.
Seu backend expira o link do desconto à meia-noite. Um status continua disponível por até 24 horas depois de publicado. Este fluxo não apaga o status à meia-noite.
A janela pode começar e a publicação falhar porque o canal não está autorizado, a mídia foi rejeitada ou o arquivo é grande demais. Tente de novo ou avise a equipe, e não conte a oferta como ativa.
Este fluxo publica uma imagem de produto para um desconto que acaba à meia-noite. Uma contagem que diz quando um drop começa é outro fluxo.
Quem já tem o número da loja pode ver um status desse número, inclusive uma imagem de produto, sem um chat separado para cada contato.
Recursos compatíveis do WhatsApp

Tudo o que você precisa para criar automações no WhatsApp

O Whapi.Cloud oferece acesso a um conjunto completo de recursos do WhatsApp — mensagens, mídia, grupos, canais, webhooks e muito mais. Crie bots, automações e integrações sem limitações de funcionalidades.

Escolhido por desenvolvedores

Confiado por mais de 3.300 desenvolvedores e equipes SaaS

Desenvolvedores no mundo inteiro utilizam o Whapi.Cloud para criar automações, bots, integrações com CRM, ferramentas de envio em massa e fluxos avançados de WhatsApp. Nossa infraestrutura processa milhões de requisições API com alta estabilidade — e esse número cresce a cada mês.

Ícone de recurso

5,5K+

canais de API ativos

Ícone de recurso

21M+

requisições API por mês

“Tudo é simples, intuitivo e fácil de navegar. A documentação é clara e todas as informações estão bem à mão. Trabalho excelente.”

Roberto K. / Desenvolvedor Web

“Conectamos o WhatsApp aos nossos fluxos usando o n8n em apenas alguns minutos. Sem código, sem complicações — funcionou de primeira.”

Martin P. / Desenvolvedor

“O Whapi.Cloud se tornou uma parte essencial da nossa comunicação com clientes. Automatizamos atualizações de produtos, notificações de pedidos e mensagens de suporte — tudo sem templates nem aprovações da Meta.”

Oscar T. / CTO

Balão decorativo