Introduction
The Gumroad API is a RESTful API that allows you to integrate Gumroad’s features into your applications. With the API, you can manage products, retrieve sales data, verify licenses, manage subscriptions, and more.Base URL
All API requests should be made to:The API is also accessible through
https://gumroad.com/api for backward compatibility.API Version
The current API version is v2. All endpoints are prefixed with/v2:
Request Format
The API accepts standard HTTP methods:- GET - Retrieve resources
- POST - Create new resources
- PUT - Update existing resources
- DELETE - Delete resources
Response Format
All API responses are returned in JSON format with a consistent structure:Success Response
Error Response
The
success field will always be true or false to indicate whether the request was successful.Available Endpoints
The Gumroad API provides the following resources:User
GET /v2/user- Retrieve authenticated user information
Products
GET /v2/products- List all productsGET /v2/products/:id- Get a specific productPOST /v2/products- Create a new productPUT /v2/products/:id- Update a productDELETE /v2/products/:id- Delete a productPUT /v2/products/:id/enable- Enable (publish) a productPUT /v2/products/:id/disable- Disable (unpublish) a product
Sales
GET /v2/sales- List all sales with paginationGET /v2/sales/:id- Get a specific salePUT /v2/sales/:id/mark_as_shipped- Mark a sale as shippedPUT /v2/sales/:id/refund- Refund a salePOST /v2/sales/:id/resend_receipt- Resend receipt email
Licenses
POST /v2/licenses/verify- Verify a license keyPUT /v2/licenses/enable- Enable a licensePUT /v2/licenses/disable- Disable a licensePUT /v2/licenses/rotate- Rotate a license keyPUT /v2/licenses/decrement_uses_count- Decrement license usage count
Subscribers
GET /v2/products/:id/subscribers- List product subscribersGET /v2/subscribers/:id- Get subscriber details
Offer Codes
GET /v2/products/:id/offer_codes- List offer codes for a productPOST /v2/products/:id/offer_codes- Create an offer codeGET /v2/products/:id/offer_codes/:code_id- Get offer code detailsPUT /v2/products/:id/offer_codes/:code_id- Update an offer codeDELETE /v2/products/:id/offer_codes/:code_id- Delete an offer code
Variants
GET /v2/products/:id/variant_categories- List variant categoriesPOST /v2/products/:id/variant_categories- Create a variant categoryGET /v2/products/:id/variants- List variantsPOST /v2/products/:id/variant_categories/:category_id/variants- Create a variant
Custom Fields
GET /v2/products/:id/custom_fields- List custom fieldsPOST /v2/products/:id/custom_fields- Create a custom fieldPUT /v2/products/:id/custom_fields/:field_id- Update a custom fieldDELETE /v2/products/:id/custom_fields/:field_id- Delete a custom field
Payouts
GET /v2/payouts- List payoutsGET /v2/payouts/:id- Get payout detailsGET /v2/payouts/upcoming- Get upcoming payout information
Resource Subscriptions (Webhooks)
GET /v2/resource_subscriptions- List webhook subscriptionsPUT /v2/resource_subscriptions- Create a webhook subscriptionDELETE /v2/resource_subscriptions/:id- Delete a webhook subscription
Pagination
Endpoints that return lists (like sales) support pagination using thepage_key parameter:
Pagination Response
Filtering
Many endpoints support filtering parameters:Sales Filtering
after- Filter sales after a date (format: YYYY-MM-DD)before- Filter sales before a date (format: YYYY-MM-DD)email- Filter by customer emailproduct_id- Filter by product IDorder_id- Filter by order ID
Rate Limiting
The API implements standard rate limiting. If you exceed the rate limit, you’ll receive a 429 Too Many Requests response.
- Cache responses when possible
- Use pagination efficiently
- Implement exponential backoff for retries
- Use webhooks instead of polling for real-time updates
CORS Support
The API supports Cross-Origin Resource Sharing (CORS) for browser-based applications. Valid origins are configured per environment.Error Handling
The API uses standard HTTP status codes:200 OK- Request successful400 Bad Request- Invalid request parameters401 Unauthorized- Missing or invalid authentication403 Forbidden- Insufficient permissions404 Not Found- Resource not found422 Unprocessable Entity- Validation error429 Too Many Requests- Rate limit exceeded500 Internal Server Error- Server error
Next Steps
Authentication
Learn how to authenticate your API requests using OAuth 2.0
Products API
Manage your Gumroad products programmatically
Sales API
Retrieve and manage your sales data
Licenses API
Verify and manage license keys for your products