---
title: "Events feed"
description: "Read every published QuotWay quote event from the last 30 days with GET /v1/events - the ordered audit feed and the recovery path for missed webhooks."
url: "https://www.quotway.com/ja/docs/api/events"
type: "documentation"
category: "api"
updated: "2026-09-30"
locale: "ja"
source: "QuotWay - B2B Quote & Negotiation App for Shopify"
---

# Events feed

**Read time:** 4 minutes.
**Who it's for:** Developers who want an ordered history of quote activity, or a way to catch up on
webhooks their endpoint missed.

> ⚠️ Requires the **Enterprise** plan and the `read_quotes` scope.

## What is an event?

Every time something public happens to a quote - a request arrives, a proposal is sent, the buyer
accepts - QuotWay records an **event**. The same event is what a [webhook](/docs/api/webhooks)
delivers. The feed and webhooks use one catalog of 25 event types (see the
[event catalog](/docs/api/webhooks#event-catalog)).

```json
{
  "object": "event",
  "id": "clz9m1a2b0004qw7hx8y9z0ab",
  "type": "quote.partially_accepted",
  "created_at": "2026-09-29T14:12:00.000Z",
  "sequence": "48213",
  "quote_id": "clz8k2x9f0001qw7h3m4n5p6r",
  "actor": "buyer",
  "data": {
    "previous_status": "proposal_sent",
    "new_status": "partially_accepted",
    "version_number": 2
  }
}
```

| Field | Description |
|---|---|
| `id` | The event's id. **It equals the `webhook-id` header** of the webhook delivery for the same event. |
| `type` | The event type, e.g. `quote.accepted`. |
| `created_at` | When it happened. |
| `sequence` | A monotonically increasing ordering key, as a **string** (it can exceed the largest integer JavaScript represents exactly). Compare as a big integer. |
| `quote_id` | The quote it's about. |
| `actor` | Who caused it: `buyer`, `merchant` or `system` (automation, scheduled jobs, API and Flow actions). |
| `data` | Event-specific detail - see [Event data](/docs/api/webhooks#event-data). Never contains buyer personal data. |

Events carry a quote **id**, not the quote. Fetch `GET /v1/quotes/{id}` when you need its current
state.

## List events - `GET /v1/events`

Returns every published event for the store, **oldest first**.

```bash
curl -G https://api.quotway.com/v1/events \
  -H "Authorization: Bearer $QUOTWAY_API_KEY" \
  --data-urlencode "type=quote.accepted,quote.partially_accepted,quote.converted" \
  --data-urlencode "created[gte]=2026-09-01T00:00:00Z" \
  --data-urlencode "limit=50"
```

| Parameter | Description |
|---|---|
| `limit` | 1–50, default 20. |
| `starting_after` | An event id; returns the events after it. Use the previous page's `next_cursor`. |
| `type` | Comma-separated event types. An unknown type is `400 invalid_request`. |
| `created[gte]`, `created[lte]` | ISO-8601 bounds on `created_at`. |

`next_cursor` is the id of the page's last event; pass it as `starting_after`.

## One quote's events - `GET /v1/quotes/{id}/events`

The same, filtered to one quote - handy for a timeline in a CRM record. Takes the same parameters.
Returns `404 not_found` if the quote isn't in the store.

## How long are events kept?

**30 days.** After that they're deleted, and a `starting_after` that points at a deleted event
returns `400 invalid_request`. For a longer history, store events as you receive them.

## Recovering missed webhooks

The feed is the safety net under webhooks. If your endpoint was down, a delivery gave up, or you
disabled the endpoint for a while:

1. Take the `id` of the last event you processed successfully (the `webhook-id` of its delivery).
2. Page through `GET /v1/events?starting_after=<that id>` until `has_more` is `false`.
3. Process each event, skipping any `id` you've already handled.

Because event ids and webhook ids are the same, one de-duplication table covers both paths.

## Related

- [Webhooks](/docs/api/webhooks) - the event catalog and payloads.
- [Pagination](/docs/api/pagination)
- [The quote object](/docs/api/quote-object)
