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.
| Visibility | Who can open /a/<id> | Listed in the store |
|---|---|---|
private | You, and the people on your share list. | No |
link | Anyone with the link. | No |
public | Anyone. | 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.
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.
| Field | Rules | Where it shows |
|---|---|---|
accent | A #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. |
logo | An https:// URL. Optional. | The opening screen, at 48×48. Without one, a monogram in your accent. |
tagline | Up to 80 characters. Optional. | Under the app's name on the opening screen. |
surface | light, 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.
| Request | Does |
|---|---|
GET /api/hosted?scope=mine | Apps you made. |
GET /api/hosted?scope=shared | Apps shared with your email. |
GET /api/hosted?scope=public | Public apps. No token needed. |
GET /api/hosted?scope=purchased | Paid 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>/checkout | Returns { 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>/domains | Owner only. Custom domains, re-checked: { domains: [{ name, verified, misconfigured, records }] }. See domains. |
POST /api/hosted/<id>/domains | Owner 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. |
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.