# Gumroad Integration via LowCodeAPI

**Last Updated**: February 11, 2026

## Overview

Digital product sales

The Gumroad API provides access to:

- **Payment Processing** - Related functionality

## Base Endpoint

```
https://api.lowcodeapi.com/gumroad/
```

**Important**: Always include the provider name in the URL path after `api.lowcodeapi.com/`

## Authentication

LowCodeAPI handles authentication automatically. You only need to:

1. **Sign up** at [Gumroad](https://gumroad.com)
2. **Get your credentials** from [credential page](https://app.gumroad.com/settings/advanced)
3. **Connect your account** in LowCodeAPI dashboard
4. **Use your `api_token`** in all requests

The `api_token` is your LowCodeAPI authentication token. LowCodeAPI will automatically:
- Fetch your provider credentials (API keys, OAuth tokens, etc.)
- Apply them to each request
- Handle token refresh for OAuth providers

**Auth Type**: OAUTH2.0

## URL Format (Important)

LowCodeAPI supports **two URL formats** for endpoints with path parameters. **Always try New Format first**, and only fall back to Old Format if it doesn't work.

### New Format (Priority) - Dynamic Path Parameters

- **Path parameters stay in the URL path** - Do NOT convert to query parameters
- **Provider name is always in the URL path** after `api.lowcodeapi.com/`
- Pattern: `https://api.lowcodeapi.com/{provider}/{path_with_params}?api_token={api_token}`

**Example**:
```bash
# New Format - Path parameter stays in the URL path
https://api.lowcodeapi.com/gumroad/resource/{RESOURCE_ID}?api_token=YOUR_API_TOKEN
```

### Old Format (Fallback) - Sanitized Path + Query Parameters

- **Path parameters become query parameters**
- **Provider name is always in the URL path**
- Pattern: `https://api.lowcodeapi.com/{provider}/{sanitized_path}?{path_params}&api_token={api_token}`

**Example**:
```bash
# Old Format - Path parameter becomes a query parameter
https://api.lowcodeapi.com/gumroad/resource/id?id=RESOURCE_ID&api_token=YOUR_API_TOKEN
```

### Decision Flow for AI Agents

1. Always use **New Format first** - Keep path parameters in the URL path
2. If you get a 404 or error, try **Old Format** with sanitized path
3. Log which format worked for future requests to this provider

## API Categories

- **Custom fields** - 4 endpoints
- **Licenses** - 4 endpoints
- **Offer codes** - 5 endpoints
- **Products** - 5 endpoints
- **Resource subscriptions** - 3 endpoints
- **Sales** - 4 endpoints
- **Subscribers** - 2 endpoints
- **User** - 1 endpoints
- **Variant categories** - 10 endpoints

## Common Endpoints

### Category: Custom fields

#### Retrieve all of the existing custom fields for a product

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products/:product_id/custom_fields`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/custom_fields?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/custom_fields?product_id={product_id}&api_token={api_token}
```

**Description**: Retrieve all of the existing custom fields for a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/custom_fields?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve all of the existing custom fields for a product](https://app.gumroad.com/api#custom-fields)

---

#### Create a new custom field for a product

**Method**: `POST` | **LowCodeAPI Path**: `/v2/products/:product_id/custom_fields`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/custom_fields?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/custom_fields?product_id={product_id}&api_token={api_token}
```

**Description**: Create a new custom field for a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID |

**Request Body**:
```json
{
  "name": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes |  |
| `variant` | string | No |  |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X POST "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/custom_fields?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Create a new custom field for a product](https://app.gumroad.com/api#custom-fields)

---

#### Edit an existing product's custom field

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/products/:product_id/custom_fields/:name`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/custom_fields/:name?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/custom_fields/name?name={name}&product_id={product_id}&api_token={api_token}
```

**Description**: Edit an existing product's custom field

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | custom Field |
| `product_id` | string | Yes | Product ID |

**Request Body**:
```json
{
  "variant": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `variant` | string | Yes |  |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/custom_fields/:name?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Edit an existing product's custom field](https://app.gumroad.com/api#custom-fields)

---

#### Permanently delete a product's custom field

**Method**: `DELETE` | **LowCodeAPI Path**: `/v2/products/:product_id/custom_fields/:name`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/custom_fields/:name?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/custom_fields/name?name={name}&product_id={product_id}&api_token={api_token}
```

**Description**: Permanently delete a product's custom field

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | custom Field |
| `product_id` | string | Yes | Product ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X DELETE "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/custom_fields/:name?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Permanently delete a product's custom field](https://app.gumroad.com/api#custom-fields)

---

### Category: Licenses

#### Verify a license

**Method**: `POST` | **LowCodeAPI Path**: `/v2/licenses/verify`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/licenses/verify?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/licenses/verify?api_token={api_token}
```

**Description**: Verify a license

**Request Body**:
```json
{
  "license_key": "<string>",
  "product_id": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `increment_uses_count` | boolean | No |  |
| `license_key` | string | Yes | the license key provided by your customer |
| `product_id` | string | Yes | the unique ID of the product |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X POST "https://api.lowcodeapi.com/gumroad/v2/licenses/verify?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Verify a license](https://app.gumroad.com/api#licenses)

---

#### Enable a license

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/licenses/enable`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/licenses/enable?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/licenses/enable?api_token={api_token}
```

**Description**: Enable a license

**Request Body**:
```json
{
  "license_key": "<string>",
  "product_id": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `license_key` | string | Yes | the license key provided by your customer |
| `product_id` | string | Yes | the unique ID of the product |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/licenses/enable?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Enable a license](https://app.gumroad.com/api#licenses)

---

#### Disable a license

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/licenses/disable`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/licenses/disable?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/licenses/disable?api_token={api_token}
```

**Description**: Disable a license

**Request Body**:
```json
{
  "license_key": "<string>",
  "product_id": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `license_key` | string | Yes | the license key provided by your customer |
| `product_id` | string | Yes | the unique ID of the product |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/licenses/disable?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Disable a license](https://app.gumroad.com/api#licenses)

---

#### Decrement the uses count of a license

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/licenses/decrement_uses_count`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/licenses/decrement_uses_count?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/licenses/decrement_uses_count?api_token={api_token}
```

**Description**: Decrement the uses count of a license

**Request Body**:
```json
{
  "license_key": "<string>",
  "product_id": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `license_key` | string | Yes | the license key provided by your customer |
| `product_id` | string | Yes | the unique ID of the product |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/licenses/decrement_uses_count?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Decrement the uses count of a license](https://app.gumroad.com/api#licenses)

---

### Category: Offer codes

#### Retrieve all of the existing offer codes for a product

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products/:product_id/offer_codes`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/offer_codes?product_id={product_id}&api_token={api_token}
```

**Description**: Retrieve all of the existing offer codes for a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve all of the existing offer codes for a product](https://app.gumroad.com/api#offer-codes)

---

#### Retrieve the details of a specific offer code of a product

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products/:product_id/offer_codes/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/offer_codes/id?id={id}&product_id={product_id}&api_token={api_token}
```

**Description**: Retrieve the details of a specific offer code of a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `product_id` | string | Yes | Product ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes/:id?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve the details of a specific offer code of a product](https://app.gumroad.com/api#offer-codes)

---

#### Create a new offer code for a product

**Method**: `POST` | **LowCodeAPI Path**: `/v2/products/:product_id/offer_codes`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/offer_codes?product_id={product_id}&api_token={api_token}
```

**Description**: Create a new offer code for a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID |

**Request Body**:
```json
{
  "amount_off": "<string>",
  "name": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `amount_off` | string | Yes |  |
| `name` | string | Yes | the coupon code used at checkout |
| `offer_type` | string | No | cents/percent Default-cents
max_purchase_count |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X POST "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Create a new offer code for a product](https://app.gumroad.com/api#offer-codes)

---

#### Edit an existing product's offer code

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/products/:product_id/offer_codes/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/offer_codes/id?id={id}&product_id={product_id}&api_token={api_token}
```

**Description**: Edit an existing product's offer code

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `product_id` | string | Yes | Product ID |

**Request Body**:
```json
{
  "key": "value"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `offer_code` | string | No | string |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes/:id?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Edit an existing product's offer code](https://app.gumroad.com/api#offer-codes)

---

#### Permanently delete a product's offer code

**Method**: `DELETE` | **LowCodeAPI Path**: `/v2/products/:product_id/offer_codes/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/offer_codes/id?id={id}&product_id={product_id}&api_token={api_token}
```

**Description**: Permanently delete a product's offer code

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `product_id` | string | Yes | Product ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X DELETE "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/offer_codes/:id?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Permanently delete a product's offer code](https://app.gumroad.com/api#offer-codes)

---

### Category: Products

#### Retrieve all of the existing products for the authenticated user

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products?api_token={api_token}
```

**Description**: Retrieve all of the existing products for the authenticated user

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve all of the existing products for the authenticated user](https://app.gumroad.com/api#products)

---

#### Retrieve the details of a product

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/id?id={id}&api_token={api_token}
```

**Description**: Retrieve the details of a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products/:id?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve the details of a product](https://app.gumroad.com/api#products)

---

#### Permanently delete a product

**Method**: `DELETE` | **LowCodeAPI Path**: `/v2/products/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/id?id={id}&api_token={api_token}
```

**Description**: Permanently delete a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X DELETE "https://api.lowcodeapi.com/gumroad/v2/products/:id?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Permanently delete a product](https://app.gumroad.com/api#products)

---

#### Enable an existing product

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/products/:id/enable`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:id/enable?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/id/enable?id={id}&api_token={api_token}
```

**Description**: Enable an existing product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/products/:id/enable?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Enable an existing product](https://app.gumroad.com/api#products)

---

#### Disable an existing product

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/products/:id/disable`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:id/disable?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/id/disable?id={id}&api_token={api_token}
```

**Description**: Disable an existing product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/products/:id/disable?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Disable an existing product](https://app.gumroad.com/api#products)

---

### Category: Resource subscriptions

#### Subscribe to a resource

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/resource_subscriptions`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/resource_subscriptions?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/resource_subscriptions?api_token={api_token}
```

**Description**: Subscribe to a resource

**Request Body**:
```json
{
  "key": "value"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `charge_occurrence_count` | string | No | number of charges made for this subscription |
| `created_at` | string | No | timestamp when subscription was created |
| `custom_fields` | string | No | custom fields from the original purchase |
| `free_trial_ends_at` | string | No | timestamp when free trial ends |
| `license_key` | string | No | license key from the original purchase. |
| `product_id` | string | No | id of the product |
| `product_name` | string | No | name of the product |
| `purchase_ids` | string | No | array of charge ids belonging to this subscription |
| `recurrence` | subscription duration | No |  |
| `subscription_id` | string | No | id of the subscription |
| `user_email` | string | No | email address of the subscriber |
| `user_id` | string | No | user id of the subscriber |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/resource_subscriptions?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Subscribe to a resource](https://app.gumroad.com/api#resource-subscriptions)

---

#### Show all active subscriptions of user for the input resource

**Method**: `GET` | **LowCodeAPI Path**: `/v2/resource_subscriptions`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/resource_subscriptions?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/resource_subscriptions?resource_name={resource_name}&api_token={api_token}
```

**Description**: Show all active subscriptions of user for the input resource

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resource_name` | string | No | Currently there are 8 supported values - sale; refund; dispute; dispute_won; cancellation; subscription_updated; subscription_ended; and subscription_restarted. |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/resource_subscriptions?resource_name=VALUE&api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Show all active subscriptions of user for the input resource](https://app.gumroad.com/api#resource-subscriptions)

---

#### Unsubscribe from a resource

**Method**: `DELETE` | **LowCodeAPI Path**: `/v2/resource_subscriptions/:resource_subscription_id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/resource_subscriptions/:resource_subscription_id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/resource_subscriptions/resource_subscription_id?resource_subscription_id={resource_subscription_id}&api_token={api_token}
```

**Description**: Unsubscribe from a resource

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resource_subscription_id` | string | Yes | Resource subscription ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X DELETE "https://api.lowcodeapi.com/gumroad/v2/resource_subscriptions/:resource_subscription_id?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Unsubscribe from a resource](https://app.gumroad.com/api#resource-subscriptions)

---

### Category: Sales

#### Retrieves all of the successful sales by the authenticated user

**Method**: `GET` | **LowCodeAPI Path**: `/v2/sales`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/sales?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/sales?after={after}&before={before}&email={email}&order_id={order_id}&page_key={page_key}&product_id={product_id}&api_token={api_token}
```

**Description**: Retrieves all of the successful sales by the authenticated user

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `after` | string | No | Only return sales after this date. date in form YYYY-MM-DD |
| `before` | string | No | Only return sales before this date. date in form YYYY-MM-DD |
| `email` | string | No | Filter sales by this email |
| `order_id` | string | No | Filter sales by this Order ID |
| `page_key` | string | No | A key representing a page of results. It is given in the response as next_page_key. |
| `product_id` | string | No | Filter sales by this product |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/sales?after=VALUE&before=VALUE&email=VALUE&order_id=VALUE&page_key=VALUE&product_id=VALUE&api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieves all of the successful sales by the authenticated user](https://app.gumroad.com/api#sales)

---

#### Retrieves the details of a sale by this user

**Method**: `GET` | **LowCodeAPI Path**: `/v2/sales/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/sales/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/sales/id?id={id}&api_token={api_token}
```

**Description**: Retrieves the details of a sale by this user

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Sales ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/sales/:id?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieves the details of a sale by this user](https://app.gumroad.com/api#sales)

---

#### Marks a sale as shipped

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/sales/:id/mark_as_shipped`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/sales/:id/mark_as_shipped?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/sales/id/mark_as_shipped?id={id}&api_token={api_token}
```

**Description**: Marks a sale as shipped

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Sales ID |

**Request Body**:
```json
{
  "key": "value"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `tracking_url` | string | No |  |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/sales/:id/mark_as_shipped?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Marks a sale as shipped](https://app.gumroad.com/api#sales)

---

#### Refunds a sale

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/sales/:id/refund`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/sales/:id/refund?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/sales/id/refund?id={id}&api_token={api_token}
```

**Description**: Refunds a sale

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Sales ID |

**Request Body**:
```json
{
  "key": "value"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `amount_cents` | string | No | Amount in cents (in currency of the sale) to be refunded. If set issue partial refund by this amount. If not set; issue full refund. You can issue multiple partial refunds per sale until it is fully refunded. |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/sales/:id/refund?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Refunds a sale](https://app.gumroad.com/api#sales)

---

### Category: Subscribers

#### Retrieves all of the active subscribers for one of the authenticated user's products

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products/:product_id/subscribers`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/subscribers?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/subscribers?product_id={product_id}&email={email}&api_token={api_token}
```

**Description**: Retrieves all of the active subscribers for one of the authenticated user's products

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID |

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | No | Filter subscribers by this email |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/subscribers?email=VALUE&api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieves all of the active subscribers for one of the authenticated user's products](https://app.gumroad.com/api#subscribers)

---

#### Retrieves the details of a subscriber to this user's product

**Method**: `GET` | **LowCodeAPI Path**: `/v2/subscribers/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/subscribers/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/subscribers/id?id={id}&api_token={api_token}
```

**Description**: Retrieves the details of a subscriber to this user's product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Subscribers ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/subscribers/:id?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieves the details of a subscriber to this user's product](https://app.gumroad.com/api#subscribers)

---

### Category: User

#### Retrieve the user's data

**Method**: `GET` | **LowCodeAPI Path**: `/v2/user`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/user?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/user?api_token={api_token}
```

**Description**: Retrieve the user's data

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/user?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve the user's data](https://app.gumroad.com/api#user)

---

### Category: Variant categories

#### Create a new variant category on a product

**Method**: `POST` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories?product_id={product_id}&api_token={api_token}
```

**Description**: Create a new variant category on a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID |

**Request Body**:
```json
{
  "title": "<string>",
  "variant_category": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `title` | string | Yes |  |
| `variant_category` | string | Yes |  |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X POST "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Create a new variant category on a product](https://app.gumroad.com/api#variant-categories)

---

#### Retrieve the details of a variant category of a product

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories/id?id={id}&product_id={product_id}&api_token={api_token}
```

**Description**: Retrieve the details of a variant category of a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |
| `product_id` | string | Yes | Product ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:id?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve the details of a variant category of a product](https://app.gumroad.com/api#variant-categories)

---

#### Edit a variant category of an existing product

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories/id?id={id}&product_id={product_id}&api_token={api_token}
```

**Description**: Edit a variant category of an existing product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |
| `product_id` | string | Yes | Product ID |

**Request Body**:
```json
{
  "title": "<string>",
  "variant_category": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `title` | string | Yes |  |
| `variant_category` | string | Yes |  |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:id?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Edit a variant category of an existing product](https://app.gumroad.com/api#variant-categories)

---

#### Permanently delete a variant category of a product

**Method**: `DELETE` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories/id?id={id}&product_id={product_id}&api_token={api_token}
```

**Description**: Permanently delete a variant category of a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |
| `product_id` | string | Yes | Product ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X DELETE "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:id?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Permanently delete a variant category of a product](https://app.gumroad.com/api#variant-categories)

---

#### Retrieve all of the existing variant categories of a product

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories?product_id={product_id}&api_token={api_token}
```

**Description**: Retrieve all of the existing variant categories of a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve all of the existing variant categories of a product](https://app.gumroad.com/api#variant-categories)

---

#### Create a new variant of a product

**Method**: `POST` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories/:variant_category_id/variantss`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variantss?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories/variant_category_id/variantss?product_id={product_id}&variant_category_id={variant_category_id}&api_token={api_token}
```

**Description**: Create a new variant of a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID |
| `variant_category_id` | string | Yes | Variant Category ID |

**Request Body**:
```json
{
  "name": "<string>",
  "price_difference_cents": "<string>",
  "variant": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `max_purchase_count` | string | No |  |
| `name` | string | Yes |  |
| `price_difference_cents` | string | Yes |  |
| `variant` | string | Yes |  |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X POST "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variantss?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Create a new variant of a product](https://app.gumroad.com/api#variant-categories)

---

#### Retrieve the details of a variant of a product

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories/:variant_category_id/variants/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variants/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories/variant_category_id/variants/id?id={id}&product_id={product_id}&variant_category_id={variant_category_id}&api_token={api_token}
```

**Description**: Retrieve the details of a variant of a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |
| `product_id` | string | Yes | Product ID |
| `variant_category_id` | string | Yes | Variant Category ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variants/:id?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve the details of a variant of a product](https://app.gumroad.com/api#variant-categories)

---

#### Edit a variant of an existing product

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories/:variant_category_id/variants/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variants/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories/variant_category_id/variants/id?id={id}&product_id={product_id}&variant_category_id={variant_category_id}&api_token={api_token}
```

**Description**: Edit a variant of an existing product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |
| `product_id` | string | Yes | Product ID |
| `variant_category_id` | string | Yes | Variant Category ID |

**Request Body**:
```json
{
  "name": "<string>",
  "price_difference_cents": "<string>",
  "variant": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `max_purchase_count` | string | No |  |
| `name` | string | Yes |  |
| `price_difference_cents` | string | Yes |  |
| `variant` | string | Yes |  |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variants/:id?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Edit a variant of an existing product](https://app.gumroad.com/api#variant-categories)

---

#### Permanently delete a variant of a product

**Method**: `DELETE` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories/:variant_category_id/variants/:id`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variants/:id?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories/variant_category_id/variants/id?id={id}&product_id={product_id}&variant_category_id={variant_category_id}&api_token={api_token}
```

**Description**: Permanently delete a variant of a product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |
| `product_id` | string | Yes | Product ID |
| `variant_category_id` | string | Yes | Variant Category ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X DELETE "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variants/:id?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Permanently delete a variant of a product](https://app.gumroad.com/api#variant-categories)

---

#### Retrieve all of the existing variants in a variant category

**Method**: `GET` | **LowCodeAPI Path**: `/v2/products/:product_id/variant_categories/:variant_category_id/variants`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variants?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/gumroad/v2/products/product_id/variant_categories/variant_category_id/variants?product_id={product_id}&variant_category_id={variant_category_id}&api_token={api_token}
```

**Description**: Retrieve all of the existing variants in a variant category

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | Product ID |
| `variant_category_id` | string | Yes | Variant Category ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/gumroad/v2/products/:product_id/variant_categories/:variant_category_id/variants?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Retrieve all of the existing variants in a variant category](https://app.gumroad.com/api#variant-categories)

---

## API Definition Endpoints

You can retrieve the complete OpenAPI specification for this provider using these endpoints:

**New Format (OpenAPI spec with dynamic path parameters):**
```bash
curl -X GET "https://backend.lowcodeapi.com/gumroad/openapi"
```

**Old Format (API definition with sanitized paths):**
```bash
curl -X GET "https://backend.lowcodeapi.com/gumroad/definition"
```

## Response Format

All responses from LowCodeAPI are wrapped in a `data` key:

```json
{
  "data": {
    // Actual response from provider API
  }
}
```

The `data` key contains the raw response from the provider's API.

## Complete Endpoint Reference

For a complete list of all 38 endpoints, refer to:
- **Official Provider Documentation**: https://app.gumroad.com/api

## Usage Examples

### Example 1: Basic API Request (New Format)

Making a simple request to Gumroad:

```bash
# Replace RESOURCE_ID with an actual resource ID from your Gumroad account
curl -X GET "https://api.lowcodeapi.com/gumroad/resource/{RESOURCE_ID}?api_token=YOUR_API_TOKEN"
```

### Example 2: Request with Query Parameters (New Format)

Request with specific parameters:

```bash
# Include query parameters for filtering
curl -X GET "https://api.lowcodeapi.com/gumroad/resources?filter=value&api_token=YOUR_API_TOKEN"
```

## Error Handling

Standard HTTP status codes apply. All responses are wrapped in a `data` key:
```json
{
  "data": {
    // Actual response from provider
  }
}
```