---
title: "Poll a monitor's events (free)"
method: GET
path: "/api/monitors/{id}/events"
tags: ["Monitors"]
---

# Poll a monitor's events (free)

`GET /api/monitors/{id}/events`

## Request

- Base URL: `https://twitr.sh`
- URL: `https://twitr.sh/api/monitors/{id}/events`
- Auth: API key in header `SIGN-IN-WITH-X`

Events captured by this monitor, oldest→newest. Pass the last event id you processed as `after` to receive only newer events. Bounded retention (500 events / 24h per monitor) — register a webhook for guaranteed delivery. Rate limit: 60 reads/minute per wallet.

## Path parameters

- `id` string, required

## Query parameters

- `limit` integer
- `after` string
- `type` 'tweet.new' | 'tweet.reply' | 'tweet.retweet' | 'tweet.quote' | 'tweet.media' | 'tweet.link' | 'tweet.poll' | 'tweet.mention' | 'tweet.hashtag' | 'tweet.longform' | 'profile.avatar.changed' | 'profile.banner.changed' | 'profile.name.changed' | 'profile.username.changed' | 'profile.bio.changed' | 'profile.location.changed' | 'profile.url.changed' | 'profile.verified.changed' | 'profile.protected.changed' | 'profile.pinned_tweet.changed' | 'profile.unavailable.changed' | 'monitor.expired' | 'monitor.deleted'

## Response `200`

Event page.

- object
  - `monitor_id` string, required
  - `events` object[], required
    - `id` string, required
    - `type` string, required
    - `occurred_at` string, required
    - `received_at` string
    - `source` object
    - `data` object, required
  - `next_cursor` string
  - `has_more` boolean, required
  - `retention` object

## Other responses

- `402`: Identity Required — sign SIWX and retry.
- `403`: Signing wallet doesn't own this monitor.
- `429`: Polling too fast — includes Retry-After.

---

[API](https://skmtc.dev/twitr/apis/twitr-sh.md) · [All operations](https://skmtc.dev/twitr/apis/twitr-sh/llms.txt) · [OpenAPI document](https://skmtc.dev/twitr/apis/twitr-sh/revisions/f6390fcee344?raw)
