List products
Retrieve a paginated list of products with powerful filtering options. Products are the core items available for sale. Each product can have multiple variants (different configurations) and offers (different pricing options). Results are sorted by creation date (newest first) by default.
Authorization
Public key In: header
Query Parameters
GET /v0/products/list Parameter
Value in
- "ASC"
- "DESC"
GET /v0/products/list Parameter
double0 <= value <= 1.7976931348623157e+308Maximum number of records to return (page size). Use with 'skip' for pagination (default: 20, max: 100). A larger value is clamped to 100 and still returns 200 — it is not rejected.
1 <= value <= 10020GET /v0/products/list Parameter
GET /v0/products/list Parameter
GET /v0/products/list Parameter
GET /v0/products/list Parameter
GET /v0/products/list Parameter
Search term to filter products by name or description.
GET /v0/products/list Parameter
GET /v0/products/list Parameter
GET /v0/products/list Parameter
Return only products of these types. Omit to return every type. Values: DigitalDownload, Game, GiftCard, SoftwareKey, VirtualCurrency, VirtualItem, Subscription, OneTimePayment.
GET /v0/products/list Parameter
GET /v0/products/list Parameter
GET /v0/products/list Parameter
Value in
- "createdAt"
- "name"
- "price"
Response Body
application/json
application/json
curl -X GET "https://example.com/v0/products/list"{ "status": "success", "data": { "products": [ { "object": "product", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "type": "DigitalDownload", "internalId": null, "name": "", "description": "", "developer": null, "publisher": null, "pegiRating": "3", "releaseDate": null, "systems": null, "genres": null, "status": "DRAFT", "customFields": null } ], "count": -1.7976931348623157e+308 }}Get Customer Portal URL GET
Resolve the deep-link path into a buyer's self-service portal for the given type. This only computes *where* a buyer would land — it does not authenticate them or mint a token. The buyer still needs to sign in to the portal separately (their own magic link) before the link resolves to anything. If the workspace has configured a custom subscription-management URL (Settings), every subscriptions-* type returns that URL instead of a Fungies portal path — checked before every other rule below, so the override stays reachable even when a rule below would otherwise refuse a Fungies portal link. Unless that override applies: refuses with 401 if called with a test-mode key — portal links are live-only, since the only way onto a test storefront is a preview token this endpoint has no merchant session to mint; refuses with 401 if the customer portal is disabled for the workspace (Settings). orderNumber accepts either the order number shown in the dashboard or the id returned by other v0 endpoints, and is resolved against this workspace's own orders — a value that does not exist returns 404. cartOfferId and offerId are not checked against the calling workspace's own data — a value that does not exist still returns a 200 with a plausible-looking link. The buyer's sign-in on the portal page itself is what actually confirms ownership.
Create a new product POST
Create a new product with the specified details. Set `type` to one of: DigitalDownload, Game, GiftCard, SoftwareKey, VirtualCurrency, VirtualItem, Subscription, OneTimePayment. The type determines which other fields the request body accepts. After creation, add offers to make the product purchasable.