The standard web app
Updated 2026-11-13
How to open the ready-made web app of a service, share it by link or QR code, and what a visitor sees and can do on the page.
What it is
The web app is a page that SpreadAPI builds from your service: one field per input, a button to calculate, and the results. It has its own address, so anyone you give the link to can use your calculation in a browser, on a computer or a phone.
Open and share the web app
- Open your service and make sure it is published.
- Open Apps → Web App → Default App (Web-App → Standard-App).
- Under Web App URL (Web-App-URL) you see the address. Click the copy button next to it, or click the word link in the line below to open the app in a new browser tab.
- Send the address to the people who should use the calculator.
If the page shows No Web App Token (Kein Web-App-Token) instead, your service requires a token. Create a web app token first: see Who can open the app.
Share by QR code
- In Apps → Web App → Default App, click Show Barcode (Barcode anzeigen).
- The QR Code (QR-Code) window shows the code and the address it leads to.
- Click Download QR Code (QR-Code herunterladen) to save it as a PNG image for print or slides.
Scanning the code opens the web app in the phone's browser.
Preview
Live Preview (Live-Vorschau) shows the real web app inside the page. Use the full-screen button at the top right of the preview to try it in a large window.
Settings you change in the Apps tab (theme, custom CSS, app rules) show in the web app after you click Save (Speichern). The app reminds you: "Remember to click the Save button at the top to activate your web app settings".
What a visitor sees
- The name of your service as the page title.
- One field per input, labelled with the input's title. The kind of field follows the input:
| Input | Field in the web app |
|---|---|
| Has allowed values | A list to pick from, with search |
| Number with a minimum and a maximum | A slider together with a number field |
| Other numbers | A number field, shown in the input's display format |
| Percentage | A number field in percent: the visitor types 5 for 5% |
| Yes/no (boolean) | A switch |
| Text | A text field |
- Optional inputs are marked (Optional). Fields start with the input's default value where one is set.
- Calculate Results (Ergebnisse berechnen) runs the calculation.
- Results (Ergebnisse) lists every output with its title and its formatted value. An output that is a cell range is shown as a table: each column in the number format of its cells, numbers right-aligned, and the header row as the table's header. A table on a formula that fills several cells has as many rows as the formula fills for the visitor's inputs; see Add outputs.
- If the visitor changes an input after a calculation, the results are dimmed and a note says "Input values have changed. Click 'Calculate Results' to update."
- If a value is refused, for example a required input is missing or a number is outside its range, the page shows an Error box with the message.
The page appears in German for browsers set to German, and in English otherwise. Numbers are formatted to match.
What changes when
| You change … | Visitors see it after … |
|---|---|
| Theme, custom theme parameters, custom CSS, app rules | Save |
| The workbook, formulas, inputs or outputs | Save and publishing again |
Limits
- The web app needs a published service. If you unpublish the service, the link no longer calculates.
- There is one web app per service. For several different front ends of the same calculation, use web snippets or build your own page on the API.
- Each calculation is one call and counts toward your plan. See Call limits.
Related topics
- Themes — colours, parameters and custom CSS
- App rules — show and hide fields depending on values
- Who can open the app
- Input validation
For developers and agents
Address:
https://spreadapi.io/app/v1/services/{serviceId}Query parameters the page reads:
| Parameter | Meaning |
|---|---|
token | The web app token. Needed only when the service requires a token. |
theme | A theme id that replaces the saved theme for this link: default, minimal, modern, purple, ocean, forest, sunset, slate, rose, sky. |
| Theme parameters | For example primaryColor=%23502D80&buttonBorderRadius=20px. The web app reads the same theme parameters as the snippets. See Themes. |
What the page answers when it cannot open:
| Shown to the visitor | Reason |
|---|---|
| "Access Denied — No access token provided" | The service requires a token and the link has none |
| "Invalid Token — Please check your URL or regenerate the token." | The token in the link is not the current web app token |
| "Web App Not Enabled" | The service is not published |
| Page not found | The service does not exist |
The page calculates by calling the service's API with the visitor's values, so limits and validation are the same as for any API call.
FAQ
How do I share my calculator with someone?
Open Apps → Web App → Default App, copy the address under Web App URL and send it. Anyone with the link can open the app in a browser.
How do I get a QR code for my web app?
In Apps → Web App → Default App, click Show Barcode. The window shows the QR code; Download QR Code saves it as a PNG image.
What does a visitor see in the web app?
The service name, one field per input, the Calculate Results button and, after calculating, the list of results. The workbook and formulas are not visible.
I changed the theme but the web app looks the same. Why?
Settings from the Apps tab apply after you click Save at the top of the service page. Then reload the web app.
I changed a formula. Why does the web app still show old results?
The web app calculates with the published version of the workbook. Save and publish the service again; see Publish and republish.
Why does the web app show a slider for one of my inputs?
A number input with both a minimum and a maximum is shown as a slider with a number field next to it. Remove the minimum or the maximum of the input if you want a plain number field.
In which language is the web app shown?
In German when the visitor's browser is set to German, otherwise in English. The titles of your inputs and outputs are shown exactly as you wrote them.
The web app says "Access Denied". What is wrong?
The service requires a token and the link was opened without one. Copy the complete address from Apps → Web App → Default App; it includes the web app token.
Can a visitor enter a percentage as 5 instead of 0.05?
Yes. In the web app a percentage input is shown in percent, so the visitor types 5 for 5%. The app sends the value to the service as a decimal.
As an agent, what is the address of a service's web app?
It is https://spreadapi.io/app/v1/services/{serviceId}, with ?token=WEB_APP_TOKEN added when the service requires a token. Ask the service owner for the complete link, because only the owner can read the web app token.