Zum Hauptinhalt springen

Kontakte

Die Kontakte-API ermoeglicht es Ihnen, Telefonnummern auf WhatsApp zu verifizieren, Kontaktinformationen abzurufen und Profilbilder zu laden. Dies ist besonders nuetzlich, um Nummern vor dem Senden von Nachrichten zu validieren und Ihre Kontaktdaten anzureichern. Alle Kontakt-Endpunkte beziehen sich auf eine bestimmte Instanz:
/api/instances/{instanceId}/contacts/...

Pruefen, ob eine Nummer existiert

Ueberpruefen Sie, ob eine Telefonnummer auf WhatsApp registriert ist, bevor Sie eine Nachricht senden. Dies verhindert fehlgeschlagene Zustellungen und unnoetige API-Aufrufe.
curl "https://api.wappfy.io/api/instances/inst_abc123/contacts/check?phone=5511999998888" \
  -H "X-Api-Key: YOUR_API_KEY"
Antwort (Nummer existiert):
{
  "data": {
    "exists": true,
    "phone": "5511999998888",
    "chat_id": "[email protected]"
  }
}
Antwort (Nummer existiert nicht):
{
  "data": {
    "exists": false,
    "phone": "5511999998888",
    "chat_id": null
  }
}
Verwenden Sie diesen Endpunkt, um Nummern vor dem Senden von Nachrichten zu validieren. Das spart Nachrichtenkontingent und verhindert message.failed-Webhook-Ereignisse.

Alle Kontakte abrufen

Rufen Sie die vollstaendige Kontaktliste des verbundenen WhatsApp-Kontos ab.
curl https://api.wappfy.io/api/instances/inst_abc123/contacts \
  -H "X-Api-Key: YOUR_API_KEY"
Antwort:
{
  "data": [
    {
      "id": "[email protected]",
      "name": "Maria Silva",
      "short_name": "Maria",
      "push_name": "Mari",
      "is_business": false
    },
    {
      "id": "[email protected]",
      "name": "Carlos Oliveira",
      "short_name": "Carlos",
      "push_name": "Carlos",
      "is_business": true
    }
  ]
}

Kontaktfelder

FeldBeschreibung
idDie WhatsApp-ID des Kontakts (Telefonnummer + @s.whatsapp.net).
nameKontaktname wie im Adressbuch des Telefons gespeichert. Kann null sein, wenn nicht gespeichert.
short_nameKurzname aus dem Adressbuch.
push_nameDer Name, den der Kontakt fuer sich selbst auf WhatsApp festgelegt hat.
is_businessOb es sich um ein WhatsApp-Business-Konto handelt.
Das Feld name stammt aus dem Adressbuch Ihres Telefons. Wenn der Kontakt nicht gespeichert ist, ist nur push_name (vom Kontakt selbst festgelegt) verfuegbar.

Kontaktinformationen abrufen

Rufen Sie detaillierte Informationen zu einem bestimmten Kontakt ab.
curl "https://api.wappfy.io/api/instances/inst_abc123/contacts/[email protected]" \
  -H "X-Api-Key: YOUR_API_KEY"
Antwort:
{
  "data": {
    "id": "[email protected]",
    "name": "Maria Silva",
    "short_name": "Maria",
    "push_name": "Mari",
    "is_business": false
  }
}

Profilbild abrufen

Rufen Sie die WhatsApp-Profilbild-URL eines Kontakts ab.
curl "https://api.wappfy.io/api/instances/inst_abc123/contacts/[email protected]/profile-picture" \
  -H "X-Api-Key: YOUR_API_KEY"
Antwort:
{
  "data": {
    "profile_picture_url": "https://pps.whatsapp.net/v/t61.24694-24/..."
  }
}
Profilbild-URLs sind temporaer und laufen nach einiger Zeit ab. Speichern Sie sie nicht dauerhaft — rufen Sie bei Bedarf eine aktuelle URL ab.
Wenn der Kontakt kein Profilbild hat oder die Sichtbarkeit in seinen Datenschutzeinstellungen eingeschraenkt hat, ist profile_picture_url null:
{
  "data": {
    "profile_picture_url": null
  }
}

Haeufige Muster

Vor dem Senden validieren

Pruefen Sie immer, ob eine Nummer auf WhatsApp existiert, bevor Sie eine Nachricht senden, um unnoetige Fehler zu vermeiden:
async function sendMessageSafely(instanceId, phone, text) {
  // Step 1: Check if the number is on WhatsApp
  const checkResponse = await fetch(
    `https://api.wappfy.io/api/instances/${instanceId}/contacts/check?phone=${phone}`,
    { headers: { "X-Api-Key": "YOUR_API_KEY" } }
  );
  const { data: checkResult } = await checkResponse.json();

  if (!checkResult.exists) {
    console.log(`${phone} is not on WhatsApp, skipping`);
    return null;
  }

  // Step 2: Send the message using the confirmed chat_id
  const sendResponse = await fetch(
    `https://api.wappfy.io/api/instances/${instanceId}/messages/send`,
    {
      method: "POST",
      headers: {
        "X-Api-Key": "YOUR_API_KEY",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        chat_id: checkResult.chat_id,
        type: "text",
        text,
      }),
    }
  );

  return sendResponse.json();
}

Kontaktverzeichnis erstellen

Rufen Sie alle Kontakte ab und reichern Sie sie mit Profilbildern an:
async function buildContactDirectory(instanceId) {
  // Get all contacts
  const contactsRes = await fetch(
    `https://api.wappfy.io/api/instances/${instanceId}/contacts`,
    { headers: { "X-Api-Key": "YOUR_API_KEY" } }
  );
  const { data: contacts } = await contactsRes.json();

  // Enrich with profile pictures (batch with delay to avoid rate limits)
  const enriched = [];
  for (const contact of contacts) {
    const picRes = await fetch(
      `https://api.wappfy.io/api/instances/${instanceId}/contacts/${contact.id}/profile-picture`,
      { headers: { "X-Api-Key": "YOUR_API_KEY" } }
    );
    const { data: pic } = await picRes.json();

    enriched.push({
      ...contact,
      profile_picture_url: pic.profile_picture_url,
    });

    // Small delay to respect rate limits
    await new Promise((r) => setTimeout(r, 200));
  }

  return enriched;
}
Wenn Sie Profilbilder fuer viele Kontakte abrufen, fuegen Sie eine Verzoegerung zwischen den Anfragen hinzu, um innerhalb der Ratenlimits zu bleiben. Das obige Beispiel verwendet eine Verzoegerung von 200ms.

Endpunkt-Referenz

MethodeEndpunktBeschreibung
GET/api/instances/{id}/contactsAlle Kontakte auflisten
GET/api/instances/{id}/contacts/check?phone={phone}Pruefen, ob eine Nummer auf WhatsApp existiert
GET/api/instances/{id}/contacts/{contactId}Kontaktinformationen abrufen
GET/api/instances/{id}/contacts/{contactId}/profile-pictureProfilbild abrufen

Fehlerbehandlung

StatuscodeBeschreibung
400Ungueltiges Telefonnummernformat. Verwenden Sie nur Ziffern mit Laendervorwahl (z.B. 5511999998888).
404Instanz nicht gefunden oder Kontakt nicht gefunden.
429Ratenlimit ueberschritten. Siehe Ratenlimits.