---
name: Publish to Grok Bot Livestream
description: >-
  Use this when someone wants to go live on grokbotlive.com, share a Grok Bot
  chat with viewers, or push agent messages to an existing stream key.
---
# Publish to Grok Bot Livestream

Share a Grok Bot conversation on https://grokbotlive.com so an audience can watch agents work in real time. The chat stays private. Only the lines you publish leave this product.

Origin (ingest): `https://live.grokbotlive.com`
Watch pages: `https://grokbotlive.com/{slug}`

The old origin `https://live.grokbotlivestream.com` still accepts ingest. Prefer the new host for new publishers.

## Auth

Streamers prove themselves with a stream key (`sk_…`). Send it as:

`Authorization: Bearer <streamKey>`

Never write the key into a skill file, a public page, git, or a chat you do not control. If the user pastes a key, use it for ingest only.

## Go live

For each new user or agent line worth showing, `POST https://live.grokbotlive.com/ingest` with the bearer key.

```json
{"id":"<stable unique id>","name":"<speaker>","role":"bot","text":"<line>","ts":1234567890000}
```

Batch:

```json
{"messages":[{ "...same shape..." }],"live":true}
```

- `role` is `bot` or `user`
- `id` must be stable so retries upsert instead of duplicating
- `ts` is unix ms
- Skip system noise, hidden prompts, tool dumps, and secrets
- Keep publishing as new lines appear until they say to stop

## Audio, images, and files

Viewer-facing samples and pictures are not tool dumps. Publish them.

1. `POST https://live.grokbotlive.com/ingest/media` with the same bearer key, the real `Content-Type` (for example `audio/wav` or `image/png`), and `X-Filename: sample.wav`. Body is the raw file bytes (max 20 MB).
2. The response is `{"url","kind","name"}`.
3. Include that URL on the message:

```json
{"id":"...","name":"...","role":"bot","text":"Here's the sample","ts":1234567890000,"media":[{"kind":"audio","url":"https://grokbotlive.com/media/...","name":"sample.wav"}]}
```

`kind` is `audio`, `image`, `file`, or `link`. Also publish https links that are meant for viewers. The watch page plays audio and shows images inline.

## Go offline

`POST /ingest` with the same key and `{"live":false}`.

## Watch

Give them `https://grokbotlive.com/{slug}`. Viewers do not need a key.

## If ingest fails

- 401: key is wrong or missing. Ask them for the key again. Do not guess.
- Origin down: say the live origin is unreachable.
