Wysylanie wiadomosci
Wszystkie wiadomosci sa wysylane przez jeden endpoint. Poletype okresla rodzaj wysylanej wiadomosci, a pozostale pola zmieniaja sie odpowiednio.
Endpoint:
POST https://api.wappfy.io/api/instances/{instanceId}/messages/send
| Naglowek | Wartosc |
|---|---|
X-Api-Key | Twoj klucz API |
Content-Type | application/json |
Wiadomosc tekstowa
Wyslij zwykla wiadomosc tekstowa.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "text",
"text": "Hello from Wappfy!"
}'
const response = await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "text",
text: "Hello from Wappfy!",
}),
}
);
const result = await response.json();
console.log(result.data.message_id);
{
"data": {
"message_id": "BAE5F2C4D3B2A1",
"status": "sent"
}
}
Wiadomosc z obrazem
Wyslij obraz z opcjonalnym podpisem.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "image",
"media_url": "https://example.com/photo.jpg",
"caption": "Check out this photo!"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "image",
media_url: "https://example.com/photo.jpg",
caption: "Check out this photo!",
}),
}
);
Wiadomosc wideo
Wyslij plik wideo z opcjonalnym podpisem.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "video",
"media_url": "https://example.com/clip.mp4",
"caption": "Watch this!"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "video",
media_url: "https://example.com/clip.mp4",
caption: "Watch this!",
}),
}
);
Wiadomosc audio
Wyslij plik audio. Wiadomosci audio pojawiaja sie jako wiadomosci glosowe w WhatsApp.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "audio",
"media_url": "https://example.com/voice-note.ogg"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "audio",
media_url: "https://example.com/voice-note.ogg",
}),
}
);
Dla najlepszej kompatybilnosci uzywaj plikow
.ogg zakodowanych kodekiem Opus do wiadomosci glosowych.Wiadomosc z dokumentem
Wyslij plik jako zalacznik dokumentu.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "document",
"media_url": "https://example.com/report.pdf",
"filename": "Q1-Report.pdf",
"caption": "Here is the quarterly report"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "document",
media_url: "https://example.com/report.pdf",
filename: "Q1-Report.pdf",
caption: "Here is the quarterly report",
}),
}
);
Wiadomosc z lokalizacja
Wyslij pinezke z lokalizacja geograficzna.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "location",
"latitude": -23.5505,
"longitude": -46.6333,
"name": "Sao Paulo",
"address": "Sao Paulo, SP, Brazil"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "location",
latitude: -23.5505,
longitude: -46.6333,
name: "Sao Paulo",
address: "Sao Paulo, SP, Brazil",
}),
}
);
Ankieta
Utworz interaktywna ankiete. Odbiorcy moga glosowac na opcje bezposrednio w WhatsApp.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "poll",
"poll_name": "What day works best for the meeting?",
"poll_options": ["Monday", "Wednesday", "Friday"],
"poll_allow_multiple": false
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "poll",
poll_name: "What day works best for the meeting?",
poll_options: ["Monday", "Wednesday", "Friday"],
poll_allow_multiple: false,
}),
}
);
Kontakt / vCard
Udostepnij wizytowke kontaktu.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "contact",
"contact_name": "Maria Silva",
"contact_phone": "+5511988887777"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "contact",
contact_name: "Maria Silva",
contact_phone: "+5511988887777",
}),
}
);
Przekazanie wiadomosci
Przekaz istniejaca wiadomosc do innego czatu.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511888887777@s.whatsapp.net",
"type": "forward",
"forward_message_id": "BAE5F2C4D3B2A1",
"forward_chat_id": "5511999998888@s.whatsapp.net"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511888887777@s.whatsapp.net",
type: "forward",
forward_message_id: "BAE5F2C4D3B2A1",
forward_chat_id: "5511999998888@s.whatsapp.net",
}),
}
);
Reakcja
Zareaguj na wiadomosc za pomoca emoji.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "reaction",
"reaction_message_id": "BAE5F2C4D3B2A1",
"reaction": "\ud83d\udc4d"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "reaction",
reaction_message_id: "BAE5F2C4D3B2A1",
reaction: "\ud83d\udc4d",
}),
}
);
Aby usunac reakcje, wyslij pusty ciag znakow jako wartosc
reaction.Funkcje zaawansowane
Odpowiedz na wiadomosc
Cytuj poprzednia wiadomosc, dolaczajacquoted_message_id. Dziala z kazdym typem wiadomosci.
curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "text",
"text": "Yes, I agree with this!",
"quoted_message_id": "BAE5F2C4D3B2A1"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "text",
text: "Yes, I agree with this!",
quoted_message_id: "BAE5F2C4D3B2A1",
}),
}
);
Edycja wyslanej wiadomosci
Edytuj wczesniej wyslana wiadomosc, podajacedit_message_id.
curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "5511999998888@s.whatsapp.net",
"type": "text",
"text": "Updated message content",
"edit_message_id": "BAE5F2C4D3B2A1"
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "5511999998888@s.whatsapp.net",
type: "text",
text: "Updated message content",
edit_message_id: "BAE5F2C4D3B2A1",
}),
}
);
Mozna edytowac tylko wiadomosci, ktore sam wyslales. Edycja ma ograniczenie czasowe narzucone przez WhatsApp (okolo 15 minut od wyslania).
Wzmianki
Oznacz konkretne kontakty w wiadomosci grupowej. Oznaczone kontakty otrzymaja powiadomienie.curl -X POST https://api.wappfy.io/api/instances/inst_abc123/messages/send \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "120363012345678901@g.us",
"type": "text",
"text": "Hey @Maria and @Carlos, please review this.",
"mentions": [
"5511999998888@s.whatsapp.net",
"5511888887777@s.whatsapp.net"
]
}'
await fetch(
"https://api.wappfy.io/api/instances/inst_abc123/messages/send",
{
method: "POST",
headers: {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
chat_id: "120363012345678901@g.us",
type: "text",
text: "Hey @Maria and @Carlos, please review this.",
mentions: [
"5511999998888@s.whatsapp.net",
"5511888887777@s.whatsapp.net",
],
}),
}
);
Formaty chat ID
| Format | Opis | Przyklad |
|---|---|---|
{phone}@s.whatsapp.net | Czat indywidualny | 5511999998888@s.whatsapp.net |
{id}@g.us | Czat grupowy | 120363012345678901@g.us |
Brazylijskie numery telefonow
Wappfy automatycznie obsluguje problem brazylijskiej 9. cyfry. Jesli wiadomosc nie powiedzie sie z bledem “no LID found”, system automatycznie ponowi probe z alternatywnym formatem (dodajac lub usuwajac 9. cyfre).Na przyklad, jesli
5511999998888 nie powiedzie sie, ponowi probe z 551199998888 i odwrotnie. Dzieje sie to transparentnie — nie musisz tego obslugiowac samodzielnie.Informacje o typach wiadomosci
| Typ | Wymagane pola | Opcjonalne pola |
|---|---|---|
text | text | quoted_message_id, edit_message_id, mentions |
image | media_url | caption, quoted_message_id |
video | media_url | caption, quoted_message_id |
audio | media_url | quoted_message_id |
document | media_url | filename, caption, quoted_message_id |
location | latitude, longitude | name, address, quoted_message_id |
poll | poll_name, poll_options | poll_allow_multiple |
contact | contact_name, contact_phone | quoted_message_id |
forward | forward_message_id, forward_chat_id | — |
reaction | reaction_message_id, reaction | — |
Obsluga bledow
| Kod statusu | Opis |
|---|---|
400 | Nieprawidlowe dane wiadomosci (np. brak wymaganych pol dla danego typu). |
404 | Instancja nie znaleziona lub nie polaczona. |
422 | Walidacja wiadomosci nie powiodla sie (np. nieprawidlowy format numeru telefonu). |
429 | Przekroczono limit zapytan. Zobacz Limity zapytan. |
502 | Dostawca WhatsApp zwrocil blad. Sprawdz komunikat bledu po szczegoly. |