Endpoint
GET https://api.gumroad.com/v2/products/:id
Authentication
Requires OAuth scope:view_public or any public scope
Path Parameters
string
required
The product’s external ID or unique permalink
Response
boolean
required
Whether the request was successful
object
required
The product object
Show Product object
Show Product object
string
required
The product’s unique external ID
string
required
The product name
string
The product description in HTML format
string
The custom URL path (if set)
integer
required
The price in cents
string
required
The currency code (e.g., “usd”)
string
required
The product’s full URL
string
URL to the product thumbnail image
array
Array of tag names associated with the product
string
required
Human-readable formatted price
boolean
required
Whether the product is published and available for purchase
boolean
required
Whether the product has been deleted
boolean
Whether the product has a “pay what you want” price
string
For recurring products: “monthly”, “yearly”, “quarterly”, “biannually”, or “every_two_years”
boolean
Whether the product requires shipping information
string
URL to preview the product
string
Custom receipt message
string
Custom product summary
integer
Maximum number of purchases allowed (null if unlimited)
object
Information about attached files (only if single file)
array
Custom fields to collect at checkout
boolean
Whether this is a tiered membership product
array
Available billing recurrences for tiered memberships
array
Product variants with pricing and options
object
Adjusted prices by country code for purchasing power parity
integer
Number of successful sales (requires
view_sales scope)integer
Total sales in USD cents (requires
view_sales scope)Example Request
curl -X GET "https://api.gumroad.com/v2/products/kUxDaJMg5NP9PpHRCNYCrw==" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
curl -X GET "https://api.gumroad.com/v2/products/awesome-product" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
const response = await fetch('https://api.gumroad.com/v2/products/kUxDaJMg5NP9PpHRCNYCrw==', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
});
const data = await response.json();
import requests
response = requests.get(
'https://api.gumroad.com/v2/products/kUxDaJMg5NP9PpHRCNYCrw==',
headers={'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}
)
data = response.json()
Example Response
{
"success": true,
"product": {
"id": "kUxDaJMg5NP9PpHRCNYCrw==",
"name": "My Awesome Product",
"description": "<p>This is an amazing product that will change your life.</p>",
"custom_permalink": "awesome-product",
"price": 2999,
"currency": "usd",
"short_url": "https://example.gumroad.com/l/awesome-product",
"thumbnail_url": "https://public-files.gumroad.com/variants/abc123/thumbnail.png",
"tags": ["digital", "course"],
"formatted_price": "$29.99",
"published": true,
"deleted": false,
"customizable_price": false,
"require_shipping": false,
"preview_url": null,
"custom_receipt": "Thank you for your purchase!",
"custom_summary": "A comprehensive course",
"subscription_duration": null,
"max_purchase_count": null,
"file_info": {},
"custom_fields": [],
"is_tiered_membership": false,
"recurrences": null,
"variants": [
{
"title": "License Type",
"options": [
{
"name": "Personal",
"price_difference": 0,
"is_pay_what_you_want": false,
"recurrence_prices": null
},
{
"name": "Commercial",
"price_difference": 5000,
"is_pay_what_you_want": false,
"recurrence_prices": null
}
]
}
],
"purchasing_power_parity_prices": {
"IN": 500,
"BR": 800,
"MX": 900
},
"sales_count": 42,
"sales_usd_cents": 125958
}
}
Error Responses
boolean
false when the request failsstring
Error description
Product Not Found
{
"success": false,
"message": "The product was not found."
}
Unauthorized
{
"success": false,
"message": "Unauthorized"
}
You can use either the product’s external ID or its unique/custom permalink to retrieve a product.