Skip to main content
POST
Upload Video from URL
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)
Pull a video from a publicly reachable URL (mp4 or m3u8) into your Private Video Library for indexing and search. For uploading a local file, use Upload Video — from File. To import from a social platform (TikTok / YouTube / Instagram), use Upload from Social Media.

Prerequisites

  • You have created a memories.ai API key.
  • The video URL is publicly accessible via unauthenticated HTTP GET — the server fetches it at request time, so temporary or expiring links may fail.
  • Video codecs: h264, h265, vp9, hevc. m3u8 streams are supported only if all internal paths are fully absolute.
  • Max file size: 1 GB; files larger than 1 GB require special account permission — contact support.

Request Example

Uses application/x-www-form-urlencoded. Send parameters as form fields, not JSON.

Parameters

url
string
required
Direct URL to the video. Must be publicly accessible via unauthenticated HTTP GET. The server fetches from this URL at request time — ensure it remains available until download starts.
folder_id
integer
Optional. Target folder for the uploaded video(s). Omit (or pass -1) to store in your account’s Default folder (created automatically on first use). Pass a folder id from List Folders or Create Folder to store in that folder — it must belong to your account, otherwise the request is rejected.
callback
string
URL that receives a POST notification when the video finishes indexing. Maximum 299 characters.
datetime_taken
string
Capture time in yyyy-MM-dd HH:mm:ss format. Invalid formats are rejected.
camera_model
string
Camera or device model name. Maximum 200 characters.
latitude
number
GPS latitude where the video was captured (decimal).
longitude
number
GPS longitude where the video was captured (decimal).
tags
array
User-defined tags. Maximum 20 tags. An api tag is appended automatically.
retain_original_video
boolean
default:"true"
Whether to retain the original video file after indexing.
video_transcription_prompt
string
Custom prompt to steer the transcription and video understanding focus.

Response Example

Response Fields

code
string
Business status code. 0000 indicates success.
msg
string
Human-readable status message.
data.videoNo
string
Unique identifier for the uploaded video. Use this in all subsequent operations.
data.videoName
string
Internal name assigned to the stored video.
data.videoStatus
string
Initial processing status. Always UNPARSE immediately after upload; transitions to PARSE once indexing completes.
data.uploadTime
string
Upload timestamp in milliseconds since epoch.

Knowing When Indexing Is Done

The response returns immediately with videoStatus: "UNPARSE" — the video is queued for indexing but is not yet searchable. Two ways to wait for PARSE:
Do not use Get Task Status — that endpoint is only for batch Upload from Social Media tasks (which return a taskId, not a videoNo).

Notes & Limits

  • Source availability: The URL must remain accessible until the server fetches the video. Temporary or expiring links may fail.
  • Rate limiting: Exceeding the per-account upload rate limit returns an error.
  • Concurrent indexing cap: New uploads are rejected once the rolling 2-hour cap is reached.
  • Billing: Each upload deducts credits from your account balance.

Authorizations

Authorization
string
header
required

Body

application/x-www-form-urlencoded
url
string<uri>
required

Direct URL of the video. Must be reachable via unauthenticated HTTP GET.

Example:

"https://example.com/test_video.mp4"

callback
string<uri>

Callback URL invoked when the video moves to the parsing stage. Max 299 characters.

Maximum string length: 299
Example:

"https://your.app/callback"

datetime_taken
string

Capture time in format yyyy-MM-dd HH:mm:ss.

Example:

"2025-10-20 11:00:00"

camera_model
string

Camera/device model. Max 200 characters.

Maximum string length: 200
Example:

"Canon EOS 5D"

latitude
number<double>
Example:

66.66

longitude
number<double>
Example:

66.66

tags
string[]

User-defined tags. Max 20. The server automatically appends an 'api' tag.

Maximum array length: 20
Example:
retain_original_video
boolean
default:true

Whether to retain the original source video. Defaults to true.

video_transcription_prompt
string
Example:

"Focus on the speaker and major scene changes."

folder_id
integer

Optional target folder for the upload. Omit or pass -1 for the account's Default folder (auto-created on first use). A positive id must belong to your account.

Example:

671631448308117500

Response

200 - application/json

Successful response

code
string

Business status code. 0000 indicates success.

Example:

"0000"

msg
string
Example:

"success"

data
object
Example:
success
boolean
Example:

true

failed
boolean
Example:

false