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.
Authentication
Every request requires your API key in the Authorization header:
Authorization: sk-mavi-...
Requests without a valid key are rejected with a 401 error. See Create Your Key.
Indexing Pipeline
When you upload content, the platform runs two indexing pipelines in parallel and automatically — you don’t need to trigger them:
| Pipeline | What it does | Enables |
|---|
| Embedding | Encodes visual frames and audio into semantic vectors | Natural-language search, image search |
| Caption & transcription | Generates scene descriptions and transcribes speech | Transcript search, audio search |
Task Status
Every uploaded item has a processing status:
| Status | Meaning |
|---|
UNPARSE | Upload accepted — indexing in progress. Not yet searchable. |
PARSE | Indexing complete. Fully searchable across all modalities. |
To wait for PARSE, either register a callback URL at upload time, or poll the status. The right polling endpoint depends on the upload method — see Upload Overview → How to wait for indexing to finish for the per-method mapping.
A Note on Field Casing
The Visual Search API mixes camelCase and snake_case across endpoints. The same logical concept can appear with different casings in different responses or parameter names:
| Concept | Casing varies |
|---|
| Video identifier | Upload returns videoNo; list_videos / get_metadata / get_video_ids_by_task_id responses use video_no; request parameters use video_no |
| Task identifier | upload_from_creator returns taskId; get_video_ids_by_task_id request parameter is task_id |
| Timestamps in search results | startTime, endTime (camel) in search responses; start_time, end_time (snake) in search_clips_by_image |
Pass the value through verbatim — both casings refer to the same underlying ID. Each endpoint page documents the exact field names it uses.
Callback Notifications
When you provide a callback URL on upload, the platform POSTs to it when indexing finishes:
{
"videoNo": "VI554046065381212160",
"status": "PARSE"
}
The platform retries up to 5 times on failure. Use a tool like Beeceptor to test webhook delivery during development.
Namespaces (unique_id)
Every upload and search accepts a unique_id parameter. A namespace is a partition key that scopes content within your account — uploads and searches under the same unique_id form an isolated slice of your library that is invisible to other namespaces.
Namespaces are created automatically on first use. They can represent anything that naturally partitions your data:
| Use case | Example unique_id |
|---|
| One namespace per end-user | user_12345 |
| One namespace per customer / tenant | acme_corp |
| One namespace per project | product_launch_q3 |
| One namespace per environment | staging |
Omit unique_id (or pass "default") to use the default namespace. Use List Unique IDs to enumerate all namespaces under your account.
Rate Limits & Billing
- All endpoints are rate-limited per account. See Rate Limits.
- Uploads and searches deduct credits from your account balance. Insufficient balance causes requests to fail.