List Videos in Folder
curl --request GET \
--url https://api.memories.ai/serve/api/v1/folders/videos \
--header 'Authorization: <api-key>'import requests
url = "https://api.memories.ai/serve/api/v1/folders/videos"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.memories.ai/serve/api/v1/folders/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.memories.ai/serve/api/v1/folders/videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.memories.ai/serve/api/v1/folders/videos"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.memories.ai/serve/api/v1/folders/videos")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.memories.ai/serve/api/v1/folders/videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"code": "0000",
"msg": "success",
"data": {
"current_page": 1,
"page_size": 20,
"total_count": 2,
"videos": [
{
"video_no": "VI606404158946574336",
"video_name": "182082-867762198_tiny",
"duration": 12,
"size": 3284512,
"status": "PARSE",
"create_time": 1754037217992,
"datetime_taken": 1729388400000,
"camera_model": "Canon EOS 5D",
"latitude": 39.9042,
"longitude": 116.4074,
"tags": [
"holiday",
"beijing",
"api"
],
"bucket": "mavi-resource",
"blob": "VI606404158946574336.mp4"
},
{
"video_no": "VI606402870447996928",
"video_name": "test_video_gz_visual_understanding_s36",
"duration": 61,
"size": 5324808,
"status": "PARSE",
"create_time": 1754036910783,
"bucket": "mavi-resource",
"blob": "VI606402870447996928.mp4"
}
]
},
"success": true,
"failed": false
}Folder Management
List Videos in Folder
List the videos contained in a specific folder, with pagination.
GET
/
serve
/
api
/
v1
/
folders
/
videos
List Videos in Folder
curl --request GET \
--url https://api.memories.ai/serve/api/v1/folders/videos \
--header 'Authorization: <api-key>'import requests
url = "https://api.memories.ai/serve/api/v1/folders/videos"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.memories.ai/serve/api/v1/folders/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.memories.ai/serve/api/v1/folders/videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.memories.ai/serve/api/v1/folders/videos"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.memories.ai/serve/api/v1/folders/videos")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.memories.ai/serve/api/v1/folders/videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"code": "0000",
"msg": "success",
"data": {
"current_page": 1,
"page_size": 20,
"total_count": 2,
"videos": [
{
"video_no": "VI606404158946574336",
"video_name": "182082-867762198_tiny",
"duration": 12,
"size": 3284512,
"status": "PARSE",
"create_time": 1754037217992,
"datetime_taken": 1729388400000,
"camera_model": "Canon EOS 5D",
"latitude": 39.9042,
"longitude": 116.4074,
"tags": [
"holiday",
"beijing",
"api"
],
"bucket": "mavi-resource",
"blob": "VI606404158946574336.mp4"
},
{
"video_no": "VI606402870447996928",
"video_name": "test_video_gz_visual_understanding_s36",
"duration": 61,
"size": 5324808,
"status": "PARSE",
"create_time": 1754036910783,
"bucket": "mavi-resource",
"blob": "VI606402870447996928.mp4"
}
]
},
"success": true,
"failed": false
}Product: Visual Search
Use case: Organize your indexed videos into folders and scope uploads/searches to a folder
Host:
https://api.memories.ai/serve/api/v1
Auth: Authorization: sk-mavi-... (no Bearer prefix)folder_id.
Prerequisites
- You have created a memories.ai API key.
- You have a folder id from List Folders.
Request Example
import requests
headers = {"Authorization": "sk-mavi-..."}
params = {"folder_id": 671631448308117504, "page": 1, "page_size": 20}
response = requests.get(
"https://api.memories.ai/serve/api/v1/folders/videos",
headers=headers,
params=params,
)
print(response.json())
cURL
curl --get "https://api.memories.ai/serve/api/v1/folders/videos" \
-H "Authorization: sk-mavi-..." \
--data-urlencode "folder_id=671631448308117504" \
--data-urlencode "page=1" \
--data-urlencode "page_size=20"
Parameters
integer
required
Folder to list.
-1 is the Default folder, -2 the legacy API folder. Any other value must be a folder that belongs to your account.integer
default:"1"
One-based page number. Must be > 0.
integer
default:"20"
Number of items per page. Must be > 0.
Response Example
{
"code": "0000",
"msg": "success",
"data": {
"current_page": 1,
"page_size": 20,
"total_count": 35,
"videos": [
{
"video_no": "VI671631448308117504",
"video_name": "demo",
"duration": 12345,
"size": 1048576,
"create_time": 1751856000000,
"status": "PARSE",
"video_url": "https://...",
"cover_url": "https://..."
}
]
}
}
Response Fields
string
Business status code.
0000 indicates success.string
Human-readable status message.
integer
The page number returned (one-based).
integer
Items per page.
integer
Total number of videos in the folder.
array
Videos in this page. Each item has the same shape as List Videos (
video_no, video_name, duration, size, create_time, status, video_url, cover_url, and any capture metadata).Notes & Limits
- A folder that does not belong to your account returns
Folder does not exist or does not belong to the current user. - Rate limiting: Folder endpoints share a per-account rate limit. See Rate limits.
Authorizations
Query Parameters
Folder to list. -1 Default folder, -2 legacy API folder, or a folder that belongs to your account.
One-based page number.
Items per page.
