---
title: "List refund requests for unused gifts"
method: GET
path: "/campaigns/{id}/gift-refunds"
tags: ["Gift links"]
---

# List refund requests for unused gifts

`GET /campaigns/{id}/gift-refunds`

## Request

- Base URL: `https://gtmswag.com/api/v1`
- URL: `https://gtmswag.com/api/v1/campaigns/{id}/gift-refunds`
- Auth: HTTP bearer

Refund requests for a campaign's unused paid gifts, newest first, with `status` `requested`, `processing`, `refunded` or `declined`. Requesting one is a human-only action.

## Path parameters

- `id` string, required

## Response `200`

Success: `{"data": [GiftRefund]}`.

- GiftRefundListResponse: The success body: `{"data": [GiftRefund]}`.
  - `data` GiftRefund[], required
    - `id` string, required: Refund request ID (gref_ or cfr_).
    - `sendId` string, required
    - `campaignId` string, required
    - `recipientName` string, required
    - `amountCents` integer, required
    - `mode` 'test' | 'live', required
    - `status` 'requested' | 'processing' | 'refunded' | 'declined', required
    - `note` string, nullable
    - `createdAt` string, required
    - `updatedAt` string, required
    - `version` integer, required

## Other responses

- `401`: Not authenticated: `AUTH_REQUIRED`. no credentials, or an OAuth token on a route that only takes workspace keys; the key is malformed, unknown or revoked.
- `404`: Not found: `NOT_FOUND`. Each example says when.
- `429`: Too many requests: `RATE_LIMIT`. more than 240 requests in the current minute for this workspace (REST and MCP share the limit); wait `retryAfterMs`.
- `default`: Any other refusal or failure, such as 403 CSRF (a cross-origin `Origin` header), 403 HTTPS_REQUIRED or 500 INTERNAL_ERROR, with what to do next.

---

[API](https://skmtc.dev/gtmswag/apis/gtm-swag-api.md) · [All operations](https://skmtc.dev/gtmswag/apis/gtm-swag-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gtmswag/apis/gtm-swag-api/revisions/9ff86fa99afe?raw)
