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

> Access data from on.com.

**Category:** E-commerce | **Website:** [on.com/](https://on.com/) | **Docs:** [parse.bot/marketplace/57cd26e8-0d89-438c-a9c3-00d7062489d8/on-com-api](https://parse.bot/marketplace/57cd26e8-0d89-438c-a9c3-00d7062489d8/on-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/on/`
**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 all shoes

Fetch all shoes across all genders (mens, womens, kids) by iterating through the full catalog. Returns one entry per color variant. No pagination control; all results returned in a single response. May take several seconds due to multiple internal pages.

**Estimated cost:** Metered

_No parameters required._

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

### Get article detail

Extract article details from an On Running story URL. Returns the title, summary (from meta description), and schema.org BlogPosting structured data including headline, author, and publisher. Full body text extraction is limited due to client-side rendering.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | Full article URL (e.g. https://www.on.com/en-us/stories/what-to-wear-to-pilates) |

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

### Get articles list

Fetch a list of articles from On Running's Off Stories editorial hub. Returns article titles and URLs by parsing the hub page. Articles cover topics like running tips, athlete stories, and product guides.

**Estimated cost:** Metered

_No parameters required._

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

### Get product detail

Extract detailed product information from a product page URL. Returns the product name, description, brand, all color variants with individual pricing and stock availability, and image URLs. The URL must be a valid on.com product page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | Full product URL (e.g. https://www.on.com/en-us/products/cloud-6-3wf1006/womens/salt-gardenia-shoes-3WF10064657) |

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

### Get products by category

Browse products filtered by gender and product type from On Running's US catalog. Returns one entry per color variant. Not all gender and product_type combinations have products; some combinations may return zero results. Paginates via zero-indexed page number.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `gender` | string | No | Gender filter: mens, womens, kids |
| `limit` | integer | No | Results per page |
| `page` | integer | No | Page number (0-indexed) |
| `product_type` | string | No | Product type filter: shoes, apparel, accessories |

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

### Search products

Full-text search across On Running's US product catalog. query matches product names and descriptions. Returns one entry per color variant with price, SKU, and image. Paginates via zero-indexed page number; each page returns up to limit items. total_hits and nb_pages describe the full result set.

**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. 'cloud', 'runner') |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/on/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://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.