Queue a video
Put a video straight into the media queue, no tip attached - it plays on the overlay through the normal queue like any other request. The URL goes through the same validation as every entry route: platform parsing, playability checks, and the streamer’s banned-videos list. Queued items carry requested_via: "api" and fire the media.created webhook. Requires media:control.
POST
/mediaAuthorization
AuthorizationBearer token (tp_live_...) · headerrequiredA TipPage API key, created in Dashboard → Settings → Developer.
Request body
requiredapplication/jsonurlstring<uri>requiredThe video URL (YouTube and other supported platforms).
start_timeintegerStart offset in seconds.
min 0 · default: 0
namestringDisplay name shown in the queue ("requested by").
max length 100 · default: "API"
Responses
201Queued.
mediaQueueMediaItemA media item in the pending queue.
Show propertiesHide properties
order_idstringdonor_namestringmedia_urlstring<uri>media_start_timeintegerStart offset in seconds.
video_titlestring | nullvideo_thumbnailstring<uri> | nullvideo_durationintegerDuration in seconds (0 = unknown).
platformstringrequested_viastringtip | chat | admin | channel_point | ...
is_replaybooleanqueued_atstring<date-time>400Invalid, unplayable, or banned video (`invalid_media`), or missing url (`bad_request`).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
401Missing or invalid API key (`missing_api_key` / `invalid_api_key`).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
403The key lacks the required scope (`missing_scope`).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
required_scopestring429Rate limit exceeded - check the `RateLimit-*` headers.
errorstringRequest
curl -X POST "https://api.tippage.com/v1/media" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "http://example.com",
"start_time": 0,
"name": "API"
}'const response = await fetch("https://api.tippage.com/v1/media", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "http://example.com",
"start_time": 0,
"name": "API"
})
});import requests
response = requests.post(
"https://api.tippage.com/v1/media",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
json={
"url": "http://example.com",
"start_time": 0,
"name": "API"
},
)Response
{
"media": {
"order_id": "string",
"donor_name": "string",
"media_url": "http://example.com",
"media_start_time": 0,
"video_title": "string",
"video_thumbnail": "http://example.com",
"video_duration": 0,
"platform": "youtube",
"requested_via": "string",
"is_replay": true,
"queued_at": "2019-08-24T14:15:22Z"
}
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string",
"required_scope": "string"
}{
"error": "string"
}