abto

AI gateway · outcome analytics solution

Did your AI spend actually pay off?

abto routes your LLM traffic in one place, records the cost and latency of every call, and connects which model or prompt actually drives conversion.

DOM events + abto gateway → analysis

$0.012/req9.2%전환

What you spentmeasured as outcome

  • gpt-4o6.8%
  • claude-3.74.1%
  • gemini-2.09.2%pick

Cost −37% · evidence for model choice

Cost and outcome

User behavior and LLM cost, on one screen

abto joins the user actions captured as DOM events with the call costs recorded at the gateway, then shows which model actually drives conversion.

USER · DOM EVENTSloggingBuy nowCartclick → checkout_suggestabto · GATEWAYgpt-4o$0.004claude-3.7$0.012gemini-2.0$0.003abto모델 선택 근거성과 측정MODEL$/req전환gpt-4o$0.0046.8%claude-3.7$0.0124.1%gemini-2.0$0.0039.2%비용−37% ▼전환+9.2% ▲

DROP-IN

Keep your SDK. Change one line.

It's OpenAI-compatible, so there's no call code to rewrite. Pass identifiers as headers — the gateway reads and consumes them, and never forwards them to the vendor.

chat.tsOpenAI SDK
import OpenAI from "openai"; const client = new OpenAI({  baseURL: "https://gw.abto.dev/v1", // the only line you change  apiKey: process.env.ABTO_API_KEY,}); await client.chat.completions.create(  { model, messages },  { headers: { // gateway reads & strips these — never sent to the vendor      "x-abto-user-id": user.id,      "x-abto-node-id": "checkout_suggest",  } },);
One-line swap

Point baseURL at the abto gateway. The rest of your call stays exactly the same.

Carried as headers

Flow user_id and node_id through x-abto-user-id / x-abto-node-id; the gateway consumes them.

Keyed by API key

Tenant is identified automatically from the API key — nothing to configure.

Tokens and call counts won't tell you what paid off

The question that matters is elsewhere: which user behavior created which LLM cost, and did that cost come back as revenue and conversion? abto goes beyond ‘who clicked what’ and closes the broken link between spend and outcome.

How it works

From one request to a measurable outcome

  1. 01

    RequestStandardize

    Accept an OpenAI-compatible request and convert it to the internal canonical form.

    inbound → canonical

  2. 02

    RouteAssign

    Sticky assignment per user and node routes across OpenAI, Anthropic, and Gemini.

    sticky · user·node

  3. 03

    ObserveRecord

    Cost, latency, and outcome are recorded per call. Delivery is async, so responses never slow down.

    OpenTelemetry · async

  4. 04

    AttributeConnect

    User behavior → LLM cost → real conversion, joined in a single line.

    behavior → cost → conversion

These three are enough

01

AI gateway & routing

One OpenAI-compatible endpoint moves across OpenAI, Anthropic, and Gemini. Sticky assignment per user and node keeps your experiments steady.

02

Per-call observability

On top of OpenTelemetry, abto records the cost, latency, and outcome of every call. Delivery is async, so it never touches your response time.

03

Analytics that reach conversion

Connect user behavior → LLM cost → real outcomes in a single line. Prove with data which model or prompt drives conversion.

  • Raw prompts and responses aren't collected by default — hash / metadata only
  • Go-based stateless gateway
  • A lightweight SDK you add with one npm line

Be the first to try it

Join the reservation list and we'll tell you the moment we launch.

Ready to prove your AI spend pays off?

Contact ·[email protected]