Maytapi/Documentação/Guia de Java
Guia de JavaCerca de 10 minutosComo enviar uma mensagem no WhatsApp com Java
Envie mensagens de texto e mídia pelo Java com uma única requisição HTTP e receba as respostas no seu próprio webhook. REST e JSON puros — sem SDK, sem aprovação de templates.
Última atualização:
- Java
- REST + JSON
- sem SDK
- respostas via webhook
// Java 15+ (java.net.http, text blocks)
import java.net.URI;
import java.net.http.*;
String pid = "your-pid";
String phoneId = "your-phone-id";
String token = "your-token";
String body = """
{"to_number": "55119xxxxxx67", "type": "text", "message": "Hello from Java!"}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.maytapi.com/api/" + pid + "/" + phoneId + "/sendMessage"))
.header("x-maytapi-key", token)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());O que você precisa
Quatro coisas, todas disponíveis no console em poucos minutos.
-
conta
Uma conta Maytapi
Cadastre-se e comece o teste grátis — sem cartão.
-
telefone
Um número pareado
Escaneie o QR code com o WhatsApp do seu celular. Seu número continua funcionando normalmente.
-
token
pid e token
Copie da página de token do console; o phone_id aparece ao lado do seu número.
-
Java
Um ambiente Java
Basta uma versão recente do Java e seu cliente HTTP padrão.
Envie uma mensagem de texto com Java
Faça um POST com corpo JSON para /sendMessage com o token no cabeçalho x-maytapi-key. A mensagem entra na fila do seu celular e a resposta volta na hora.
- ✓to_number em formato internacional, ex.: 55119xxxxxx67
- ✓type: text e o texto da mensagem
- ✓A resposta traz o id da mensagem
curl -X POST "https://api.maytapi.com/api/$PID/$PHONE_ID/sendMessage" \
-H "x-maytapi-key: $TOKEN" \
-H "Content-Type: application/json" \
-d '{"to_number": "55119xxxxxx67", "type": "text", "message": "Hello from Java!"}'{
"success": true,
"data": {
"chatId": "55119xxxxxx67@c.us",
"msgId": "3EB065B353B9493D00C9"
}
}Envie imagem, vídeo ou documento
Use o mesmo endpoint com type media e uma URL pública ou um data URI em base64. Adicione legenda e nome de arquivo opcionais.
- ✓Imagens, vídeo, áudio, PDF e outros documentos
- ✓Legenda no campo text
- ✓Data URIs em base64 funcionam como URLs
String body = """
{
"to_number": "55119xxxxxx67",
"type": "media",
"message": "https://example.com/invoice-10482.pdf",
"text": "Your invoice for order #10482",
"filename": "invoice-10482.pdf"
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.maytapi.com/api/" + pid + "/" + phoneId + "/sendMessage"))
.header("x-maytapi-key", token)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());Receba respostas com um webhook em Java
Registre a URL do webhook uma vez. Mensagens recebidas e confirmações de entrega e leitura chegam em JSON; responda pela URL reply de cada evento.
- ✓Retorne 200 rápido e depois processe o evento
- ✓Ignore suas próprias mensagens com fromMe
- ✓Use event.reply para responder no mesmo chat
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.maytapi.com/api/" + pid + "/setWebhook"))
.header("x-maytapi-key", token)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{\"webhook\": \"https://example.com/maytapi/webhook\"}"))
.build();
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());@RestController
public class WebhookController {
private final RestClient client = RestClient.create();
@PostMapping("/maytapi/webhook")
public ResponseEntity<Void> webhook(@RequestBody Map<String, Object> event) {
Map<String, Object> message = (Map<String, Object>) event.get("message");
if ("message".equals(event.get("type")) && !Boolean.TRUE.equals(message.get("fromMe"))) {
client.post()
.uri((String) event.get("reply"))
.header("x-maytapi-key", token)
.contentType(MediaType.APPLICATION_JSON)
.body(Map.of(
"to_number", event.get("conversation"),
"type", "text",
"message", "Thanks! We received your message."))
.retrieve()
.toBodilessEntity();
}
return ResponseEntity.ok().build();
}
}FAQ da WhatsApp API com Java
Pergunte o que quiser ao nosso suporte pelo WhatsApp. O tempo médio de resposta é inferior a 24 horas.
Central de ajuda →Existe um SDK oficial para Java?
Não é necessário. A API é REST com JSON, então o cliente HTTP padrão do Java basta, como mostram os exemplos desta página.
Posso enviar mensagens para grupos com Java?
Sim. Use o id do grupo (termina em @g.us) como to_number; os endpoints de grupos estão disponíveis em todos os planos.
Por que minha mensagem não chegou?
Verifique se o status do telefone está ativo e confira a fila e os logs no console. Números novos devem ser aquecidos antes de envios em volume.
Mais recursos da WhatsApp API

Pegue sua chave e envie a primeira mensagem em dez minutos
Sem aprovação, sem templates, sem cartão. Todos os endpoints liberados por três dias.