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

# Client capability matrix

> Supported SDK and CLI operations, with explicit boundaries.

# SDK and CLI coverage

| API capability | TypeScript SDK | CLI |
| - | - | - |
| Autonomous registration | `agent.register` | `agent register` |
| Human-email signup / OTP | `agent.signUp`, `agent.verify` | `agent sign-up`, `agent verify` |
| Inbox create/read/update/delete | `inboxes` | `inboxes` |
| Thread list/search/read | `threads` | `threads list --q`, `threads get` |
| Thread labels/delete | `threads.update`, `threads.remove` | API/SDK only |
| Email send/reply/read | `emails` | `emails send`, `reply`, `list` |
| Email forward/reply-all/raw/labels/delete | `emails` | API/SDK only |
| Attachments upload with send | `attachments.fromBytes`, `emails.send` | `emails send --attachment LOCAL` |
| Attachments download | `attachments.download` (returns Response) | `attachments download --output LOCAL` |
| Draft create/list/send | `drafts` | `drafts create`, `list`, `send` |
| Draft update/delete/schedule | `drafts.update`, `drafts.remove` | API/SDK only |
| Domain CRUD/verification | `domains` | list/create/verify/delete |
| Webhooks CRUD | `webhooks` | list/create/delete |
| Webhook deliveries/resend | `webhooks.deliveries`, `webhooks.resend` | `webhooks deliveries`, `resend` |
| Webhook verification | `verifySignature(secret, rawBody, headers)` | Receiver code required |
| Phone inventory/purchase/release/activity | `numbers` | `numbers` |
| SMS | `sms` | send/conversations |
| Voice create/read/control | `calls`, `calls.action` | `calls create`, `list`, `get`, `action` |
| Container create/list/stop/resume | `containers` | `containers` |
| Container runs/files/ports/shell | `containers` | run/runs/upload/download/publish/ports/shell |
| Proxy provision/details/top-up | `proxies` | `proxies` |
| Projects and keys | `projects`, `apiKeys` | `projects`, `keys` |
| Metrics and allow/block lists | `metrics`, `lists` | API/SDK only |
| Project/inbox-scoped endpoint twins | Selected SDK methods | Use direct API for scope twins |
| Capabilities / Connections | `capabilities.get`, `connections` | `capabilities`, `connections` |
| Browser sessions | `browsers.list`, `create`, `connect`, `end` | `browsers list`, `create`, `connect`, `end` |
| Subscription billing | `billing.status`, `checkout`, `portal` | `billing status`, `checkout`, `portal` |

This matrix describes checked-in clients, not a promise of full API parity.
Collection responses expose `next_page_token` where the API supplies it; pass
`page_token` on SDK lists that accept queries. New CLI container runs/lists and
webhook deliveries accept `--page-token` and `--limit`.

## Attachments and thread shape

Thread detail uses `messages`, matching the wire serializer; `emails` is not a
thread field. Attachments are metadata on messages, threads and drafts. Upload
bytes as inline base64 or a URL in a send/create-draft request; the API has no
standalone attachment upload route. Download preserves the binary response:

```ts theme={null}
const attachment = lupin.attachments.fromBytes("notes.txt", new TextEncoder().encode("hello"), "text/plain");
await lupin.emails.send(inboxId, { to: ["you@example.com"], text: "Notes", attachments: [attachment] });
const bytes = await (await lupin.attachments.download(inboxId, "threads", threadId, attachmentId)).arrayBuffer();
```

Container stop is the exposed lifecycle control; container deletion and public
port revocation have no SDK method because the current backend exposes neither.
Provider configuration is required for paid resources; see [Phone](https://docs.lupin.sh/phone.md) and
[Containers](https://docs.lupin.sh/containers.md). Provider acceptance, queued mail and recipient delivery
are distinct states. Inspect returned resource status before announcing success.

Connections use hosted provider authorization, server-verified account status, retained old-account cleanup on reconnect, and revoke-before-delete on disconnect. See [Connections](https://docs.lupin.sh/platform/connections.md) and [Billing](https://docs.lupin.sh/platform/billing.md) for provider setup and recovery.

Browser sessions use a native Cloudflare Browser Run `BROWSER` binding; an unconfigured workspace keeps creation disabled. Session state lasts until the session ends, with a 10-minute inactivity timeout and five-minute access links. Cross-session profiles and custom proxy routing are not exposed. See [Browsers](https://docs.lupin.sh/build/browsers.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.