---
search:
  tags:
    - Tipping
    - POST
seo:
  description: >-
    Add a tip that TipPage didn't take payment for. It enters the TTS queue (and
    the media… Reference for the POST /tips endpoint in the TipPage Developer
    API API.
sidebar:
  badge: POST
  label: Create a tip
title: Create a tip
type: openapi-operation
---
Add a tip that TipPage didn't take payment for. It enters the TTS queue (and the media queue when `media_url` is given) and plays like any other tip, with TTS pre-rendered. These tips deliberately skip the word filter (the author is trusted). Fires `tip.created` with `source: "api"`.

Two independent fields decide how the tip is counted:
* **`source`** labels where the tip came from - a stable lower-case
  slug per platform (`kofi`, `youtube-superchat`, `ayupcc`). Reports
  list one row per distinct source. On its own it makes a **free**
  tip: shown and read out on stream, never counted as money.
* **`paid: true`** says real money was processed on that platform
  (a Ko-fi payment, a Super Chat, a legacy tipping service you're
  bridging). The tip then counts as revenue on the streamer's
  overview and in their PDF reports under that source, climbs the
  leaderboard and moves the tip goal. Requires `source`.
  `reference` is your own transaction id for that payment, shown to
  the streamer for reconciliation.

Neither field - a **manual tip**, exactly like the dashboard's manual-tip form: visible on stream, never in the money totals, itemised separately in reports.
Requires `tips:create`.

<Operation source="api-reference" id="createmanualtip" />
