Turn any script into an API endpoint
Write a main function, publish it and switch on its endpoint. Another system sends a request, the script runs with the request values as inputs, and the answer carries its output.
The parameters are the API
The arguments of main become the endpoint’s inputs, with their types. A missing or wrongly typed value is refused with 422 before any run starts.
Learn more →def main(month: str, dry_run: bool = False):
total = 1250.75 # your calculation here
return {'month': month, 'total': total, 'dryRun': dry_run}
Sync or async, your choice
A synchronous call waits up to 30 seconds and returns the output. An asynchronous call answers 202 with a runId at once, and you poll it until the run ends.
Learn more →curl -X POST "https://<your-waiso-address>/exec/<project-id>/monthly-close" \
-H "Authorization: Bearer $WAISO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"month": "2026-09"}'
Tokens, limits and a record of every call
Each token reaches only the endpoints you tick and can expire. Set calls per minute per endpoint, and open any run to see the exact request it received.
Questions
Can a flow be an API endpoint too?
Yes. Any published script, flow or AI Scraper robot can have one HTTP endpoint; a flow receives the values as its Start inputs.
What happens if a sync call takes longer than 30 seconds?
The call answers 504 and the run keeps going; fetch the result later with its runId.
Can I send query string parameters instead of JSON?
Yes. Switch the endpoint to Query string and the values arrive as the types your script declares.
Can I share documentation for my endpoints?
Yes. The API page publishes a documentation page where callers can read and try the project’s endpoints.