Everything that starts it: the Triggers tab
Every script and flow has a Triggers tab beside the code. It gathers everything that can start the item without you pressing Run — its API endpoint, its schedules and its event triggers — plus the two limits that protect it. In this lesson you read the tab top to bottom, change the endpoint with Configure, and see both limits do their job.
- Read the API card and copy a Sync or Async curl that works as shown
- Change method, mode, authentication, parameters and limits with Configure
- Add and pause schedules without leaving the editor
- Cap calls per minute and runs at the same time
One tab, every way in
Open a script in the editor and pick Triggers on the side rail (in a flow, it is one of the tabs on the right). The tab has four parts, always in this order: API, Schedules, Events and Limits. Each part reads and writes the same records as the project pages — the endpoint is the one on the API page, the schedules are the ones on the Schedules page — so a change made in one place shows in the other at once.
1def main(name: str = "world"):2 print(f"saying hello to {name}")3 return {"message": f"Hello, {name}!"}1curl -X POST "$WAISO_URL/exec/p_58e3011e/hello" \2 -H "Authorization: Bearer $WAISO_TOKEN" \3 -H "Content-Type: application/json" \4 -d '{"name":"world"}'Every trigger runs the published version. Until the item is published, the tab says Triggers run the published version. Publish this script to call it by URL or on a schedule. and its add buttons stay disabled with the reason on hover. After a publish, if you keep editing, a line warns You have changes that are not published — triggers still run the published version.
The API card and its curl
- Turn the endpoint on
On an item that is Not on the API yet, press Turn on endpoint. The card then shows the method chip, the URL with its path in bold, the columns Mode, Auth, Limit and Status, and Open in API page, which opens the API page focused on this endpoint.
- Copy the curl
Under Call it, a Sync | Async switch picks which example is shown, then Copy curl. The switch is display only — it never changes the endpoint, because switching a live endpoint’s mode would break its callers. When the example differs from the endpoint, a line says This endpoint is Synchronous — change it in Configure.
- Set the token
The curl reads the token from
$WAISO_TOKEN(Set $WAISO_TOKEN to an API token.). Create token opens the API page’s settings with a new token for this endpoint.
Sync waits and answers with the output (best under ~30 s). Async answers at once with a runId; poll it until it finishes. A flow that stops at an Approval step answers 202 with the run while it waits, instead of holding the call open. The full contract — status codes, the poll URL, token errors — is in API endpoints.
Configure: the endpoint’s settings
Configure opens the same dialog as the API page. Its sections are listed on the left; each one is a click away and Save changes writes them together. The dialog’s labels are in English in both languages of the app.
| Section | What you choose |
|---|---|
| Endpoint URL | The path after the project id. Letters, numbers, -, _ and / only. |
| HTTP Method | GET, POST (the default), PUT or DELETE. |
| Execution Mode | Synchronous (waits and returns the output) or Asynchronous (returns a runId to poll). |
| Authentication | Protected (an API token is required — recommended) or Public (no token). |
| Parameter Passing | Only when the script has parameters: Request body (JSON) or Query string. |
| Limits | Calls per minute and Runs at the same time — the same two fields as the tab. |
| Active Tokens | Only for a protected endpoint: the tokens that can call it. |
Schedules and events
Schedules lists every schedule that runs this item, as the Schedules page shows them, with its next run (a paused one shows “—”). Add schedule opens the schedule wizard already pointed at this item; Pause schedule and Resume schedule work on each row; Open in Schedules goes to the full page. Events holds the triggers that start the item when an e-mail arrives, a database row changes or an MQTT message comes in — see Event triggers.
The two limits
Protect it from too many calls or too many runs at once. Both fields are typed as plain whole numbers and saved when you leave the field or press Enter (the help line says Saved for a moment). Both are empty by default — then only your plan’s limit applies.
| Limit | Range | Over the limit |
|---|---|---|
| Calls per minute (endpoint) | 1–100,000 | HTTP 429, a Retry-After header and {"code": "rate_limited", "retryAfter": n}; no run is created. |
| Runs at the same time (item) | 1–1,000 | Extra runs wait in the queue and start when one finishes; they never fail. |
- Calls are counted per endpoint in each clock minute, whichever token makes them;
retryAfteris the seconds left until the next minute (1–60). - The call limit needs the endpoint on (Turn the endpoint on to limit its calls.). The runs limit applies to every run of the item: API calls, schedules, events and runs from the editor.
- A refused call is still recorded: it shows in the API page’s usage as rate limited.