Find, install and sell Apps
Browse Bazaar, install an App into your Team and understand how listings and purchases work.
Bazaar is your Team’s App gallery. A listing describes an App, its maker and its price. Installing adds the App to your Team. The permissions you grant it still control what it can do.
Get an App
Section titled “Get an App”- Open Bazaar from your Team’s App launcher.
- Search for an App or choose a category. Open its listing to read the description, screenshots, seller and price.
- For a free App, choose Install and confirm if the Hub asks. When the request finishes, its card says Installed. Choose Open in the listing detail or use your Team’s launcher.
- For a paid App, the Team owner chooses Buy and confirms the Hub’s purchase prompt. The Hub takes the page to Stripe-hosted checkout, which returns to the Team. Complete that checkout.
- Payment confirmation grants your Team an entitlement, but does not install the App. Reopen Bazaar, select the purchased listing, choose Buy again and confirm. An active entitlement installs the purchased Release without another checkout. Choose Open in its detail or use your Team’s launcher.
Cancelling the host’s confirmation returns the listing to Install or Buy. It does not mark the App installed or leave a failed purchase to retry. If Open fails after installation, retry Open; the installation stays intact.
The App window’s Back button returns from a listing to the gallery with your search, category and scroll position. Browse all Apps clears both a search and a category filter when there are no matching listings. A new Team’s gallery shows available offers even when it has installed none of them.
Team members can install free Apps. Spending Team money belongs to the owner. Bazaar also needs the Team’s approval to browse and acquire Apps. Browsing only means it can show listings but cannot install or begin a purchase.
Included with every Team describes an App supplied with your Team. Coming soon has no acquisition action. If a priced listing says Purchases open soon, paid checkout is disabled on that deployment.
A checkout link is not proof of payment. Fungi grants the entitlement after it receives the signed payment confirmation. Returning from checkout alone does not grant it. If checkout appears again when you return to buy the purchased listing, check that Fungi has received the payment confirmation before paying again.
See Use Apps for opening an App and managing its permissions.
What a purchase includes
Section titled “What a purchase includes”A paid listing sells one published Release of an App. A Release is an immutable version. The purchase gives your Team access to that Release. It does not promise later Releases or a subscription.
Listings are free or have a one-time USD price. An API price’s amountMinor is
an integer number of cents. For example, 1000 means $10.00 before tax. The
listing price is separate from the model, media or Computer usage the App can
request. See Billing for Team usage charges.
List your own App
Section titled “List your own App”First build an App and publish its Release. The seller Team must own the App and have a published Release at the listed surface route.
Settings → Team → Selling
Section titled “Settings → Team → Selling”Only a Team owner can use System Settings → Team → Selling. Set up payouts with Stripe, or continue setup if Stripe still needs information. Opening setup does not verify the seller; the payout status shows when paid selling is ready.
Under Your Apps, choose Sell this App to create a free or one-time paid listing. The price preview uses the configured platform fee, rounded down to whole cents, to show what you receive. Free listings remain available when paid selling is off.
Sales shows checkout creation times and amounts, without buyer details. Refund requests a full refund of your sale; confirmation comes from the signed refund event. Open Stripe dashboard opens your own Stripe dashboard.
API reference
Section titled “API reference”Seller operations use authenticated Hub APIs. Requests that list or refund must
come from the seller Team’s owner. Browser mutations also require the Hub’s
same-origin protections. Seller onboarding, refunds, and the seller Apps, Sales
and dashboard APIs require the signed-in owner’s browser session and
marketplace.manage; Team keys receive HTTP 401 on these routes. The
availability, seller-status and listing APIs below retain their existing
Team-key admission.
All paths below start with /api/teams/<teamId>/marketplace. Replace <teamId>
with your seller Team’s identity.
| Operation | Method and path | Result |
|---|---|---|
| Check paid-flow availability | GET /availability |
Whether paid operations are configured and the configured platformFeeBasisPoints (null when paid is off) |
| Check seller status | GET /seller |
The seller’s onboarding and payment status |
| Open seller onboarding | POST /seller/onboarding |
A Stripe-hosted onboarding URL |
| Read your Apps and listings | GET /seller/apps |
Your Team’s published Apps and listings |
| Read your sales | GET /seller/sales |
Sales with checkout creation times, without buyer details |
| Open your Stripe dashboard | POST /seller/dashboard |
A short-lived dashboard URL for the signed-in seller |
| Create a listing | POST /listings |
The created listing |
| Refund your sale | POST /purchases/<purchaseId>/refund |
Acceptance of a full-refund request |
A listing names appId, releaseId and surfaceRoute, plus a name, tagline,
description, category and price. Categories are Agents, Creative, Developer,
Games and Productivity. You can include an icon and screenshots with alt text. A
free price uses kind: "free". A paid price uses kind: "one-time",
currency: "usd" and amountMinor.
Paid selling needs an enabled checkout deployment and a seller account that Stripe permits to accept charges. Complete its onboarding and check seller status before creating a paid listing. Merely opening onboarding does not verify the seller.
Refunds and failed requests
Section titled “Refunds and failed requests”The seller owner can request a full refund of its own sale. The signed refund confirmation ends the buyer’s entitlement. A refund request being accepted does not mean that confirmation has arrived. Removing a listing from discovery does not refund purchases or revoke existing access.
If the gallery fails to load, use Try again. A failed refresh keeps the last gallery visible. If an acquisition fails, its Try again action retries the same request. Check your installed Apps and checkout state before treating a lost response as a failed purchase.
Permission denials need the appropriate Team role and App approval. Payment configuration and seller restrictions need attention at their respective owners. Repeatedly clicking Buy or relisting a Release does not fix either.