> For the complete documentation index, see [llms.txt](https://docs.racemap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.racemap.com/live-tracking/race-video.md).

# Race video

A short portrait video of one participant's race, made from the tracking data and ready to post as a story.

Once you turn them on, every finisher can get after the event a 23-second video of their own race:

* the whole field moves along the course
* the participant is highlighted
* a counter shows how many others they overtook

The video is portrait (9:16), shows your event logo and colour, and fits Instagram, WhatsApp and TikTok stories as it is.

### Which colour the video uses

The counter and the progress bar use the first of these that works:

1. The base colour you set under **Visualisation → General**, if it reads on the video's dark background.
2. The main colour of your logo. Lettering, outlines and white or black areas are ignored, and a dark colour is lightened until it reads.
3. White, for a logo in black and white.

A dark logo on a transparent background is placed on a white plate, so it does not disappear on the dark map.

### Where participants find it

On the tracking map, every participant in the list gets a film button next to the star. The same button sits in their row of the **Stats** tab. It opens the video, with **Share** and **Download** below it.

On a phone, **Share** passes the video file itself to the share sheet, so it can go straight into an Instagram story or a chat. Where the browser can't pass files, it shares a link to the video instead.

{% hint style="info" %}
The first time someone opens a video it is made on the spot, which usually takes less than a minute. After that it opens straight away.
{% endhint %}

### When videos are available

* Two hours after the event ends. Trackers often upload their last points a little late.
* Only for events that are activated.
* Only for participants whose tracking reaches the finish. A participant who stopped early gets a short note instead of a video.

If you change the event or a participant afterwards, the video is made again the next time someone opens it.

### Turning videos on

Videos are off by default. To turn them on, go to **Visualisation → Sidebar** and tick **Race videos for participants**. A video shows the participant's name and can be shared publicly, so leave it off for events where that is not wanted, such as children's races.

### Sending every participant their video

Each participant's video has a fixed link. You can send it by mail or post it in your results:

* The participant list you download as CSV under **Participants → Import/Export** has a `race_video_link` column.
* The [participants API](/api/participants.md) returns the same link as `raceVideoUrl`.

Both only appear while race videos are on. Listing the links builds nothing. A video is built the first time someone opens its link.

Opened in a browser, the link plays the video. If it is still being built, a short page says so and reloads by itself until the video is ready.

### Downloading videos yourself

In the participant list, select participants and choose **Actions → Download race video**. The action is greyed out, with the reason, until videos are on and the event ended two hours ago.

Videos are built one at a time, about 15 seconds each, so you can download up to 20 at once. For more, send the links instead.

### Fetching videos from your own software

Ask the link for JSON (`Accept: application/json`, which is also what you get without an `Accept` header):

| Status | Body                                         | What to do                                                                                 |
| ------ | -------------------------------------------- | ------------------------------------------------------------------------------------------ |
| `200`  | `{"status": "ready", "url": "…"}`            | Download the MP4 from `url`.                                                               |
| `202`  | `{"status": "rendering"}`                    | Ask again after the seconds in the `Retry-After` header.                                   |
| `409`  |                                              | The event is not over yet. `Retry-After` says how many seconds until videos are available. |
| `422`  | `{"status": "unavailable", "reason": "dnf"}` | There will be no video, for example because the tracking never reached the finish.         |
| `404`  |                                              | Race videos are off for this event.                                                        |

Ask for one participant at a time and wait for `Retry-After` before asking again. Building the videos one at a time keeps the live tracking of other events fast.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.racemap.com/live-tracking/race-video.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
