---
title: "List giveaways"
method: GET
path: "/v1/giveaways"
tags: ["giveaway"]
---

# List giveaways

`GET /v1/giveaways`

List giveaways with optional filtering.

**Authenticated filters** (require Bearer token):
- `my_giveaways=true`: Giveaways created by the authenticated account
- `my_entries=true`: Giveaways the authenticated account has entered

**Public filters** (can combine with any filter):
- `exclude_planned=true`: Exclude giveaways that haven't started yet
- `status`: Filter by giveaway status
- `include_stats=true`: Embed per-giveaway stats on each item. Use this to avoid N+1 calls to `GET /v1/giveaway/{id}` just to populate stats.

## Query parameters

- `my_giveaways` boolean — Filter to giveaways created by authenticated account
- `my_entries` boolean — Filter to giveaways the authenticated account has entered
- `exclude_planned` boolean — Exclude giveaways that haven't started yet (start_at > now)
- `status` 'active' | 'ended' | 'drawn' | 'cancelled' — Status states for giveaways. State machine: - active: Giveaway is accepting entries (tips within window) - ended: Giveaway window has passed, ready for drawing - drawn: Winners have been selected - cancelled: Giveaway was cancelled before drawing
- `include_stats` boolean — When true, each returned item populates its `stats` field (total_entries, unique_participants, total_tips_usd) using a single batched query. Frontends should prefer this over looping GET /v1/giveaway/{id} for each item.
- `limit` integer — Max results
- `offset` integer — Pagination offset

## Headers

- `authorization` string, nullable — Bearer <account_jwt>

## Response `200`

Successful Response

- ListGiveawaysResponse — Response for listing giveaways.
  - `giveaways` GiveawayResponse[], required
    - `id` string, required
    - `creator_account_id` string, required
    - `earning_address` string, nullable
    - `creator_handle` string, nullable
    - `creator_ens_name` string, nullable
    - `creator_base_name` string, nullable
    - `title` string, required
    - `description` string, required
    - `minimum_tip_usd` string, required
    - `allow_multiple_entries` boolean, required
    - `num_winners` integer, required
    - `selection_mode` string, required
    - `network` string, required
    - `token_symbol` string, required
    - `start_at` string, date-time, required
    - `end_at` string, date-time, required
    - `status` string, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `drawn_at` string, date-time, nullable
    - `is_winner` boolean, nullable
    - `stats` GiveawayStatsResponse — Statistics for a giveaway.
      - `total_entries` integer, required — Total number of entries across all participants
      - `unique_participants` integer, required — Number of unique tippers who entered
      - `total_tips_usd` string, required — Total USD value of tips that created entries
    - `creator_address` string, nullable, required
  - `total` integer, required
  - `limit` integer, required
  - `offset` integer, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/grove/apis/grove-api.md) · [All operations](https://skmtc.net/grove/apis/grove-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/grove/grove-api/versions/f286b48a8105/schema)
