# Sayweee — Wrapped API

> **You are on:** `https://api.beta.paywithlocus.com/api` | [llms.txt](https://beta.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 and browse Asian grocery products on SayWeee.com, including detailed product information, category filtering by deals, bestsellers, and new arrivals. Find exactly what you need from their supermarket inventory with powerful search and curated shopping collections.

**Category:** Food & Dining | **Website:** [sayweee.com/](https://sayweee.com/) | **Docs:** [parse.bot/marketplace/e8fd6add-9c0e-406a-bf20-4708bbfc40a8/sayweee-com-api](https://parse.bot/marketplace/e8fd6add-9c0e-406a-bf20-4708bbfc40a8/sayweee-com-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.beta.paywithlocus.com/api/wrapped/credits/sayweee/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get bestsellers

Get bestselling/trending products. Equivalent to get_category_products with category='trending'. Returns paginated results with product details.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Max number of products to return |
| `offset` | integer | No | Offset for pagination |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/sayweee/get-bestsellers \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","offset":"<integer>"}'
```

### Get category products

Browse products within a specific category. Returns paginated results with product details including discount info. Use offset/limit for pagination.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category` | string | No | Category key: 'new', 'trending', 'meat', 'seafood', 'fruits', 'vegetables', 'sale' |
| `limit` | integer | No | Max number of products to return |
| `offset` | integer | No | Offset for pagination (number of items to skip) |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/sayweee/get-category-products \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"category":"<string>","limit":"<integer>","offset":"<integer>"}'
```

### Get deals

Get current deals and sale products. Equivalent to get_category_products with category='sale'. Returns paginated results with discount info.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Max number of products to return |
| `offset` | integer | No | Offset for pagination |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/sayweee/get-deals \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","offset":"<integer>"}'
```

### Get new arrivals

Get newly arrived products. Equivalent to get_category_products with category='new'. Returns paginated results with product details.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Max number of products to return |
| `offset` | integer | No | Offset for pagination |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/sayweee/get-new-arrivals \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","offset":"<integer>"}'
```

### Get product detail

Fetch detailed information for a single product by its numeric ID. Returns name, price, image URL, and ID. The slug param improves URL accuracy but is optional.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `product_id` | string | Yes | The unique product ID (numeric string from search_products results[*].id) |
| `slug` | string | No | The product slug for URL accuracy (e.g. 'Sekka-Premium-Japanese-Medium-Grain-Rice') |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/sayweee/get-product-detail \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"product_id":"<string>","slug":"<string>"}'
```

### Search products

Full-text search over the SayWeee product catalog by keyword. Returns normalized product summaries (id, name, price, image_url) and a total count. Not paginated; use limit to control result count.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Max number of products to return |
| `query` | string | Yes | Search keyword (e.g. 'rice', 'noodles', 'tofu') |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/sayweee/search-products \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","query":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://beta.paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://beta.paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://beta.paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://beta.paywithlocus.com/agent/index.md): every Locus agent page.