# api-product (/docs/showcase/templates/api-product)

> Say what a Business sells: hero, proof, features, plans and a closing, in the order a buyer reads them.



Use `api-product` for the pages that sell: a landing and a pricing page. The hero states the offer and its two actions, proof and features follow in the order a buyer asks, OfferTiles price it, and a closing repeats the one action that matters. Despite the name, it fits any Product or Service, not only an API.

## Sections in order

**Slot rules.**

Required and optional slots are not in 7.0.0-alpha.0. `PageSchema` accepts `"template": "api-product"` and checks no slot; the order above is read from the records.

## Fields that matter

<details className="mx-sc-details">
<summary>Every field of hero</summary>

</details>

<details className="mx-sc-details">
<summary>Every field of feature-grid</summary>

</details>

<details className="mx-sc-details">
<summary>Every field of pricing</summary>

</details>

## Starter record

**Using an agent? Paste this prompt**

```text
Read https://next.mdxui.dev/docs/showcase/templates/api-product.md, then fetch https://next.mdxui.dev/pages/vanroster/home.json, a api-product page that parses.
Run pnpm add @mdxui/site@7.0.0-alpha.0.
Rewrite its strings for my Business. Keep its Section types in their order; drop one only when my Business has nothing to say there.
Parse it with PageSchema.safeParse. When it refuses, shorten the content at the path it names, never the bound.
Render it with renderPage and save the HTML file.
```

## Other Templates

