Skip to main content
GET
/
serve
/
api
/
v1
/
get_video_ids_by_task_id
Get Task Status
curl --request GET \
  --url https://api.memories.ai/serve/api/v1/get_video_ids_by_task_id \
  --header 'Authorization: <api-key>'
{
  "code": "0000",
  "msg": "success",
  "data": {},
  "success": true,
  "failed": false
}

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: Upload videos and images, auto-index them, then search by natural language, image, or transcript phrase Host: https://api.memories.ai/serve/api/v1 Auth: Authorization: sk-mavi-... (no Bearer prefix)
Track a batch upload task — the kind where one request expands into multiple videos — and retrieve the video_no of each video the task produced. This endpoint is for tasks that return a taskId, namely Upload from Social Media. Once the task downloads each video, it queues each one for indexing; this endpoint reports the per-video parse status as it progresses.
This endpoint is not for single-file uploads. Upload Video and Upload Image return a videoNo directly — there is no task to track. To poll the indexing status of a single video, call Get Metadata with the video_no instead, or register a callback URL at upload time.

Prerequisites

Endpoint

GET /serve/api/v1/get_video_ids_by_task_id

Request Example

import requests

headers = {
    "Authorization": "sk-mavi-..."
}
params = { 
    "task_id": "4b2d85ea-8b61-4689-96c3-75d907140242", 
    "unique_id": "1"
}
response = requests.get( 
    "https://api.memories.ai/serve/api/v1/get_video_ids_by_task_id", 
    headers=headers, 
    params=params
)
print("Status:", response.status_code)
print("Task Status Response:", response.json())
The request parameter is named task_id (snake_case), but the upload response returns taskId (camelCase). They refer to the same value — pass the string through as-is.

Request Parameters

task_id
string
required
The taskId returned by Upload from Social Media. Pass the string verbatim — the parameter name is snake_case here even though the upload response field is camelCase.
unique_id
string
Unique identifier scope. Must match the unique_id used at upload time. Defaults to "default".

Response Example

{
    "code": "0000",
    "msg": "success",
    "data": {
        "videos": [
            {
                "duration": "17",
                "status": "PARSE",
                "video_no": "VI624126275711397888",
                "video_name": "#football",
                "create_time": "1758262500019",
                "video_url": "https://mavi-resource.openinterx.com/VIabc123....mp4",
                "bucket": "mavi-resource",
                "blob": "VIabc123....mp4"
            },
            {
                "duration": "8",
                "status": "UNPARSE",
                "video_no": "VI624126275900141568",
                "video_name": "Salah",
                "create_time": "1758262500026",
                "video_url": "https://mavi-resource.openinterx.com/VIdef456....mp4",
                "bucket": "mavi-resource",
                "blob": "VIdef456....mp4"
            }
        ]
    },
    "failed": false,
    "success": true
}
Empty data.videos is ambiguous. A successful response with code: "0000" and data.videos: [] covers two cases that the server does not distinguish:
  1. The task is still downloading content from the source platform (videos haven’t been queued yet).
  2. The task_id does not exist or does not belong to this account.
Your polling loop should rely on a separate timeout to give up — there is no error code to detect “wrong task_id”.

Response Fields

code
string
Business status code. "0000" indicates success. Note that an unknown task_id also returns "0000".
msg
string
Human-readable status message.
data.videos
array
Per-video status entries produced by the task. Empty until the task has finished downloading each source post.
data.videos[].video_no
string
Unique identifier of the derived video. Use this in subsequent operations (search, get_metadata, download, delete).
data.videos[].video_name
string
Best-effort name for the derived video — typically the source post’s title, hashtag, or caption.
data.videos[].duration
string
Video duration in seconds, returned as a string.
data.videos[].create_time
string
Upload-into-library timestamp in milliseconds since epoch, returned as a string.
data.videos[].status
string
Processing status for this derived video. One of:
  • PARSE — Processing complete, video is searchable.
  • UNPARSE — Queued or being processed.
  • FAIL — Processing failed (e.g. source URL blocked, DRM-protected, or unsupported format). Common with media-channel YouTube content (NYT Cooking, Bon Appétit, etc.).
data.videos[].video_url
string
Hosted CDN URL of the stored video (on mavi-resource.openinterx.com). Suitable as a file_uri for Gemini VLM once status is PARSE.
data.videos[].bucket
string
GCS bucket of the original video file. Omitted when the storage location cannot be resolved.
data.videos[].blob
string
GCS blob (object) path of the video file. Use it with bucket at GET /serve/api/v2/download?bucket=&blob= to fetch the file directly.

Authorizations

Authorization
string
header
required

Query Parameters

task_id
string
required

The task ID returned by an upload or scraping request.

unique_id
string
default:default

Unique ID scope.

Response

200 - application/json

Successful response

code
Example:

"0000"

msg
string
Example:

"success"

data
success
boolean
Example:

true

failed
boolean
Example:

false