Memories Serve API
The Serve API from Memories — 30 operation(s) for serve.
The Serve API from Memories — 30 operation(s) for serve.
openapi: 3.1.0
info:
title: Memories Platform API (Docs Mapping) Serve API
version: v1
description: OpenAPI mapping used by Mintlify Try it for the platform docs.
servers:
- url: https://api.memories.ai
security:
- ApiKeyAuth: []
tags:
- name: Serve
paths:
/serve/api/v1/memories/add:
post:
summary: Add Memory
operationId: add_memory
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddMemoryRequest'
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/get_audio_transcription:
get:
summary: Get Audio Transcription
operationId: get_audio_transcription
parameters:
- name: video_no
in: query
required: true
schema:
type: string
description: The unique video ID returned by the upload API.
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/delete_videos:
post:
summary: Delete Videos
operationId: delete_videos
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteVideosRequest'
example:
- VI1234567890
- VI0987654321
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/download:
post:
summary: Download Video
operationId: download_video
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadVideoRequest'
responses:
'200':
$ref: '#/components/responses/BinaryDownloadResponse'
tags:
- Serve
/serve/api/v1/get_video_ids_by_task_id:
get:
summary: Get Task Status
operationId: get_task_status
parameters:
- name: task_id
in: query
required: true
schema:
type: string
description: The task ID returned by an upload or scraping request.
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/memories:
post:
summary: List Memories
operationId: list_memories
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ListMemoriesRequest'
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/get_metadata:
get:
summary: Get Video Metadata
operationId: get_video_metadata
parameters:
- name: video_no
in: query
required: true
schema:
type: string
example: VI606404158946574336
description: Video identifier. Must be non-empty.
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/GetMetadataResponse'
tags:
- Serve
/serve/api/v1/list_videos:
post:
summary: List Videos
operationId: list_videos
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ListVideosRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListVideosResponse'
tags:
- Serve
/serve/api/v1/chat_personal_stream:
post:
summary: Chat with Personal Media Entities
operationId: chat_personal_stream
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PersonalMediaChatRequest'
responses:
'200':
$ref: '#/components/responses/SseOrJsonResponse'
tags:
- Serve
/serve/api/v1/search_clips_by_image:
post:
summary: Search Clips by Image
operationId: search_clips_by_image
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/SearchClipsByImageRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchClipsByImageResponse'
tags:
- Serve
/serve/api/v1/search_audio_transcripts:
get:
summary: Search from Audio
operationId: search_audio_transcripts
parameters:
- name: query
in: query
required: true
schema:
type: string
description: Audio transcript search text (LIKE match). Must be non-empty.
- name: page
in: query
schema:
type: integer
default: 1
minimum: 1
description: One-based page number. Must be > 0.
- name: page_size
in: query
schema:
type: integer
default: 100
minimum: 1
maximum: 500
description: Results per page. Range 1-500.
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchAudioTranscriptsResponse'
tags:
- Serve
/serve/api/v1/memories/search:
post:
summary: Search Memories
operationId: search_memories
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchMemoriesRequest'
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/search:
post:
summary: Search from Private Library
operationId: search_private_library
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchPrivateRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchPrivateResponse'
tags:
- Serve
/serve/api/v1/search_public:
post:
summary: Search from Public Video Sources
operationId: search_public_library
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchPublicRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchPublicResponse'
tags:
- Serve
/serve/api/v1/search_public_similar_images:
post:
summary: Search Public Videos by Image
operationId: search_public_similar_images
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/SearchSimilarImagesRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/SearchSimilarImagesResponse'
tags:
- Serve
/serve/api/v1/upload_img:
post:
summary: Upload Image from File
operationId: upload_image_from_file
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadImageRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/UploadImageResponse'
tags:
- Serve
/serve/api/v1/scraper:
post:
summary: Upload Video from Platform Creator URL
operationId: upload_video_from_creator_url
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UploadVideoFromCreatorRequest'
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/upload:
post:
summary: Upload Video from File
operationId: upload_video_from_file
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadVideoRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/UploadVideoResponse'
tags:
- Serve
/serve/api/v1/scraper_tag:
post:
summary: Upload Video from Hashtag
operationId: upload_video_from_hashtag
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UploadVideoFromHashtagRequest'
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/scraper_url:
post:
summary: Upload Video from Platform URL
operationId: upload_video_from_platform_url
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UploadVideoFromPlatformUrlRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ScraperTaskResponse'
tags:
- Serve
/serve/api/v1/upload_url:
post:
summary: Upload Video from URL
operationId: upload_video_from_url
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UploadVideoFromUrlRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/UploadVideoResponse'
tags:
- Serve
/serve/api/v1/chat:
post:
summary: Video Chat
operationId: video_chat
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VideoChatRequest'
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/marketer_chat:
post:
summary: Video Marketer
operationId: video_marketer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VideoMarketerRequest'
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/get_video_caption:
get:
summary: Get Video Caption
operationId: get_video_caption
parameters:
- name: video_no
in: query
required: true
schema:
type: string
description: The unique video ID returned by the upload API.
responses:
'200':
$ref: '#/components/responses/SuccessJson'
tags:
- Serve
/serve/api/v1/folders:
get:
summary: List Folders
operationId: list_folders
description: List all folders in your account.
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FolderListResponse'
tags:
- Serve
/serve/api/v1/folders/create:
post:
summary: Create Folder
operationId: create_folder
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- name
properties:
name:
type: string
maxLength: 100
example: my-project
description: Folder name. Max 100 chars, unique within your account.
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FolderItemResponse'
tags:
- Serve
/serve/api/v1/folders/rename:
post:
summary: Rename Folder
operationId: rename_folder
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- folder_id
- new_name
properties:
folder_id:
type: integer
example: 671631448308117500
description: Folder id to rename. Must be > 0 and belong to your account.
new_name:
type: string
maxLength: 100
example: renamed-project
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/FolderItemResponse'
tags:
- Serve
/serve/api/v1/folders/delete:
post:
summary: Delete Folder
operationId: delete_folder
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- folder_id
properties:
folder_id:
type: integer
example: 671631448308117500
description: Folder id to delete. Must be > 0 and belong to your account. Fails if it contains parsed videos.
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/GenericJsonResponse'
tags:
- Serve
/serve/api/v1/folders/videos:
get:
summary: List Videos in Folder
operationId: list_folder_videos
parameters:
- name: folder_id
in: query
required: true
schema:
type: integer
example: 671631448308117500
description: Folder to list. -1 Default folder, -2 legacy API folder, or a folder that belongs to your account.
- name: page
in: query
schema:
type: integer
default: 1
description: One-based page number.
- name: page_size
in: query
schema:
type: integer
default: 20
description: Items per page.
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListVideosResponse'
tags:
- Serve
/serve/api/v1/folders/move:
post:
summary: Move Videos to Folder
operationId: move_videos_to_folder
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- folder_id
- video_nos
properties:
folder_id:
type: integer
example: 671631448308117500
description: Target folder id. -1 = Default folder. Must already exist and belong to your account (not auto-created).
video_nos:
type: array
items:
type: string
maxItems: 500
example:
- VI671631448308117504
description: Video identifiers to move. Max 500 per request.
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/GenericJsonResponse'
tags:
- Serve
components:
schemas:
UploadVideoFromCreatorRequest:
type: object
properties:
username:
type: string
example: https://www.tiktok.com/@cutshall73
scraper_cnt:
type: integer
default: 4
callback_url:
type: string
format: uri
example: https://your.app/callback
folder_id:
type: integer
description: 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
required:
- username
UploadImageResponse:
type: object
properties:
code:
type: string
example: '0000'
description: Business status code. 0000 indicates success.
msg:
type: string
example: success
data:
type: array
items:
type: object
properties:
id:
type: integer
format: int64
example: 568102998803353600
description: Unique numeric identifier of the uploaded image.
example:
- id: 568102998803353600
- id: 568102998803353600
success:
type: boolean
example: true
failed:
type: boolean
example: false
example:
code: '0000'
msg: success
data:
- id: 568102998803353600
- id: 568102998803353600
success: true
failed: false
FolderItem:
type: object
properties:
folder_id:
type: integer
example: 671631448308117500
description: Folder identifier. -1 = Default folder; -2 = legacy API folder (read-only).
folder_name:
type: string
example: my-project
UploadVideoFromHashtagRequest:
type: object
properties:
hash_tags:
type: array
items:
type: string
example:
- LVMH
scraper_cnt:
type: integer
default: 2
callback:
type: string
format: uri
example: https://your.app/callback
folder_id:
type: integer
description: 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
required:
- hash_tags
FlexibleFilter:
type: object
additionalProperties: true
description: Flexible filter object used by memories list and search endpoints.
MemoryEntryInput:
type: object
properties:
role:
type: string
example: Tester
content:
type: string
example: Starting testing today
required:
- role
- content
VideoMarketerRequest:
type: object
properties:
prompt:
type: string
example: What does nike recently post?
session_id:
type: string
example: ''
type:
type: string
enum:
- TIKTOK
- YOUTUBE
- INSTAGRAM
default: TIKTOK
required:
- prompt
SearchAudioTranscriptsResponse:
type: object
properties:
code:
type: string
example: '0000'
msg:
type: string
example: success
data:
type: object
properties:
current_page:
type: integer
example: 1
page_size:
type: integer
example: 100
total_count:
type: integer
format: int64
example: 2
videos:
type: array
items:
type: object
properties:
videoNo:
type: string
example: VI576925607808602112
videoName:
type: string
example: '1920447021987282945'
startTime:
type: string
example: '13'
description: Matched segment start time in seconds.
audio_ts:
type: string
example: '... where is the love ...'
description: Matched transcript text.
video_bucket:
type: string
description: GCS bucket of the original video file. Omitted when the storage location cannot be resolved.
video_blob:
type: string
description: GCS blob (object) path of the original video. Use it with video_bucket at GET /serve/api/v2/download to fetch the file directly.
success:
type: boolean
example: true
failed:
type: boolean
example: false
example:
code: '0000'
msg: success
data:
current_page: 1
page_size: 100
total_count: 2
videos:
- videoNo: VI576925607808602112
videoName: '1920447021987282945'
startTime: '13'
audio_ts: '... where is the love ...'
video_bucket: mavi-resource
video_blob: VI576925607808602112.mp4
success: true
failed: false
SearchClipsByImageRequest:
type: object
properties:
file:
type: string
format: binary
description: 'Query image. Allowed extensions: .jpg/.jpeg/.png/.gif/.bmp/.webp. Content-Type must start with image/. Max 20 MB.'
video_no:
type: string
example: VI625239098370850816
description: Unique identifier of the video to search within. Must be non-empty.
prompt:
type: string
example: focus on the red shirt, ignore background color
description: Natural-language prompt that refines the visual match. Must be non-empty. English recommended.
required:
- file
- video_no
- prompt
DeleteVideosRequest:
type: array
items:
type: string
description: Raw JSON array of video IDs to delete.
FolderListResponse:
type: object
properties:
code:
type: string
example: '0000'
msg:
type: string
example: success
data:
type: object
properties:
folders:
type: array
items:
$ref: '#/components/schemas/FolderItem'
SearchPublicResponse:
type: object
properties:
code:
type: string
example: '0000'
msg:
type: string
example: success
data:
type: array
items:
type: object
properties:
videoNo:
type: string
example: PI-600947902470296459
videoName:
type: string
example: They played in their OPPONENTS jerseys?!?
startTime:
type: string
example: '23'
endTime:
type: string
example: '27'
audio_ts:
type: string
description: Matched audio transcript (populated for BY_AUDIO).
score:
type: number
format: double
example: 0.7350679636001586
video_bucket:
type: string
description: GCS bucket of our cached copy of the public video. Omitted when the storage location cannot be resolved.
video_blob:
type: string
description: GCS blob path of the cached video. Use with video_bucket at GET /serve/api/v2/download to fetch the file directly.
keyframe_bucket:
type: string
description: GCS bucket of the matched keyframe image (BY_CLIP only).
keyframe_blob:
type: string
description: GCS blob path of the matched keyframe image.
success:
type: boolean
example: true
failed:
type: boolean
example: false
example:
code: '0000'
msg: success
data:
- videoNo: PI-600947902470296459
videoName: They played in their OPPONENTS jerseys?!?
startTime: '23'
endTime: '27'
audio_ts: '...matched transcript text...'
score: 0.7350679636001586
video_bucket: mavi-public-video
video_blob: <scraper-id>.mp4
keyframe_bucket: mavi-public-keyframe
keyframe_blob: <uuid>/keyframe-000023.jpg
success: true
failed: false
SearchMemoriesRequest:
type: object
properties:
page:
type: integer
default: 1
page_size:
type: integer
default: 20
filters:
$ref: '#/components/schemas/FlexibleFilter'
query:
type: string
example: Technology
required:
- query
DownloadVideoRequest:
type: object
properties:
video_no:
type: string
example: VI625239098370850816
required:
- video_no
VideoChatRequest:
type: object
properties:
video_nos:
type: array
items:
type: string
example:
- VI625239098370850816
prompt:
type: string
example: Summarize the emotional moments in these videos
session_id:
type: string
example: session-123
required:
- video_nos
- prompt
UploadVideoResponse:
type: object
properties:
code:
type: string
example: '0000'
description: Business status code. 0000 indicates success.
msg:
type: string
example: success
data:
type: object
properties:
videoNo:
type: string
example: VI568102998803353600
description: Unique identifier of the uploaded video. Use this for all subsequent operations.
videoName:
type: string
example: 1be6a69f3c6e49bf986235d68807ab1f
description: Internal stored name of the video.
videoStatus:
type: string
example: UNPARSE
description: Initial processing status. UNPARSE immediately after upload; transitions to parsing asynchronously.
uploadTime:
type: string
example: '1744905509814'
description: Upload timestamp in milliseconds since epoch (as string).
example:
videoNo: VI568102998803353600
videoName: 1be6a69f3c6e49bf986235d68807ab1f
videoStatus: UNPARSE
uploadTime: '1744905509814'
success:
type: boolean
example: true
failed:
type: boolean
example: false
example:
code: '0000'
msg: success
data:
videoNo: VI568102998803353600
videoName: 1be6a69f3c6e49bf986235d68807ab1f
videoStatus: UNPARSE
uploadTime: '1744905509814'
success: true
failed: false
ListVideosRequest:
type: object
properties:
page:
type: integer
default: 1
minimum: 1
description: One-based page number. Must be > 0.
size:
type: integer
default: 200
minimum: 1
description: Items per page. Must be > 0.
video_name:
type: string
description: Exact-match filter on the stored video name.
video_no:
type: string
description: Exact-match filter on a single video identifier.
video_nos:
type: array
items:
type: string
description: Restrict results to a specific set of video identifiers. Combined via AND with other filters; intersected with the metadata-filter result when both are used.
example:
- VI606404158946574336
- VI606402870447996928
status:
type: string
enum:
- PARSE
- UNPARSE
- FAILED
description: Filter by processing status.
camera_model:
type: string
example: Canon EOS 5D
description: 'Metadata filter: exact-match on the camera_model supplied at upload time.'
tag:
type: string
example: holiday
description: 'Metadata filter: single tag that must be present on the video.'
datetime_taken:
type: integer
format: int64
example: 1729388400000
description: 'Metadata filter: minimum capture timestamp in milliseconds since epoch. Matches videos whose capture_timestamp >= this value.'
latitude:
type: number
format: double
example: 39.9042
description: 'Metadata filter: decimal latitude. Must be supplied together with longitude.'
longitude:
type: number
format: double
example: 116.4074
description: 'Metadata filter: decimal longitude. Must be supplied together with latitude. ~20 km geo-within radius.'
folder_id:
type: integer
description: Optional. Restrict results to a single folder. Omit to query across your entire account. -1 is the Default folder; a positive id must belong to your account.
example: 671631448308117500
PersonalMediaChatRequest:
type: object
properties:
session_id:
type: string
example: ''
prompt:
type: string
example: When did I went to the beach?
required:
- prompt
SearchPrivateRequest:
type: object
properties:
search_param:
type: string
example: boat in the ocean
description: Natural-language search query. Must be non-empty.
search_type:
type: string
enum:
- BY_VIDEO
- BY_CLIP
- BY_AUDIO
- BY_IMAGE
- BY_CAPTION
default: BY_CLIP
example: BY_CLIP
description: Search modality. BY_VIDEO is treated as BY_CLIP internally. BY_CAPTION performs vector search over the video_transcript table and returns a different item shape (see response).
top_k:
type: integer
default: 100
minimum: 1
maximum: 1000
description: Maximum number of results to return. Range 1-1000 for BY_CLIP/BY_AUDIO/BY_IMAGE. For BY_CAPTION the range is 1-200 (server-side default is 10 when null).
filtering_level:
type: string
enum:
- low
- medium
- high
example: medium
description: Similarity-score filter. low=0.15, medium=0.225, high=0.4.
video_nos:
type: array
items:
type: string
maxItems: 100
example:
- VI635764894954369024
description: Optional list of video numbers to restrict the search to. Max 100.
tag:
type: string
example: test1
description: Optional tag filter.
camera_tag:
type: string
example: Canon EOS 5D
description: Optional c
# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/memories/refs/heads/main/openapi/memories-serve-api-openapi.yml