# Market identifiers

> How marketUid, lender ids and chain ids are formatted, and how to look them up.

Source: https://docs.1delta.io/market-identifiers/

---

Almost every endpoint addresses a lending market with a **`marketUid`**. Getting
this string right is most of the work of integrating.

## Format

```
lender:chainId:address
```

```
AAVE_V3:1:0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
│       │ └─ the underlying asset, not the receipt token
│       └─── EVM chain id, decimal
└─────────── protocol identifier, upper snake case
```

| Segment | Rules |
| --- | --- |
| `lender` | Upper snake case, from the `LenderId` set. `AAVE_V3`, not `aave-v3`, `Aave V3`, or `aaveV3`. |
| `chainId` | Decimal chain id. `1` for Ethereum, `8453` for Base. |
| `address` | Case-insensitive hex. Responses return it lowercase; you may send it checksummed. |

### Which address?

The last segment is **not** always the token users hold. It depends on the
protocol's own model:

| Lender family | `address` is |
| --- | --- |
| Aave V2/V3/V4, Morpho, Compound V3 | the underlying asset (e.g. WETH) |
| Compound V2 family | the cToken |
| Init Capital | the pool |

Do not construct a `marketUid` by hand from a token address and hope. Read it
from a `/v1/data/lending/pools` response, where every item carries its own
`marketUid` verbatim.

## Lender ids

185 protocol identifiers are supported. The canonical list is available three
ways:

```bash
curl "https://portal.1delta.io/v1/data/lender-ids"
```

```json
{
  "success": true,
  "data": ["AAVE_V3", "AAVE_V3_PRIME", "AAVE_V2", "SPARK", "ZEROLEND", "..."],
  "actions": null
}
```

It is also published as the **`LenderId`** schema in
[`openapi.json`](https://docs.1delta.io/openapi.json), so a generated client
gets it as a typed enum, and listed in full in
[`llms-full.txt`](https://docs.1delta.io/llms-full.txt).

Many protocols have several deployments with distinct ids — `AAVE_V3`,
`AAVE_V3_PRIME`, `AAVE_V3_ETHER_FI` and `AAVE_V3_HORIZON` are four separate
markets with different rates and risk parameters. Treat them as unrelated.

## Chain ids

47 chains are supported. Chain ids are sent and returned as **decimal strings**,
not numbers — `"1"`, not `1`.

```bash
curl "https://portal.1delta.io/v1/data/chains"
```

```json
{
  "success": true,
  "data": {
    "items": [
      { "chainId": "1", "name": "Ethereum" },
      { "chainId": "10", "name": "OP" },
      { "chainId": "8453", "name": "Base" }
    ]
  },
  "actions": null
}
```

Published as the **`ChainId`** schema in the spec, with each value's chain name
attached.

## Amounts

Every amount crossing the API is a **raw integer in the token's smallest unit,
encoded as a string**:

| Intent | Send |
| --- | --- |
| 1 WETH (18 decimals) | `"1000000000000000000"` |
| 10 USDC (6 decimals) | `"10000000"` |
| 0.5 WBTC (8 decimals) | `"50000000"` |

Decimals come from the market data (`decimals` on the asset). Never send a
human-readable decimal string — `"1.0"` is not a valid amount.

Rates, by contrast, are returned as human-scaled **percentages**
(`1.416…` = 1.42% APR), and ratios such as `utilization` and `ltv` are fractions
between 0 and 1.

## Basis points

`slippage` and similar tolerances are in **basis points**:

| Value | Meaning |
| --- | --- |
| `1` | 0.01% |
| `50` | 0.5% |
| `100` | 1% |

Passing `0.5` expecting half a percent gives you 0.005% and a reverting
transaction.

## Related

- [Quickstart](https://docs.1delta.io/quickstart/) — the four-call integration path
- [Errors & retries](https://docs.1delta.io/errors/)
