inversedocs
Pages

Sharing and branding

Decide who can open your app, from the terminal or from Inverse Dev, and give its screens your accent, logo and tagline.

Who can open it

New apps start private. Change it with inverse share or in /dev.

VisibilityWho can open /a/<id>Listed in the store
privateYou, and the people on your share list.No
linkAnyone with the link.No
publicAnyone.Yes, for everyone

Anyone else sees “This app isn't available”, the same as for a deleted app, so a private link doesn't reveal that the app exists.

Your team

Add up to 50 emails. Each person signs in to Inverse with that email, and the app shows up for them in the store under apps shared with them. Only you see the list.

terminal
npx inverse-embed share --private --email ana@team.co --email li@team.co

--email adds to the list. To remove someone, use /dev or the API below.

Public apps, free and paid

--public lists the app in the store for everyone, signed in or not. Free is the default. --price 5.00 sets a price, up to $1,000.

Branding

Give an app an accent color, a logo, a tagline and a light or dark opening screen. Set it in /dev, with a live preview, or with the API.

FieldRulesWhere it shows
accentA #rrggbb color with at least 3:1 contrast against both white and #0b0b0f. Required.The opening screen's progress bar, monogram and button, the room's Invite button, and the top edge of the app's card.
logoAn https:// URL. Optional.The opening screen, at 48×48. Without one, a monogram in your accent.
taglineUp to 80 characters. Optional.Under the app's name on the opening screen.
surfacelight, dark or auto (follows the device). Optional.The opening screen.

An accent that fails the contrast check is rejected with the nearest shade that passes, so you can paste the suggestion and save. Inverse keeps its typography, glass controls, layout and mark, and every branded screen says “Made with Inverse”. That keeps rooms readable and familiar to the people who join them.

API

The CLI and /dev use these endpoints. Authenticate with your CLI token as a Bearer token.

RequestDoes
GET /api/hosted?scope=mineApps you made.
GET /api/hosted?scope=sharedApps shared with your email.
GET /api/hosted?scope=publicPublic apps. No token needed.
GET /api/hosted?scope=purchasedPaid apps you bought.
GET /api/hosted/<id>One app you can open. A paid app you haven't bought returns { app, checkout: true } and no release.
POST /api/hosted/<id>/checkoutReturns { url }, a Stripe Checkout page for a paid app that isn't yours.
PATCH /api/hosted/<id>Owner only: visibility, shared, price (cents), name, description, theme, features ({ pens: true } turns pen tools on in its rooms).
GET /api/hosted/<id>/domainsOwner only. Custom domains, re-checked: { domains: [{ name, verified, misconfigured, records }] }. See domains.
POST /api/hosted/<id>/domainsOwner only. { name } adds a domain (up to 5) and returns the DNS records to set.
DELETE /api/hosted/<id>/domains/<name>Owner only. Removes a domain.
DELETE /api/hosted/<id>Owner only. Deletes the app.
terminal
curl -X PATCH "https://www.inverse.at/api/hosted/<id>" \
  -H "authorization: Bearer $INVERSE_TOKEN" \
  -H "content-type: application/json" \
  -d '{ "theme": { "accent": "#5b5bd6", "tagline": "Plan trips together", "surface": "auto" } }'

shared replaces the whole list. Send { "theme": null } to remove branding.