Human interfaces for AI agents

Your agent asks you, on your phone, with a receipt.

Give your agent a human interface with one API request. Let someone review, correct or choose, then retrieve their answer as a typed result.

No frontend to build. No signup to try.

How it works

  1. One request creates the interface

    Your agent sends the records to show, the inputs the person may fill and the actions they may take. Sess hosts the page and returns a Session ID and a private human link. A trial create also returns a management credential, once: it is what retrieves the trial result.

  2. They open the link on any phone or desktop, review, correct or choose, and submit. The page is plain HTML with no custom code from anyone, and each answer is bound to the exact revision the person saw.

  3. One typed result for your agent

    Your agent retrieves the answer as typed data, validated against the schema Sess derived from your inputs, with a signed receipt. For a trial, it reads the result with the management credential from the create response.

Run it with curl in a few minutes

One link to share

Your agent makes one private link for one person. They open it on any phone or computer and answer, and your agent carries on with what they chose.

Not yet available Register your agent, share one link, anyone can start it.

Four ways to see it

Start building

With authenticated API access

Your agent publishes the next revision after each answer, and the person answers again on the same link, until your agent completes the Session. Every result and the revision it answered stay retrievable, even after your agent restarts.

Signed webhooks

Each accepted answer can also be pushed to your verified HTTPS endpoint, signed, at least once, with the same body and receipt on every retry.

Both need an API key. Self-service API keys come with developer accounts. Draft — lands with P1 increment 2

An example with synthetic data

An agent has extracted three invoices and is unsure about one amount. It asks a colleague to check them before it continues.

  1. The agent creates a Session with the three invoices, a proposed amount to correct and a list to select from.
  2. The colleague opens the link on a phone, corrects INV-3, selects two invoices to approve and submits.
  3. The agent retrieves the typed result and carries on:
Typed result the agent retrieves
{ "inv_3_amount": 909, "approved": ["INV-1", "INV-3"] }

Sess records the choice; it does not pay the invoice or verify the person’s identity. The invoices, vendors and amounts are invented.

Run this example

How it works: the request your agent sends
Create request body
{
  "interaction": {
    "mode": "interactive",
    "title": "Review three synthetic invoices",
    "description": "Synthetic data. Correct the amount if needed and select the invoices to approve.",
    "source": {
      "kind": "sess_surface",
      "components": [
        { "type": "record", "label": "INV-1", "fields": { "id": "INV-1", "vendor": "Acme", "amount": 120 } },
        { "type": "record", "label": "INV-2", "fields": { "id": "INV-2", "vendor": "Globex", "amount": 75.5 } },
        { "type": "record", "label": "INV-3", "fields": { "id": "INV-3", "vendor": "Initech", "amount": 990 } },
        {
          "type": "field",
          "name": "inv_3_amount",
          "label": "INV-3 amount",
          "required": true,
          "schema": { "type": "number", "minimum": 0, "maximum": 100000 },
          "value": 990
        },
        {
          "type": "field",
          "name": "approved",
          "label": "Invoices to approve",
          "schema": {
            "type": "array",
            "items": { "type": "string", "enum": ["INV-1", "INV-2", "INV-3"] },
            "maxItems": 3
          },
          "value": []
        }
      ]
    },
    "actions": [{ "id": "submit", "label": "Submit review", "intent": "submit" }]
  }
}

What Sess is for, and what it is not

Good fits

  • Review records an agent extracted or proposed before it acts on them.
  • Ask someone outside your agent's chat client to correct values or choose items on their own device.
  • Continue your agent from the typed result, even after it restarted.

Current limits

  • Requests up to 256 KiB; page content up to 128 KiB; up to 100 components, 50 inputs and 5 actions per revision.
  • No file uploads, external media, custom HTML, scripts or styles on Session pages.
  • Anyone holding the link can open the page and answer; Sess does not verify who the person is.
  • Not for irreversible or protected approvals; no notifications are sent to the person.
  • A Node.js SDK is in preview; the MCP server and the OpenClaw plugin are not published yet.

All limits

Why not build it yourself?

  • No review frontend to build, host, secure and keep accessible.
  • Answers stay bound to the revision the person saw, even if your agent updates the page while they review.
  • A small, published HTTP contract and signed receipts instead of a custom handoff for each agent.

Pricing, limits and help