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: Stream a stored resource directly from GCS using the
bucket and blob pair returned by search / list / metadata endpoints
Host: https://api.memories.ai/serve/api/v1
Auth: Authorization: sk-mavi-... (no Bearer prefix)bucket + blob pair returned in the response of other Visual Search endpoints (search results, list_videos, get_metadata, transcription, etc.). The response body is a binary file stream; errors are returned as JSON.
This is functionally equivalent to Download Video but addresses the resource by its storage location directly, so it also works for keyframe images and any other resource whose bucket / blob is exposed by the API — not just the video file behind a video_no.
Pricing: Billed by bytes downloaded ($0.12 / GB), same model as Download Asset.
Prerequisites
- You have created a memories.ai API key.
- You have a
bucket/blobpair from another endpoint — common sources:data[].video_bucket/data[].video_blobanddata[].keyframe_bucket/data[].keyframe_blobfrom Search by Text, Search Public — by Text, Search by Image, Search by Transcript, etc.data.bucket/data.blobfrom Get Metadata, List Videos, Get Task Status.data.video_bucket/data.video_blobfrom Get Audio Transcription and Get Video Transcription.
Endpoint
Authentication
Query Parameters
GCS bucket name carrying the resource (e.g. the
bucket / video_bucket / keyframe_bucket from a previous response).GCS blob (object) path inside
bucket. URL-encode any reserved characters (slashes inside the blob path are allowed and should not be encoded as %2F).Code Examples
Successful Response
On success, the server streams the file as binary content:- Status: 200
- Content-Type: typically
application/octet-streamor the original MIME type - Content-Disposition:
attachment; filename="..."— the original filename - Body: binary content of the resource
The download uses HTTP chunked transfer encoding, so
Content-Length is often absent. Don’t rely on it for progress bars — iterate over chunks instead.Error Response (JSON)
Errors are returned as JSON instead of a binary stream. Branch onContent-Type rather than parsing message strings.
Missing bucket:
blob:
Notes & Limits
- Rate limiting: shares the per-account download rate limit with Download Video. Exceeding the limit returns “Request has exceeded the limit.” — see Rate limits.
- Billing: charged by bytes downloaded, not by call count. The deduction happens before the stream is written; you will not be charged for
Resource does not existerrors. bucket/bloblifetime: the values can become invalid if the underlying video is deleted via Delete Video. Always be ready to handle theResource does not existerror.- Use the right pair: when downloading a clip’s matched keyframe, use
keyframe_bucket+keyframe_blob; when downloading the full video, usevideo_bucket+video_blob(orbucket+blobfromget_metadata/list_videos).
Related Endpoints
- Download Video — POST-by-
video_noequivalent. Use this when you already have avideo_noand want to skip resolving itsbucket/blobfirst. - Download Asset — Visual Intelligence v2 equivalent, by
asset_id.
