Skip to main content

Endpoint

GET https://api.gumroad.com/v2/products
Retrieve all products owned by the authenticated user. Products are returned in descending order by creation date.

Authentication

Requires OAuth scope: view_public or any public scope

Response

success
boolean
required
Whether the request was successful
products
array
required
Array of product objects

Example Request

curl -X GET "https://api.gumroad.com/v2/products" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Example Response

{
  "success": true,
  "products": [
    {
      "id": "kUxDaJMg5NP9PpHRCNYCrw==",
      "name": "My Awesome Product",
      "description": "<p>This is an amazing product</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/...",
      "tags": ["digital", "course"],
      "formatted_price": "$29.99",
      "published": true,
      "deleted": false,
      "customizable_price": false,
      "require_shipping": false,
      "preview_url": null,
      "custom_receipt": null,
      "custom_summary": null,
      "subscription_duration": null,
      "max_purchase_count": null,
      "file_info": {},
      "custom_fields": [],
      "is_tiered_membership": false,
      "recurrences": null,
      "variants": [],
      "sales_count": 42,
      "sales_usd_cents": 125958
    }
  ]
}

Error Responses

success
boolean
false when the request fails
message
string
Error description

Example Error

{
  "success": false,
  "message": "Unauthorized"
}
The sales_count and sales_usd_cents fields are only included in the response when the access token has the view_sales scope.

Build docs developers (and LLMs) love