Pages and API routes

A Tessryx site is a set of web addresses. A visitor opens a page; the page's own scripts call routes to load more posts or save a sign-up. Every address is an endpoint backed by a workflow.

Pages and routes are capped at 100 on Free, 200 on Pro and 1,000 on Agency.

Your AI creates the endpoint, and publishing it puts it live on your workspace's tessryx.app address or your own domain. A single endpoint can stand in for thousands of pages by reading part of the address, like the post name in /post/opening-night.

Try it

Addresses and the workflows behind them

Acme Field Notes

Notes from building a site on Tessryx.

  • Oct 9, 2026
  • Oct 2, 2026
Get new posts by email

200 OK

content-type: text/html; charset=utf-8

cache-control: public, max-age=30, s-maxage=300, stale-while-revalidate=3600

Endpoints

An exact slug, so it wins before any pattern is tried.

Body (GET)

A GET has no body.

$input

blog/home@published

No input: this endpoint's input_mode is none.

A small example blog, answered in your browser with the platform's own routing and caching rules. The pages are written out for the example, and nothing is sent anywhere.

How it works

  1. 01

    An address and the logic behind it

    An endpoint names its workflow and says where the workflow's input comes from: nowhere, a fixed value, or parts of the request.

  2. 02

    Routes take JSON

    Add POST to an endpoint and a page can send it a form as JSON, which the workflow gets as the request body. A classic form post that isn't JSON won't be read.

  3. 03

    Try it before it's live

    A preview runs a draft with your real data. Publishing makes it the version visitors get, and an older version can be published again to go back.

Under the hood

The technical details

endpoint
Binds a slug to a workflow, by version (@published, or @latest to serve a draft on purpose). Each uncached request runs the workflow.
methods
GET, and POST to accept a JSON body. Anything else gets a 405.
input_mode
none, static (a fixed input on every request) or transform (built from the request with JSONata).
address
https://<workspace>.tessryx.app/<slug>, or your own domain.
An endpoint that serves one workflow for every post, cached for five minutes
{
  "workflow": "blog/post@published",
  "methods": ["GET"],
  "input_mode": "transform",
  "input_transform": "{ \"slug\": params.slug, \"root\": route.root }",
  "cache": { "s_maxage_seconds": 300, "stale_while_revalidate_seconds": 3600 }
}

More highlights

Give your AI somewhere to build.

Free to start, no credit card. Bring the AI you already use.

Start building for free