# Public API

The Tesseract Public API is the reporting and vault-state surface for integrators. It exposes vault discovery, transaction history, and performance data, and accepts the EIP‑712 signed request that assigns a strategy to a freshly deployed vault.

### Base URL

```
https://api.vault.tesseract.fi
```

### Interactive reference

Full request / response schemas, parameters, and live "try it" UI are published as Swagger:

🔗 [**https://api.vault.tesseract.fi/public/docs**](https://api.vault.tesseract.fi/public/docs)

Schemas are the source of truth — this page is a navigational summary, not a replacement.

### What you'll find there

| Purpose                                                           | Endpoint family                          |
| ----------------------------------------------------------------- | ---------------------------------------- |
| List vaults for one or more client wallet addresses               | `POST /vaults/query/by-client-addresses` |
| Get a single vault's detail (asset, shares, fees, status)         | `GET /vaults/{vault}`                    |
| List transactions for a vault (deposits, withdrawals, rebalances) | `GET /vaults/{vault}/transactions`       |
| Assign a strategy to a deployed vault (EIP‑712 signed)            | `PUT /vaults/{vault}/strategy`           |
| Performance time-series (APY/APR, TVL, share price)               | `GET /vaults/{vault}/performance`        |

Authentication is not required for read endpoints — vault addresses themselves act as the key. The strategy-assignment endpoint validates an EIP‑712 signature against the vault's owner; see below for the schema.

**Performance snapshots.** The `performance` endpoint exposes hourly snapshots — share price and TVL are simulated against current on-chain state and refreshed each hour, so they reflect yield accrued between vault transactions (unlike a bare on-chain read, which only updates when the vault is touched).

### Strategy assignment (EIP‑712)

Strategy selection is off-chain metadata signed by the vault owner and submitted to `PUT /vaults/{vault}/strategy`. There is no on-chain transaction and no gas cost for the signer.

**Domain:**

```json
{
  "name": "Tesseract Public API",
  "version": "1",
  "chainId": 1
}
```

**Types:**

```json
{
  "SetStrategy": [
    { "name": "vaultAddress", "type": "address" },
    { "name": "strategyId",   "type": "string"  },
    { "name": "timestamp",    "type": "uint256" }
  ]
}
```

**Message:**

```json
{
  "vaultAddress": "0x...",
  "strategyId":   "<uuid>",
  "timestamp":    1716000000
}
```

`timestamp` is Unix seconds and must be recent (signatures expire after a short window — send within a few minutes of signing). Strategy changes may be restricted once a vault is actively managed; if your submission is rejected, contact Tesseract to arrange a managed transition.

A viem example — and the full REST call — is shown in the [Integration Guide](/dedicated-client-vaults/integration-guide/scenario-a/strategy-assignment.md).

### Versioning and changes

The API is versioned via its base URL. Breaking changes are announced in the [changelog](/dedicated-client-vaults/reference/public-api.md) and backwards-compatible additions are rolled out without notice — favour lenient parsing of response bodies.
