---
title: "Poll for messages"
method: GET
path: "/v4/whatsapp/messages"
tags: ["WhatsApp V4"]
---

# Poll for messages

`GET /v4/whatsapp/messages`

## Request

- Base URL: `https://developer.meetergo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.meetergo.com/v4/whatsapp/messages`
- Auth: one of:
  - API key in header `x-meetergo-api-user-id`
  - HTTP bearer
  - HTTP bearer

Forward feed of messages created after `since`, oldest first. A fallback for callers that cannot host a webhook. Track the returned `nextSince` and pass it back to advance. Defaults to inbound only. `since` is millisecond-granular; for guaranteed no-skip delivery prefer the `whatsapp_message_received` webhook.

## Query parameters

- `since` string, required
- `limit` number
- `direction` 'inbound' | 'outbound' | 'all'

## Response `200`

- WhatsappMessageFeedResource
  - `data` WhatsappMessageResource[], required: Messages created after `since`, oldest first.
    - `id` string, required: meetergo message id.
    - `conversationId` string, required: Conversation this message belongs to.
    - `waMessageId` string, required: WhatsApp's own message id (wamid).
    - `direction` 'inbound' | 'outbound', required
    - `type` string, required: Message kind (text, image, document, template, ...).
    - `status` 'pending' | 'sent' | 'delivered' | 'read' | 'failed', required: Delivery status. Inbound messages are always `delivered`.
    - `text` string: Text body, or the caption for a media message.
    - `mediaUrl` string: URL of the attached media, if any.
    - `mediaMimeType` string: MIME type of the attached media.
    - `mediaFilename` string: Filename of the attached document.
    - `templateName` string: Template name, for template messages.
    - `errorMessage` string: Failure reason from WhatsApp, set when `status` is `failed`.
    - `createdAt` string, date-time, required: When the message was created (ISO 8601).
  - `nextSince` string: Pass back as `since` to fetch the next batch. Present only when the page was full (more may be waiting).

## Other responses

- `400`: The request did not validate. `message` lists the constraints that failed.
- `401`: Missing, malformed, or expired credentials.
- `403`: Authenticated, but not allowed: the plan does not include this feature, or the token is scoped away from it.
- `429`: Rate limited. Back off and retry.

---

[API](https://skmtc.dev/meetergo/apis/meetergo-platform-api.md) · [All operations](https://skmtc.dev/meetergo/apis/meetergo-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meetergo/apis/meetergo-platform-api/revisions/b5d66cd8be67?raw)
