> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trylath.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Every Lath operation is POST https://platform.trylath.com/<operation name with dots replaced by slashes>, with a JSON body and `Authorization: Bearer <key>`. `email.send` is POST /email/send.
> Branch on `error.code`, never on `error.message`. Every refusal also carries `error.fix`, which names the next step.
> Send an `Idempotency-Key` header on any operation that is not retry-safe, so a retry cannot run it twice.
> A `lath_test_` key emails only the account's own members and sends no SMS; a `lath_live_` key reaches real recipients and is billed.
> The OpenAPI document, generated from the same registry as the routes, is at https://platform.trylath.com/openapi.json.

# Lath documentation

> Auth, email and SMS behind one API, one key and one customer record.

Three products that normally arrive as three vendors, three dashboards and three customer records: **authentication**, **transactional and marketing email**, and **SMS**. One key reaches all of them, and one contact is one person across all three.

All 206 operations are reachable on every surface — a REST call, an MCP tool an agent can discover, a CLI command, a typed SDK method, and a screen in the dashboard. Nothing is dashboard-only, which is the point: an agent can do anything a person can.

## Start here

<Columns cols={2}>
  <Card title="Quickstart" icon="rocket" href="/get-started/quickstart">
    From no account to a sent message, in three calls.
  </Card>

  <Card title="Send your first email" icon="mail" href="/get-started/send-email">
    One call, from an address that works before you verify a domain.
  </Card>

  <Card title="Sign in your first user" icon="key-round" href="/get-started/sign-in-a-user">
    A code to an address, a session back, and a user that did not exist before.
  </Card>

  <Card title="Send your first text" icon="message-square" href="/get-started/send-sms">
    One call, what segments cost, and why the first one is probably blocked.
  </Card>
</Columns>

## Build with your stack

<Columns cols={2}>
  <Card title="Next.js" icon="code" href="/frameworks/nextjs">
    Server-side sends, sign-in components, and a protected route handler.
  </Card>

  <Card title="Express and Node" icon="server" href="/frameworks/express">
    One middleware, and req.lath is the signed-in user.
  </Card>

  <Card title="Hono, Workers and Bun" icon="zap" href="/frameworks/hono">
    The edge runtimes, and the one import that needs Node.
  </Card>

  <Card title="Any other language" icon="globe" href="/frameworks/other-languages">
    There is no SDK for yours yet. The HTTP call is four lines.
  </Card>
</Columns>

## Every surface

The same operations, whichever way you reach them.

<Columns cols={3}>
  <Card title="REST" icon="network" href="/surfaces/rest">
    One POST per operation, and an OpenAPI document generated from the same definitions.
  </Card>

  <Card title="MCP" icon="bot" href="/surfaces/mcp">
    Every operation is a tool, with the input schema and the result schema an agent needs before it calls.
  </Card>

  <Card title="CLI" icon="terminal" href="/surfaces/cli">
    Generated, so a new operation is a new command the day it exists.
  </Card>

  <Card title="SDK" icon="braces" href="/surfaces/sdk">
    Typed in both directions: the input it takes and the result it returns.
  </Card>

  <Card title="Dashboard" icon="layout-dashboard" href="/surfaces/dashboard">
    A screen for every operation you'd do by hand, built on the same API a customer uses.
  </Card>

  <Card title="For agents" icon="sparkles" href="/surfaces/agents">
    Hand the work to Claude Code, Codex or Cursor — they operate Lath directly.
  </Card>
</Columns>

## Before you send to anybody real

<Columns cols={3}>
  <Card title="Consent and suppression" icon="shield-check" href="/platform/consent">
    The one gate every send passes, why email and SMS answer differently, and how to prove opt-in.
  </Card>

  <Card title="Spending caps" icon="gauge" href="/platform/spending-caps">
    How a cap is enforced, and what a send does when it would cross one.
  </Card>

  <Card title="Domains and deliverability" icon="mail-check" href="/sending/deliverability">
    The five DNS records, what each is for, and what actually decides whether mail arrives.
  </Card>
</Columns>

## Reference

<Columns cols={3}>
  <Card title="API reference" icon="book-open" href="/api-reference">
    Every operation — 206 of them — with its schema and a request you can send.
  </Card>

  <Card title="Webhook events" icon="radio" href="/reference/webhook-events">
    158 events across 7 products, and the wildcard for each.
  </Card>

  <Card title="Error codes" icon="circle-alert" href="/reference/error-codes">
    142 refusals, by HTTP status, each carrying the fix.
  </Card>
</Columns>
