Video and audio upload, transcoding, streaming, playlists, live streaming, and content discovery. Build rich media experiences in your app.
All requests require your API key in the Authorization header. Public endpoints (feeds, trending) work without a session token. Write operations require a session token from the Rails Auth API.
Rails Media handles the full lifecycle: upload, transcode, stream, and discover. Files upload directly to storage via pre-signed URLs for maximum performance.
POST /videos/upload-url
POST /videos/ — transcoding starts automatically
/videos/upload-url
Get pre-signed upload URL
/videos/
Create video record (starts transcoding)
/videos/{id}
Get video metadata
/videos/{id}
Update video metadata
/videos/{id}
Delete video and all variants
/me/videos/
List my uploaded videos
/videos/{id}/transcode
Manually trigger transcoding
/videos/{id}/transcode/status
Check transcoding progress
/videos/{id}/variants
Get streaming URLs by quality
/videos/{id}/download
Download original file
/feed/for-you
Personalized recommendations
/feed/following
Videos from followed creators
/feed/trending
Trending videos
/feed/hashtag/{hashtag}
Videos by hashtag
/search/videos
Search videos by keyword
/search/creators
Search creators by name
/discover/trending-hashtags
Trending hashtags
/videos/{id}/view
Record a video view
/videos/{id}/like
Like a video
/videos/{id}/like
Unlike a video
/videos/{id}/save
Save to collection
/videos/{id}/save
Remove from collection
/videos/{id}/share
Record a share event
/videos/{videoId}/comments
List comments on a video
/videos/{videoId}/comments
Post a comment
/comments/{commentId}/replies
Get replies to a comment
/comments/{commentId}
Delete a comment
/audios/{id}
Get audio track metadata
/audios/search
Search audio library
/audios/trending
Trending audio tracks
/audios/original
Upload an original sound
/users/{userId}/follow
Follow a creator
/users/{userId}/follow
Unfollow a creator
/users/{userId}/followers
List followers
/users/{userId}/following
List following
/creators/{id}
Get creator profile
/users/{username}/videos
List user's public videos
/live/start
Start a live stream
/live/
List active live streams
/live/{streamId}/
Get stream details
/live/{streamId}/join
Join as viewer
/live/{streamId}/token
Get WebRTC token (LiveKit)
/live/{streamId}/end
End the live stream
/live/{streamId}/viewers
Get viewer count
Multiple quality variants (360p, 480p, 720p, 1080p) are generated automatically. Use the variant URLs for adaptive streaming.
All errors follow a standard format.
401
Invalid or missing API key / session token
404
Video or resource not found
410
Upload URL expired
413
File exceeds maximum upload size for your tier
422
Transcoding failed (unsupported format)
429
Rate limit exceeded