---
title: "Article Tip"
method: POST
path: "/v1/articles/{slug}/tip"
---

# Article Tip

`POST /v1/articles/{slug}/tip`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/v1/articles/{slug}/tip`
- Auth: none declared

D-2.8 · listener tip-jar endpoint.

Body: {listener_token?, amount_usd, note?, tx_hash?}.
Records a pending tip + the 70/20/10 ledger split:
  - 70% to article's publisher
  - 20% to the recommender (Article.sender_email → ListenerSubscription)
    — falls into the publisher's share when no recommender is on file
  - 10% to the platform

Status flow: pending → settled when tx_hash is confirmed (operator
or x402 facilitator hits PATCH /v1/admin/tips/{id}/settle). Until
then the LedgerEntry rows stay 'pending' too, so payouts can't
advance against an unconfirmed tip.

## Path parameters

- `slug` string, required

## Headers

- `idempotency-key` string, nullable

## Request body

- TipRequest
  - `listener_token` string, nullable
  - `amount_usd` number, required
  - `note` string, nullable
  - `tx_hash` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
