curl --request POST \
--url https://api.myeden.me/v1/videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"source_url": "https://cdn.example.com/highlights/2026/lakers-vs-celtics.mp4",
"thumbnail_url": "https://cdn.example.com/thumbs/lakers-vs-celtics.jpg",
"title": "Lakers vs Celtics — Final 2 Minutes",
"tags": [
"nba",
"lakers",
"celtics",
"playoffs"
],
"sport": "basketball",
"category": "sports",
"language_code": "en",
"summary": "Lakers vs Celtics, final two minutes of regulation. LeBron's\nstepback three with 18 seconds left ties the game; Tatum\nanswers with a buzzer-beating fadeaway to send it to overtime.\n"
}
EOF{
"id": "vid_a7Kp9mNqR2vXyB4dH6jL8s",
"status": "processing",
"resource_url": "/v1/videos/vid_a7Kp9m...",
"message": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}Ingest a video from a public URL
Submits a publicly accessible video URL for ingestion. Responds
immediately with 202 Accepted and an id. Use that id to
check status, archive, republish, or delete.
Requires the videos:write scope.
curl --request POST \
--url https://api.myeden.me/v1/videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"source_url": "https://cdn.example.com/highlights/2026/lakers-vs-celtics.mp4",
"thumbnail_url": "https://cdn.example.com/thumbs/lakers-vs-celtics.jpg",
"title": "Lakers vs Celtics — Final 2 Minutes",
"tags": [
"nba",
"lakers",
"celtics",
"playoffs"
],
"sport": "basketball",
"category": "sports",
"language_code": "en",
"summary": "Lakers vs Celtics, final two minutes of regulation. LeBron's\nstepback three with 18 seconds left ties the game; Tatum\nanswers with a buzzer-beating fadeaway to send it to overtime.\n"
}
EOF{
"id": "vid_a7Kp9mNqR2vXyB4dH6jL8s",
"status": "processing",
"resource_url": "/v1/videos/vid_a7Kp9m...",
"message": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>"
}
}Authorizations
Send your API key as a Bearer token:
Authorization: Bearer eden_live_xxxxxxxxxxxxxxxxxxxxxxxx_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
Body
HTTPS URL to the source video file. mp4, mov, mkv, webm supported.
200Optional HTTPS URL to a custom thumbnail image. Recommended dimensions 1920x1080 (16:9). If omitted, a frame from the video will be auto-generated by Mux.
"https://cdn.example.com/thumbs/lakers-vs-celtics.jpg"
2550Optional sport tag. Improves placement in sport-specific feeds and personalized recommendations. Invalid values return 400 invalid_input. See the Ingesting Videos guide for the full list of supported sports.
tennis, soccer, basketball, cricket, american_football, australian_football, baseball, lacrosse, badminton, equestrian, golf, boxing, mma, formula_one, ice_hockey, rugby, cycling, track_and_field, swimming, gymnastics, table_tennis, skiing, snowboarding, skateboarding, surfing, wrestling_pro, motocross, fencing, climbing, pickleball "basketball"
Source-audio language for Mux's caption generation. Auto-translated captions are produced in 18 additional languages regardless of this value. Format lowercase ISO 639-1 two-letter code only (e.g. 'en', 'es', 'fr'). Country variants like 'en-US' are not accepted.
^[a-z]{2}$"en"
Content-type taxonomy. Independent of the sport field — sport describes what the content is ABOUT (tennis, basketball, etc.) while category describes what the content IS (entertainment, sports highlights, education, etc.). A tennis player's interview would be sport='tennis', category='entertainment'. Optional. Invalid values return 400 invalid_input.
autos_vehicles, comedy, education, entertainment, film_animation, gaming, howto_style, music, news_politics, nonprofits, people_blogs, pets_animals, science_technology, sports, travel_events Optional text description of the video. Persisted in both QuickBlox (powers in-app display) and Recombee (powers search and recommendation ranking). Use this for editorial blurbs, press release snippets, or game recaps. Plain text only; no HTML or markdown rendering.
2000"Lakers vs Celtics, final two minutes of regulation. LeBron's\nstepback three with 18 seconds left ties the game; Tatum\nanswers with a buzzer-beating fadeaway to send it to overtime.\n"