---
title: "Pay for prepaid article units with a Stripe Shared Payment Token (agentic payments: Meta Muse, ChatGPT agentic checkout, link-cli). The user approves a bounded spend in their Link wallet; the agent passes the spt_ token here and the balance updates in the same response - no browser. Price is fixed server-side ($9/article); the token is single-use and amount-capped by Stripe."
method: POST
path: "/articles/pay"
---

# Pay for prepaid article units with a Stripe Shared Payment Token (agentic payments: Meta Muse, ChatGPT agentic checkout, link-cli). The user approves a bounded spend in their Link wallet; the agent passes the spt_ token here and the balance updates in the same response - no browser. Price is fixed server-side ($9/article); the token is single-use and amount-capped by Stripe.

`POST /articles/pay`

## Request

- Base URL: `https://app.seomatic.ai/api/v1`
- URL: `https://app.seomatic.ai/api/v1/articles/pay`
- Auth: HTTP bearer

## Request body

- object
  - `spt_token` string, required: A Stripe shared payment token (spt_...) granted by the buyer via their Link wallet.
  - `sku` 'article' | 'question_pack' | 'visibility_scan' | 'competitor_scan': What to buy: articles ($9 each), question packs ($5 for 50 assistant questions), AI-visibility scans of your site ($19), or competitor scans ($19).
  - `quantity` integer

## Response `200`

{ paid: true, quantity, amount_cents, currency, balance }

## Other responses

- `400`: Missing or malformed spt_token
- `401`: Missing or invalid API key
- `402`: Payment failed - the token was already used, expired, or the amount exceeds what the user approved. The error message carries the exact reason to relay.
- `429`: Rate limited (per key). Retry-After header set.

---

[API](https://skmtc.dev/seomatic/apis/seomatic-api.md) · [All operations](https://skmtc.dev/seomatic/apis/seomatic-api/llms.txt) · [OpenAPI document](https://skmtc.dev/seomatic/apis/seomatic-api/revisions/113a2a263604?raw)
