# List taps

Source: https://straitlink.in/docs/api/list-taps/

`GET /v1/taps`

Auth: secret key as Authorization: Bearer. Server-side only.

Every tap (one row per person tapping a link), oldest first, as cursor pages: `{ taps, nextCursor }`; pass `nextCursor` back as `cursor` until it is null. Each tap carries where it was sent, its channel and campaign, and its first app open and install. The same rows as GET /v1/export?part=taps, for syncing into your own tools. Link-preview bots are not taps. Secret key with `read` or `full` access; 30 reads a minute per workspace, shared with GET /v1/events.

| Parameter | In | Type | Notes |
|---|---|---|---|
| `limit` | query | `integer` | 1–100, default 50 |
| `cursor` | query | `string` | `nextCursor` from the previous page |
| `from` | query | `string` | Inclusive start: ISO date (UTC), ISO date-time or epoch ms |
| `to` | query | `string` | Exclusive end, same formats |
| `link` | query | `string` | Only this active link's taps (its slug) |

```bash
curl -X GET https://strait.link/v1/taps \
  -H "Authorization: Bearer $SECRET_KEY"
```

Response 200:

```json
{
  "taps": [
    {
      "clickId": "9a1c7e52-4b3d-4f8e-a1c2-7d6e5f4a3b21",
      "clickedAt": "2026-10-01T10:00:00.000Z",
      "linkId": "lnk_5f0c2a8e-3b1d-4f6a-9c7e-2d8b1a0e4f63",
      "slug": "summer",
      "source": "web",
      "platform": "android",
      "deviceClass": "phone",
      "osMajor": 15,
      "inAppBrowser": null,
      "channel": "whatsapp",
      "sentTo": "app_or_store",
      "campaign": "diwali",
      "variant": null,
      "billable": true,
      "opens": 1,
      "openedAt": "2026-10-01T10:00:04.000Z",
      "openKind": "direct",
      "openRoute": "app_link",
      "appState": "closed",
      "isNewUser": false,
      "installedAt": null,
      "installMatched": null,
      "matchMethod": null
    }
  ],
  "nextCursor": "WyIyMDI2LTEwLTAxVDEwOjAwOjAwLjAwMDAwMCswMDowMCIsIjlhMWM3ZTUyIl0"
}
```

- `200`: A page of taps
- `400`: Bad limit, cursor, from / to or link
- `401`: Missing or invalid secret key, or a publishable key
- `403`: The key is limited to links
- `404`: No active link with that slug
- `429`: Over 30 reads a minute for this workspace (Retry-After)
