# Payoff — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search through 177,000+ structured financial products with advanced filtering to find Capital Protection, Yield Enhancement, Participation, Credit Risk, and Leverage instruments that match your criteria. Get comprehensive product details including terms, market data, key figures, and underlying instrument information for informed investment decisions.

**Category:** Finance & Markets | **Website:** [www.payoff.ch/en/productfinder](https://www.payoff.ch/en/productfinder) | **Docs:** [parse.bot/marketplace/3d0e43e3-fac1-45bd-bc4b-75c0975f18cc/payoff-ch-api](https://parse.bot/marketplace/3d0e43e3-fac1-45bd-bc4b-75c0975f18cc/payoff-ch-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-payoff-ch-api-3d0e43e3/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_filter_options

Retrieve all available filter options with live product counts. Returns categories, subcategories, exchanges, asset classes, currencies, issuers, guarantors, maturities, and callable/underlying filters. Each filter entry includes a ref code, display name, and current product count. Useful for discovering valid filter values for search_products or building filter UIs.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `language` | string | No | Language code. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-payoff-ch-api-3d0e43e3/get_filter_options \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"language":"<string>"}'
```

### get_product_detail

Retrieve comprehensive detail for a single structured product by ISIN. Returns basic info, terms, market data, key figures, underlying instruments, similar products, and events. The ISIN must be an active product obtainable from search_products. Returns stale_input with kind 'input_not_found' if the ISIN does not exist or has been delisted.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `isin` | string | Yes | ISIN code of the structured product (e.g., 'CH1474813578'). Must be an active ISIN obtainable from search_products results. |
| `language` | string | No | Language code (accepted but product data is returned in English). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-payoff-ch-api-3d0e43e3/get_product_detail \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"isin":"<string>","language":"<string>"}'
```

### search_products

Full-text and filter-based search across all structured products. Returns 20 products per page with pagination metadata. Page 1 additionally includes filter counters showing how many products match each filter value. Paginates via integer page counter. Each product summary exposes ISIN for drill-down into full detail via get_product_detail.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `asset_classes` | string | No | Asset class filter. |
| `callables` | string | No | Callable filter. |
| `categories` | string | No | Category filter ref code. |
| `currencies` | string | No | Currency filter code (e.g., 'CHF', 'EUR', 'USD'). Use get_filter_options for all codes. |
| `exchanges` | string | No | Exchange filter ref code. |
| `guarantors` | string | No | Guarantor ref code. Use get_filter_options for all codes. |
| `issuers` | string | No | Issuer ref code (e.g., 'UBS', 'VT' for Vontobel, 'BAER' for Julius Bär). Use get_filter_options for all codes. |
| `language` | string | No | Language code. |
| `maturities` | string | No | Maturity filter. |
| `multiple_underlyings` | string | No | Single or multiple underlyings: '0' for single, '1' for multiple. |
| `page` | integer | No | Page number (1-based). 20 products per page. |
| `sort_by` | string | No | Sort field (e.g., 'lastTradingDate'). |
| `sort_dir` | string | No | Sort direction. |
| `underlying` | string | No | Underlying search term (e.g., 'Nestle', 'SMI'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-payoff-ch-api-3d0e43e3/search_products \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asset_classes":"<string>","callables":"<string>","categories":"<string>","currencies":"<string>","exchanges":"<string>","guarantors":"<string>","issuers":"<string>","language":"<string>","maturities":"<string>","multiple_underlyings":"<string>","page":"<integer>","sort_by":"<string>","sort_dir":"<string>","underlying":"<string>"}'
```
