Skip to main content
POST
/
serve
/
api
/
v1
/
scraper_url
Upload Video from Platform URL
curl --request POST \
  --url https://api.memories.ai/serve/api/v1/scraper_url \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "video_urls": [
    "https://www.tiktok.com/@cutshall73/video/7543017294226558221",
    "https://www.tiktok.com/@abcnews/video/7543794552365124919"
  ],
  "tiktok_post_urls": [
    "<string>"
  ],
  "unique_id": "default",
  "callback_url": "https://your.app/callback",
  "quality": "1080"
}
'
{
  "code": "0000",
  "msg": "success",
  "data": {
    "taskId": "31b0fccb-d6f9-4135-922d-1e8828499812"
  },
  "success": true,
  "failed": false
}

Documentation Index

Fetch the complete documentation index at: https://api-tools.memories.ai/llms.txt

Use this file to discover all available pages before exploring further.

Product: Visual Search Use case: Upload videos and images, auto-index them, then search by natural language, image, or transcript phrase Host: https://api.memories.ai/serve/api/v1 Auth: Authorization: sk-mavi-... (no Bearer prefix)
Import up to 50 post URLs in one request into your Private Video Library — searchable by your account only. All URLs must be from the same platform. Related endpoints: Import from Post URLs — Public (shared library) · Import from Creator Profile · Import from Hashtag. Example URLs:
TikTok:    https://www.tiktok.com/@cutshall73/video/7543017294226558221
Instagram: https://www.instagram.com/p/DNu8_Fs4mSd/
YouTube:   https://www.youtube.com/shorts/T2ThsydNQaM

Prerequisites

Request Example

import requests

headers = {"Authorization": "sk-mavi-..."}
payload = {
    "video_urls": [
        "https://www.tiktok.com/@cutshall73/video/7543017294226558221",
        "https://www.tiktok.com/@abcnews/video/7543794552365124919"
    ],
    "unique_id": "my-project",
    "callback_url": "https://your.app/callback",
    "quality": "1080"
}
response = requests.post(
    "https://api.memories.ai/serve/api/v1/scraper_url",
    json=payload,
    headers=headers
)
print(response.json())

Parameters

video_urls
array
required
List of post URLs to import. Combined with tiktok_post_urls (if provided), the total must not exceed 50 URLs. All URLs must be from the same platform.
tiktok_post_urls
array
Additional TikTok post URLs. Merged server-side with video_urls before processing. Counts toward the 50-URL cap.
unique_id
string
default:"default"
Namespace to group videos in your account.
callback_url
string
URL to receive POST notifications on task progress and per-video indexing completion. The server also accepts the alias callback — pick one and stick with it per project.
quality
string
default:"720"
Target resolution. One of "360", "480", "720", "1080", "1440", "2160". For YouTube, the actual resolution will be ≤ the requested value based on source availability. For TikTok and Instagram, videos are scraped at their original resolution.

Response Example

{
    "code": "0000",
    "msg": "success",
    "data": {
        "taskId": "31b0fccb-d6f9-4135-922d-1e8828499812"
    },
    "success": true,
    "failed": false
}

Response Fields

code
string
Business status code. 0000 indicates success.
msg
string
Human-readable status message.
data.taskId
string
Unique identifier for the import task. Use with Get Task Status to check progress, or match against callback notifications.

Next Steps

Poll Get Task Status with the returned taskId until each derived video’s status reaches PARSE. Empty data.videos covers both “still downloading” and “task_id not found” — combine with a client-side timeout. FAIL is common for DRM-protected YouTube content.

Notes & Limits

  • Rate limiting: See Rate limits.
  • Billing: Each request deducts credits. YouTube URLs consume additional credits.
  • Same-origin constraint: All URLs in one request must be from the same platform — mixed-platform batches are rejected.
  • YouTube: Indexing may be slower than TikTok or Instagram due to scraper capacity.

Authorizations

Authorization
string
header
required

Body

application/json
video_urls
string<uri>[]
required

Platform video URLs. Merged with tiktok_post_urls; combined list must be non-empty and <= 50. All URLs must be from the same platform.

Maximum array length: 50
Example:
[
"https://www.tiktok.com/@cutshall73/video/7543017294226558221",
"https://www.tiktok.com/@abcnews/video/7543794552365124919"
]
tiktok_post_urls
string<uri>[]

Optional TikTok post URLs. Server merges these into video_urls before processing. Counts toward the 50-URL cap.

unique_id
string
default:default

Scope identifier. A folder is auto-created on first use for the authenticated account.

callback_url
string<uri>

Callback URL for task-complete and per-video indexing-complete notifications.

Example:

"https://your.app/callback"

quality
enum<string>
default:360

Target video resolution. Must be one of 360/480/720/1080/1440/2160 (string).

Available options:
360,
480,
720,
1080,
1440,
2160
Example:

"1080"

Response

200 - application/json

Successful response

code
string

Business status code. 0000 indicates success.

Example:

"0000"

msg
string
Example:

"success"

data
object
Example:
{
"taskId": "31b0fccb-d6f9-4135-922d-1e8828499812"
}
success
boolean
Example:

true

failed
boolean
Example:

false