MeowLoad Docs
On this page

Single Post (Video/Gallery/Music/Live Stream) Extraction API

Pass a post URL and get direct download links for every media item in it (video, image, audio, live stream), plus its title, caption, cover and author. It covers the 1000+ social and video platforms MeowLoad supports, such as YouTube, TikTok, Instagram, Facebook, Twitter (X), Douyin, Xiaohongshu, Bilibili and Weibo; short links like youtu.be and vt.tiktok.com are accepted as-is.

🎯 Basic Information

ItemDetails
Endpointhttps://api.meowload.net/openapi/v1/extract/post
MethodPOST with a JSON body
AuthenticationAuthorization: Bearer <your API key> header, with a key from the Developer Console
BillingCharged only on success (200); rules are listed in the Developer Console

New to the API? Start with the Quickstart.

📋 Request Parameters

ParameterTypeRequiredDescription
urlstringYesThe post URL; short links are accepted

Error messages are in English by default; send an Accept-Language header (for example zh or ja) to localize them.

Request Example

curl -X POST https://api.meowload.net/openapi/v1/extract/post \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your API key>" \
  -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'

🟢 Success Response

Response Example

A successful call returns HTTP 200, and the body is the extraction result itself. The example below is trimmed to the most commonly used fields:

{
  "site": "youtube",
  "title": "Scenic tour of the Karst mountains",
  "text": "A drone flight over the Karst mountains at sunrise. Filmed in 4K.",
  "medias": [
    {
      "media_type": "video",
      "resource_url": "https://video.example.com/v/EXAMPLE0001/360p.mp4?expire=1700000000&sig=EXAMPLE",
      "preview_url": "https://images.example.com/EXAMPLE0001/cover.jpg",
      "duration": 55,
      "headers": { "Referer": "https://www.example.com/" },
      "variants": [
        {
          "quality": 1080,
          "quality_label": "1080p",
          "video_url": "https://video.example.com/v/EXAMPLE0001/1080p.mp4?expire=1700000000&sig=EXAMPLE",
          "video_ext": "mp4",
          "video_filesize": 25051752,
          "audio_url": "https://video.example.com/v/EXAMPLE0001/audio-en.m4a?expire=1700000000&sig=EXAMPLE",
          "audio_ext": "m4a",
          "audio_filesize": 887229,
          "is_default": true
        },
        {
          "quality": 360,
          "quality_label": "360p",
          "video_url": "https://video.example.com/v/EXAMPLE0001/360p.mp4?expire=1700000000&sig=EXAMPLE",
          "video_ext": "mp4",
          "video_filesize": 3742315
        }
      ]
    }
  ],
  "id": "EXAMPLE0001",
  "post_url": "https://www.youtube.com/watch?v=EXAMPLE0001",
  "created_at": "2025-06-02T12:00:00.000Z",
  "author": { "username": "@travelchannel", "display_name": "Travel Channel" }
}

Response Field Descriptions

  • medias[] holds every media item of the post. media_type is one of video, image, audio, live or file, and resource_url is a directly downloadable URL.
  • When a video is available in several resolutions, variants[] lists them. quality is the height in pixels (9999 means original quality), quality_label is the display label, and the variant with is_default: true is the recommended pick. A variant that has both video_url and audio_url is a split stream: download both and merge them.
  • Media URLs are short-lived, so download promptly. When a media item carries headers, send them as-is with the download request, or the platform will reject it.
  • Missing values are omitted entirely, never sent as null or an empty string. Both title and text are optional; use title || text for a display caption.

The full list of parameters and response fields is in the API reference.

🔴 Error Response

A failed extraction returns HTTP 400 and is never charged. The body carries a machine-readable code and a retryable flag (whether retrying the same URL later might succeed):

{ "message": "The content has been deleted or does not exist", "code": "content_deleted", "retryable": false }

401 (invalid API key), 402 (out of credits), 422 (invalid request body), 429 (rate limited) and every extraction error code are covered in Error Codes.