# Hasaki — 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 and browse products from Hasaki.vn's beauty and skincare catalog, including detailed product information, customer reviews, brand listings, and special flash deals. Discover new arrivals, best sellers, and get autocomplete suggestions to find exactly what you're looking for.

**Category:** E-commerce | **Website:** [hasaki.vn/](https://hasaki.vn/) | **Docs:** [parse.bot/marketplace/e5fe21cb-7f91-4855-9155-6c7d2eac6c89/hasaki-vn-api](https://parse.bot/marketplace/e5fe21cb-7f91-4855-9155-6c7d2eac6c89/hasaki-vn-api)

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

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/hasaki/`
**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 best sellers

Retrieve best-selling products sorted by sales volume across all categories or within a specific category. Returns the same product structure as category listings with filter options.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `size` | integer | No | Number of results per page. |
| `slug` | string | No | Category slug to filter best sellers by category (e.g. 'cham-soc-da-mat-c4'). Omitting returns all categories. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/hasaki/get-best-sellers \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","size":"<integer>","slug":"<string>"}'
```

### Get brand products

Retrieve paginated products for a specific brand by its URL slug. Returns brand info, filter options, and products sorted by the chosen order.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `size` | integer | No | Number of results per page. |
| `slug` | string | Yes | Brand slug from the URL path (e.g. 'cerave', 'la-roche-posay', 'cocoon'). |
| `sort` | string | No | Sort order for products. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/hasaki/get-brand-products \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","size":"<integer>","slug":"<string>","sort":"<string>"}'
```

### Get brands list

Retrieve the full list of all brands available on Hasaki, organized alphabetically by first letter. Each brand includes id, name, URL, logo image, and cover image.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/hasaki/get-brands-list \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### Get categories

Retrieve the full hierarchical category tree including nested subcategories, navigation menu links, and banners. Categories are organized in a multi-level tree with URL paths suitable for use with get_category_products.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/hasaki/get-categories \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### Get category products

Retrieve paginated products from a specific category by its URL slug. Supports sorting by position (newest), top sales, or price. Returns filter options and brand highlights for the category.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `size` | integer | No | Number of results per page. |
| `slug` | string | Yes | Category slug from the URL path (e.g. 'cham-soc-da-mat-c4', 'chong-nang-da-mat-c11'). |
| `sort` | string | No | Sort order for products. |

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

### Get flash deals

Retrieve current Flash Deal (Hasaki Deals) products with discount information and countdown timers. Deals rotate by time period key.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `key` | string | No | Flash deal period key (e.g. 'deal08'). |
| `page` | integer | No | Page number for pagination. |
| `size` | integer | No | Number of results per page. |

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

### Get new arrivals

Retrieve new arrival products sorted by newest first across all categories or within a specific category. Returns the same product structure as category listings with filter options.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `size` | integer | No | Number of results per page. |
| `slug` | string | No | Category slug to filter new arrivals by category (e.g. 'cham-soc-da-mat-c4'). Omitting returns all categories. |

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

### Get product detail

Fetch full product detail including descriptions, image gallery, variants, pricing, deal info, promotions, and related products. Returns structured content blocks.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `product_id` | string | Yes | Numeric product ID (e.g. '86167', '102959'). |

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

### Get product qa

Retrieve paginated product Q&A (Hỏi đáp) section including customer questions and staff replies. Each comment may have sub_comments containing the official response.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `product_id` | string | Yes | Numeric product ID (e.g. '86167'). |
| `size` | integer | No | Number of Q&A items per page. |

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

### Get product reviews

Retrieve paginated customer reviews for a product. Includes rating distribution (star breakdown), sort options, and individual reviews with user info, content, images, and staff responses.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `filter` | string | No | Filter reviews by star rating or image presence. |
| `page` | integer | No | Page number for pagination. |
| `product_id` | string | Yes | Numeric product ID (e.g. '86167'). |
| `size` | integer | No | Number of reviews per page. |
| `sort` | string | No | Sort order for reviews. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/hasaki/get-product-reviews \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"filter":"<string>","page":"<integer>","product_id":"<string>","size":"<integer>","sort":"<string>"}'
```

### Get search autocomplete

Retrieve search autocomplete suggestions for a partial query. Returns keyword matches, category suggestions, product previews with prices, and brand matches.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Partial search query (e.g. 'kem', 'serum'). |

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

### Search products

Full-text search over Hasaki's product catalog by keyword. Returns paginated product results sorted by relevance/sales with metadata including total count and available sort/filter options. Each product includes pricing, brand, rating, and deal info.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `query` | string | Yes | Search keyword (e.g. 'kem chống nắng', 'serum vitamin c'). |
| `size` | integer | No | Number of results per page. |

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

## Next steps

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