# Fortnine — 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 FortNine.ca's motorcycle and powersports products, compare variants and prices, read customer reviews, and check compatibility with a vehicle make and model. Browse brands, explore categories, and access detailed product information all in one place.

**Category:** E-commerce | **Website:** [fortnine.ca/](https://fortnine.ca/) | **Docs:** [parse.bot/marketplace/bc6e760d-7073-4b01-b362-c6c4f0003add/fortnine-ca-api](https://parse.bot/marketplace/bc6e760d-7073-4b01-b362-c6c4f0003add/fortnine-ca-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/fortnine/`
**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 category products

List products within a category identified by its URL slug. Returns paginated product listings with 1-indexed pages. Category slugs use hyphenated format matching the site's URL structure.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number (1-indexed) |
| `slug` | string | Yes | Category URL slug in hyphenated format (e.g. 'motorcycle-riding-gear', 'motorcycle-helmets', 'motorcycle-headwear') |

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

### Get product detail

Fetch full product information by URL slug including marketing description, feature bullet points, and specifications grouped by section. The product_id field can be used with get_product_reviews.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | Product URL slug (e.g. 'shoei-rf-1400-solid-helmet', 'alpinestars-sp-8-v3-gloves') |

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

### Get product reviews

Retrieve customer reviews for a product via Bazaarvoice, sorted by submission time descending. Includes aggregate rating statistics and secondary rating breakdowns. Supports offset-based pagination via offset and limit params.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Number of reviews to return |
| `offset` | integer | No | Offset for pagination |
| `product_id` | string | Yes | Product ID in format 'conf.CM<digits>' (e.g. 'conf.CM1526043'). Obtain from get_product_detail or search_products sku field. |

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

### Get product variants

Get configurable product options (colors, sizes) and their swatch images. Each attribute has selectable options; swatches provide visual previews per option value.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | Product URL slug (e.g. 'shoei-rf-1400-solid-helmet') |

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

### Get vehicle makes

Get vehicle makes available for a given year. First step in the vehicle fitment filter: year → make → model. Returns makes grouped by popularity.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `year` | string | Yes | Vehicle year (e.g. '2024') |

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

### Get vehicle models

Get vehicle models for a given year and make. Second step in the vehicle fitment filter. Use make_id obtained from get_vehicle_makes.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `make_id` | string | Yes | Make ID from get_vehicle_makes (e.g. '26' for Honda) |
| `year` | string | Yes | Vehicle year (e.g. '2024') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/fortnine/get-vehicle-models \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"make_id":"<string>","year":"<string>"}'
```

### List brands

List all brands available on FortNine. Returns the complete brand directory with URL-safe slugs for further navigation.

**Estimated cost:** Metered

_No parameters required._

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

### Search products

Full-text product search via Algolia. Matches product names, brands, and descriptions. Paginates with 0-indexed pages; each page returns up to `limit` hits. Total result count and page count are included for client-side iteration.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Results per page |
| `page` | integer | No | Page number (0-indexed) |
| `query` | string | Yes | Search keyword (e.g. 'helmet', 'gloves', 'AGV') |

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

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