Triggers, operations, and billing

Triggers, operations, and billing

Updated

Invoke a function, schedule it, read its runs, roll it back, give it a domain, and manage its plan. Everything here is on the function's page, and every action has a CLI equivalent.

Invoke a function

A function's address is , shown at the top of its page. Any HTTPS client can call it with any method, path, and body. There is no platform authentication in front of it.

curl -X POST https://my-fn.fn.synteq.app/ \
  -H "content-type: application/json" \
  -d '{"x": 1}'

sends the same request without Synteq credentials, so you see what any caller sees:

synteq function invoke my-fn --path /health
synteq function invoke my-fn --method POST --data '{"x":1}'
synteq function invoke my-fn --header "X-Trace: abc" -o json

Trigger now on the Triggers tab sends one plain POST to the function and shows the status code and duration. These runs carry .

A paused function answers . See Functions overview, under Monthly budget and pausing.

Cron triggers

A cron trigger calls the function on a UTC schedule. Each firing is an ordinary request: it is metered as a run and wakes the function from zero. Triggers do not fire while the function is paused.

Add a trigger

  1. Open the Triggers tab and click Add trigger.
  2. Pick a Frequency: Every few minutes (1, 2, 5, 10, 15, 20, or 30), Hourly, Daily, Weekly, or Monthly (days 1 to 28). For any other schedule, edit the five cron fields directly; ranges, lists, and steps work, and the frequency shows Custom schedule.
  3. Set On failure to No retries, 1 retry, or 2 retries.
  4. Optionally add a description, then save.

A function can have up to 10 triggers.

Manage triggers

Each row shows the schedule, description, and last run with its result. The row has inline Edit, Pause (or Enable on a paused trigger), and Delete buttons. A paused trigger stops firing.

To fire one specific trigger now, including a paused one, run . The run updates the row's last-run fields.

synteq function cron add "*/15 * * * *" --description "poll upstream"
synteq function cron list
synteq function cron update <id> --schedule "0 */6 * * *" --retries 1
synteq function cron update <id> --disable
synteq function cron run <id>
synteq function cron rm <id>

Quote the schedule so the shell does not expand the stars.

Delivery

The scheduler runs once a minute and fires each enabled trigger whose schedule matched a minute since it last ran. After an outage it catches up at most 60 minutes, firing each trigger once rather than every missed slot.

Each firing is a POST to with these headers:

HeaderDescription
The trigger's id. Use it to branch when one function serves several schedules.
Firing time in Unix seconds.
Synteq's own signature over the id and timestamp. You do not need to verify it.

The scheduler waits for the run, up to the function's Timeout. A run that returns a 5xx, times out, or fails to connect is retried per On failure, 10 seconds apart. A 4xx is not retried.

Delivery is at least once. A firing is recorded after the request completes, so a crash in between can fire the same minute again. Make scheduled handlers safe to run twice.

Logs

The Logs tab records every run.

PanelDescription
HealthShare of successful runs over 7 days, with a day calendar. Failures and timeouts count against it. No runs shows no score.
UsageInvocations over the chosen range, split by Success, Failed, and Timed out, plus GB-seconds and the amount accrued this period.
InvocationsRuns over the chosen range, coloured by status. Hover a bar to see which builds served it.

Each run row shows start time, duration, status code, and release. Expand a row to see:

  • Log lines from stdout and stderr, up to the last 500, with a marker when lines were dropped.
  • Outbound HTTP calls with status and duration, up to the last 50.
  • The error text for a failed run, and the request id.

Log lines and outbound calls are captured for plain handlers only. Dockerfile functions show run records without them.

Filter by build or date range. Search matches request ids, build numbers, and log output. A function with no traffic has an empty log.

synteq function logs                  # recent runs
synteq function logs --lines          # with output and outbound calls
synteq function logs --status failed --release 3
synteq function logs --follow

Versions and rollback

Every deploy that reaches the cluster becomes a numbered release. The Versions tab lists them newest first, marks the live one, and shows who deployed it, when, and how its runs went.

  • Open a release to see its files and compare them with the live version or the editor's working copy.
  • Roll back redeploys an earlier release's code and runtime image as a new release. History stays complete, so you can roll forward the same way.
  • Before a new release goes live, Synteq starts one instance of it and checks that the handler loads. A handler that cannot load, because an import fails or a dependency is missing a system library, is marked Health failed and the previous release keeps serving. Open the failed release for Why it failed: the error and the last lines your handler printed.
  • Failed builds stay listed with their build log.

Rollback works on active and paused functions only.

synteq function releases
synteq function rollback --to 3        # --yes skips the prompt

Custom domains

  1. On the Domains tab, click + Custom Domain and enter a subdomain () or bare domain ().
  2. Create the two records the tab shows at your DNS provider: Record Value TXT at The ownership token. CNAME (subdomain) or A (bare domain) The function's hostname, or the platform address. CNAME-flattening providers work either way.
  3. Click Revalidate once the records are published.

Each domain shows two statuses. Verification reads Waiting for Verification until the records check out, then Verified. The certificate reads Issuing until it is ready, then Live. A failed check names the wrong record. A domain can be verified on one workload at a time; delete it from the old one to move it.

Billing

The Billing tab holds the function's plan and this period's costs. Plan types, the at-limit options, and the monthly budget are in Functions overview, under Plans.

Choose a plan

Select a plan in the catalog to attach it. Without a payment method, the tab links to billing. You can change plans mid-period; the period and its usage carry over.

For Choose your runs, a slider sets the monthly quantity and prices it live. The quantity and price are fixed for that attachment; later rate changes do not reprice it.

This period

The panel shows the period start, runs against the allowance, overage runs and amount, and the projected amount at renewal. Plans that meter compute show GB-seconds and vCPU-seconds under Compute this period, each with an included amount and overage.

Credits

On a credits plan the balance is a number of runs. Buy a quantity and it is charged to your default payment method. Credits appear once the payment settles; until then the tab shows it as pending. A monthly free grant is added when the plan includes one.

Auto-reload buys the quantity you set whenever the balance drops below your threshold, charged to the same payment method.

History

The History panel lists the function's invoices. See Paying an invoice.

Pause or delete a function

Both live in Settings → Danger zone, as two separate actions.

Pause function stops it without removing anything: requests return 429, cron triggers stop firing, and nothing is billed while it is paused. Resume function brings it back as it was. A budget or plan-limit pause is lifted by raising the budget or changing the plan, not from here.

Delete function is available once the function has been paused for 14 days; until then the button is disabled and its tooltip names the date. Deleting removes the code, versions and logs. The hostname is held for a period before anyone else can claim it. Run history and invoices stay on the organization's billing pages. A deleted function cannot be restored.

asks you to type the name and unlinks any linked directory. skips retyping the name, but your password is still required, so the command needs an interactive terminal. It is refused with the date until the function has been paused for 14 days.

What next?

  • Functions overview: scaling, cold starts, metering, plans, and limits.
  • Writing and deploying a function: the handler contract and deploy paths.
  • CLI reference: every command.

Was this helpful?