# Jomashop — 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.

> Browse and search a watch store catalog to discover products by category, brand, or sale status, view detailed product information and customer reviews, and explore new arrivals and navigation options. Find the perfect timepiece with access to watch brands, pricing details, and curated collections.

**Category:** E-commerce | **Website:** [jomashop.com/](https://jomashop.com/) | **Docs:** [parse.bot/marketplace/9ed2577a-9fdc-4d8f-b50b-90a4630fc6c2/jomashop-com-api](https://parse.bot/marketplace/9ed2577a-9fdc-4d8f-b50b-90a4630fc6c2/jomashop-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/jomashop/`
**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 brand products

Fetch products for a specific brand in a category. Uses the same underlying category query with a brand filter applied. Returns category data with flat items array.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `brand_name` | string | Yes | Brand name exactly as listed (e.g. 'Rolex', 'Omega', 'Tag Heuer'). Use get_watch_brands to discover valid brand names. |
| `category_id` | integer | No | Category ID to filter within. |
| `page` | integer | No | Page number. |

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

### Get category products

Browse products by category with pagination, sorting, and filtering. Returns category metadata with a flat items array of product listings, total_count, current_page, and total_pages.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category_id` | integer | No | Category ID (e.g. 871 for Watches, 10709 for Sale). |
| `min_rating` | number | No | Minimum customer rating filter (e.g. 4.0). |
| `page` | integer | No | Current page number. |
| `page_size` | integer | No | Number of products per page. |
| `sort_by` | string | No | Sort criteria. |

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

### Get navigation menu

Retrieve the full category navigation menu tree. Returns an object with items array of top-level categories with their metadata and HTML menu content.

**Estimated cost:** Metered

_No parameters required._

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

### Get new arrivals

Fetch recently added products by sorting the category by news_from_date. Returns category data with flat items array sorted by newest first.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category_id` | integer | No | Category ID to browse new arrivals within. |
| `page` | integer | No | Page number. |

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

### Get product details

Fetch detailed product information using the product URL key (slug). Returns stale_input with kind input_not_found if the url_key does not match any product.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url_key` | string | Yes | Product URL key (slug) from the product page URL, e.g. 'rolex-submariner-automatic-chronometer-black-dial-mens-watch-126610lnbkso' or 'omega-watch-om32630405001002'. |

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

### Get product reviews

Fetch customer reviews for a specific product via Yotpo. Returns reviews array, bottomline statistics, and pagination info.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for reviews. |
| `per_page` | integer | No | Number of reviews per page (server may override this value). |
| `product_id` | string | Yes | Product ID (domain_key from Yotpo, e.g. '561875'). Can be found in search_products results under payload.metadata.product_id or from get_product_details id field. |

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

### Get sale products

Fetch products from the Sale category (ID 10709). Returns category data with flat items array of sale items.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number. |

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

### Get watch brands

Retrieve a list of featured watch brands available on the site.

**Estimated cost:** Metered

_No parameters required._

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

### Search products

Search for products using keywords. Returns paginated results with product details including price, brand, and image.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Max number of results to return. |
| `query` | string | Yes | Search keyword (e.g. 'Rolex', 'luxury automatic watch'). |
| `skip` | integer | No | Offset for results (pagination). |

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

## 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.