2026-11-01 · 5 min read
A Caption API for Fitness Videos: Coaching Cues That Survive the Muted Gym Scroll
Fitness content has a mute problem twice over. Viewers scroll past it in the feed with sound off, and the people following along in an actual gym often cannot play audio at all. When the coaching lives in the voiceover, the form cues, the rep counts, the pacing, all of it disappears for exactly the viewers who need it most.
For coaches and fitness apps publishing daily, captioning each video by hand is the step that quietly gets dropped. caption.sh turns it into an API call: send the final cut, receive an MP4 with word-timed, styled captions burned into the pixels, ready for the feed or the app.
Caption a workout video in one request
KEY=$CAPTION_API_KEY
resp=$(curl -s -X POST https://api.caption.sh/v1/videos \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"source_url":"https://cdn.example.com/workouts/day-12-legs.mp4","options":{"font":"inter"}}')
job=$(echo "$resp" | jq -r .job_id)
if [ -z "$job" ] || [ "$job" = "null" ]; then echo "submit failed: $resp"; exit 1; fi
deadline=$((SECONDS + 900))
while [ $SECONDS -lt $deadline ]; do
resp=$(curl -s https://api.caption.sh/v1/jobs/$job -H "Authorization: Bearer $KEY")
status=$(echo "$resp" | jq -r .status)
if [ "$status" = "done" ]; then
curl -sL -H "Authorization: Bearer $KEY" https://api.caption.sh/v1/jobs/$job/result -o captioned.mp4
break
fi
if [ "$status" = "error" ]; then echo "job failed: $resp"; exit 1; fi
sleep 5
done
[ -f captioned.mp4 ] || { echo "timed out"; exit 1; }Results are stored for 24 hours and then deleted, which fits a publish pipeline that downloads the captioned file immediately. Submitting a week of workouts at once will occasionally hit the per-key rate limit; a short wait and retry after a 429 keeps the batch moving.
Where captioned fitness video earns its keep
- Feed reach: muted autoplay is the default, and moving captions are what stops the scroll on a coaching clip.
- In-app programming: members following a workout in a loud gym can read every cue without touching the volume.
- Program archives: a whole back catalog can be captioned in a batch, so older content keeps working instead of dying silent.
At $0.10 per minute, captioning a full week of workouts costs about a dollar. Get an API key at caption.sh and run your latest session through it.