Skip to main content
POST
/
serve
/
api
/
v1
/
upload_url
Upload Video from URL
curl --request POST \
  --url https://api.memories.ai/serve/api/v1/upload_url \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "url": "https://example.com/test_video.mp4",
  "callback": "https://your.app/callback",
  "unique_id": "default",
  "datetime_taken": "2025-10-20 11:00:00",
  "camera_model": "Canon EOS 5D",
  "latitude": "66.66",
  "longitude": "66.66",
  "tags": [
    "test1",
    "test2"
  ],
  "retain_original_video": false,
  "video_transcription_prompt": "Focus on the speaker and major scene changes."
}
'
{
  "code": "0000",
  "msg": "success",
  "data": {},
  "success": true,
  "failed": false
}

Prerequisites

  • You have created a memories.ai API key.
  • Video and audio formats: h264, h265, vp9, hevc, or m3u8.
  • Audio track: Required for audio transcription.
  • Direct Link: The URL must be a direct download link (or stream) accessible via GET without authentication.

Note !!

Only m3u8 files that use fully linked internal absolute paths are supported. Please contact us for permission if the file linked to m3u8 has size > 1GB.

Host URL

https://api.memories.ai

Endpoint

POST /serve/api/v1/upload_url
/serve/api/v1/upload_url

Request Example

import requests 

headers = {"Authorization": "<API_KEY>"} 
data = { 
    "url": "<URL>", 
    "callback": "<CallBack URL>", 
    "unique_id": 'test1020', 
    "datetime_taken": "2025-10-20 11:00:00", 
    "camera_model": "Canon EOS 5D", 
    "latitude": "66.66", 
    "longitude": "66.66", 
    "tags": ["test1", "test2", "test3", "test4", "test5"], 
    "retain_original_video": False, 
    "video_transcription_prompt": '<YOUR_CUSTOMIZED_PROMPT_FOR_VIDEO_FOCUS>'
}
response = requests.post( 
    "https://api.memories.ai/serve/api/v1/upload_url", 
    data=data, 
    headers=headers 
) 
print(response.json())

Request Parameters

url
string
required
Direct URL to the video file.
callback
string
Callback URL for status updates.
unique_id
string
default:"default"
Unique ID for scope.

Response Example

{ 
    "code": "0000", 
    "msg": "success", 
    "data": { 
        "videoNo": "VI568102998803353600", 
        "videoName": "1be6a69f3c6e49bf986235d68807ab1f", 
        "videoStatus": "UNPARSE", 
        "uploadTime": "1744905509814" 
    }
}

Authorizations

Authorization
string
header
required

Body

url
string<uri>
required
Example:

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

callback
string<uri>
Example:

"https://your.app/callback"

unique_id
string
default:default
datetime_taken
string
Example:

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

camera_model
string
Example:

"Canon EOS 5D"

latitude
string
Example:

"66.66"

longitude
string
Example:

"66.66"

tags
string[]
Example:
["test1", "test2"]
retain_original_video
boolean
default:false
video_transcription_prompt
string
Example:

"Focus on the speaker and major scene changes."

Response

200 - application/json

Successful response

code
Example:

"0000"

msg
string
Example:

"success"

data
success
boolean
Example:

true

failed
boolean
Example:

false