---
title: "Rumble Video Details API"
method: GET
path: "/v1/rumble/video-details"
tags: ["Rumble"]
---

# Rumble Video Details API

`GET /v1/rumble/video-details`

## Request

- Base URL: `https://api.captapi.com`
- URL: `https://api.captapi.com/v1/rumble/video-details`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Rumble video metadata — uniform streams[] with rendition meta, captions[], audioStreams.

Paste a Rumble video URL and get clean JSON: title, description, views, likes/dislikes/comments (null when Rumble does not expose them — never fake zeros), durationSeconds + durationText, publishedAt, thumbnail, width/height, channel name/url/handle plus channelFollowers and channelVerified, numericId/embedId/shareUrl/embedUrl (real embed id, not the page permalink), captions[{code,language,url}], streams[{url,type,quality,width,height,bitrateKbps,sizeBytes}] built from embed metadata height/bitrate (two 1080p bitrates stay two rows — no fabricated 1081 keys; metadata-less and timeline strips are dropped), audioStreams[] (width/height/quality null — bitrateKbps carries the rate), and thumbnailTrack when Rumble ships a timeline sprite. type is video/mp4 (MIME-style). Rumble CDN URLs are unsigned, so media rows carry no expiresAt — the links do not expire. The raw quality-keyed media dump is not returned. Flat 1 credit. Pass cache=true for the 24h shared cache.

Docs: https://captapi.com/apis/rumble-video-details

## Query parameters

- `url` string, required
- `cache` boolean

## Response `200`

Success. The data object for this endpoint.

- object
  - `success` unknown, required
  - `data` object, required
    - `platform` string: Platform identifier for this response (matches the endpoint's platform).
    - `id` string: Stable platform ID for the item.
    - `numericId` integer: Numeric id. Example: 441201242.
    - `embedId` string: Rumble's player embed id (may differ from the /v… page id).
    - `url` string: Canonical URL of the item.
    - `type` string: Content kind: "video" | "short" | "live".
    - `embedUrl` string: Real Rumble embed URL (/embed/{embedId}/). embedId is often different from the page permalink id — never invent from id alone.
    - `shareUrl` string: Share url URL.
    - `title` string: Title of the item.
    - `description` string: Description text.
    - `channel` string: Channel display name (string), e.g. The Dan Bongino Show — not an object.
    - `channelUrl` string: URL of the channel.
    - `channelHandle` string: Channel handle. Example: "bongino".
    - `channelFollowers` integer: Follower count of the channel.
    - `channelVerified` boolean: Whether the channel is verified.
    - `views` integer: View count from JSON-LD / page chrome; null when impossible (0 with engagement).
    - `likes` integer: Rumble upvotes when the vote UI is present; null when unknown (never invent 0).
    - `dislikes` integer: Rumble downvotes when present; null when unknown.
    - `comments` integer: Public comment count when Rumble exposes it; null when unknown.
    - `durationSeconds` integer: Length in seconds (integer). Canonical with durationText — same pair as channel-videos.
    - `durationText` string: Human clock duration (e.g. 1:26:25). Not zero-padded HH:MM:SS.
    - `publishedAt` string: Publish date (ISO 8601) when the platform exposes an absolute timestamp.
    - `thumbnail` string: Thumbnail image URL.
    - `width` integer: Width in pixels.
    - `height` integer: Height in pixels.
    - `captions` object
      - `en-auto` object: Object with language, path.
        - `language` string
        - `path` string
    - `media` object
      - `mp4` object: Object with 240, 360, 480, 720, 1080, 1081.
        - `240` object
          - `url` string: Canonical URL of the item.
          - `meta` object
            - `bitrate` integer
            - `size` integer
            - `w` integer
            - `h` integer
        - `360` object
          - `url` string: Canonical URL of the item.
          - `meta` object
            - `bitrate` integer
            - `size` integer
            - `w` integer
            - `h` integer
        - `480` object
          - `url` string: Canonical URL of the item.
          - `meta` object
            - `bitrate` integer
            - `size` integer
            - `w` integer
            - `h` integer
        - `720` object
          - `url` string: Canonical URL of the item.
          - `meta` object
            - `bitrate` integer
            - `size` integer
            - `w` integer
            - `h` integer
        - `1080` object
          - `url` string: Canonical URL of the item.
          - `meta` object
            - `bitrate` integer
            - `size` integer
            - `w` integer
            - `h` integer
        - `1081` object
          - `url` string: Canonical URL of the item.
          - `meta` object
            - `bitrate` integer
            - `size` integer
            - `w` integer
            - `h` integer
      - `timeline` object: Object with 180.
        - `180` object
          - `url` string: Canonical URL of the item.
          - `meta` object
            - `bitrate` integer
            - `size` integer
            - `w` integer
            - `h` integer
      - `audio` object: Object with 192.
        - `192` object
          - `url` string: Canonical URL of the item.
          - `meta` object
            - `bitrate` integer
            - `size` integer
            - `w` integer
            - `h` integer
    - `isLive` boolean: true while the upload is a livestream; false for VODs.
    - `streams` object[]
      - `url` string: Canonical URL of the item.
      - `type` string: Content kind: "video" | "short" | "live".
      - `quality` string: Quality tier of the format.

## Other responses

- `400`: Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.
- `401`: Missing, invalid or revoked API key. Not billed.
- `402`: Not enough credits for this request. Not billed.
- `404`: The resource does not exist or is not public. Not billed.
- `422`: A required parameter is missing or has the wrong type. Not billed.
- `429`: Rate limit reached. Wait for Retry-After seconds. Not billed.
- `502`: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.

---

[API](https://skmtc.dev/captapi/apis/captapi-api.md) · [All operations](https://skmtc.dev/captapi/apis/captapi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/captapi/apis/captapi-api/revisions/c9b9ac5ff1bd?raw)
