# Webhook logs

`GET /service/@id/tinopay/webhook-logs` · TinoPay, service owner's sign-in token

Every webhook delivery: the request sent, the HTTP status received (`status_code`), `success`, the response. Filter by `webhook_id`, `transaction_id`, `status` (`success`, `failed`); paginated.

## HTTP request

| Item | Value |
| --- | --- |
| URL | `https://api.tino.vn/service/@id/tinopay/webhook-logs` |
| Method | `GET` |
| Authentication | the TinoPay service owner's sign-in token (`Authorization: Bearer <token>`); the `/v1` gateway does not expose TinoPay yet |
| Content-Type | — (no body) |

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | int | yes | TinoPay service ID |
| `webhook_id` | query | int | — | — |
| `transaction_id` | query | int | — | — |
| `status` | query | string | — | success \| failed |
| `page` | query | int | — | — |
| `per_page` | query | int | — | — |

## Example request

```bash
curl "https://api.tino.vn/service/100001/tinopay/webhook-logs" \
  -H "Authorization: Bearer $TINO_TOKEN"
```

`$TINO_TOKEN` is the TinoPay service owner's sign-in token. Path parameters in the example are sample values.

SDK ([SDK & examples](/en/docs/sdk)): no dedicated function yet, use `client.request("GET", "/service/@id/tinopay/webhook-logs")`.

## Example response

```json
{
 "data": [
  {
   "id": 3301,
   "webhook_id": 12,
   "transaction_id": 98213,
   "method": "POST",
   "request_url": "https://example.com/tinopay/hook",
   "request": {
    "transaction_id": "20261020083338000006",
    "transferAmount": 150000,
    "virtualAccount": "9624QA01"
   },
   "status_code": 500,
   "success": false,
   "response": "…",
   "created_at": "2026-10-20T08:33:41+07:00"
  }
 ],
 "meta": {
  "page": 1,
  "per_page": 20,
  "total": 1,
  "last_page": 1
 }
}
```

Sample built from the TinoPay API v1 documentation (Tino relays TinoPay data as is); values are examples.
