Skip to main content
GET
Get Video Metadata
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)
Fetch the full metadata record for a single video in your Private Video Library — status, duration, resolution, GPS, camera model, and tags. This is also the canonical way to poll indexing status after Upload Video or Upload Image — read data.status and wait for it to become PARSE.

Prerequisites

  • You have created a memories.ai API key.
  • You have uploaded the target video using the Upload API (metadata fields only become available after the video finishes parsing and its summary row is populated).

Endpoint

GET /serve/api/v1/get_metadata

Authentication

Pass your API key in the Authorization request header. Requests without a valid API key are rejected.

Request Example

Query Parameters

string
required
The video identifier returned by the upload API (e.g. VI606404158946574336). Must be non-empty.

Notes & Limits

  • Rate limiting: The endpoint is protected by a per-account rate limit. Exceeding the limit returns an error indicating the request has exceeded the limit.
  • Metadata availability: The capture-time metadata fields (datetime_taken / camera_model / latitude / longitude) are only present when the corresponding value was supplied at upload and the video’s summary row has been written (i.e. after parsing completes). Videos not yet parsed return the basic fields only.
  • Not found is not an error: If the video does not exist (or does not belong to this account), the response is code: "0000", success: true, data: null — check data for None explicitly rather than relying on the status code.
  • Numeric field types are inconsistent: duration, size, and create_time are returned as strings; fps, width, height are returned as actual integers. Cast duration/size/create_time with int(...) before arithmetic.

Response Example

Response Fields

string
Business status code. 0000 indicates success.
string
Human-readable status message.
object
The video item. null when the video is not found.

Basic fields

string
Unique video identifier.
string
Internal stored name of the video.
string
Video duration in seconds, returned as a string (int(duration) to use it).
string
File size in bytes, returned as a string.
string
Upload time in milliseconds since epoch, returned as a string.
string
Processing status. One of PARSE, UNPARSE, FAIL.
string
Failure reason — only present when status=FAIL.
string
Human-readable resolution label (e.g. 720p, 1080p). Lower-case p.
integer
Frames per second.
integer
Frame width in pixels.
integer
Frame height in pixels.

Metadata fields

These are only present when the corresponding value was supplied at upload time and the video’s summary row has been written.
string
Capture timestamp in milliseconds since epoch, returned as a string.
string
Camera/device model recorded at upload.
number
Decimal latitude.
number
Decimal longitude.
array
Combined tag set: user-supplied tags from upload plus scene/object tags auto-generated by the indexing pipeline (e.g. living_room, couch, cat), plus the auto-appended api tag. Unlike list_videos, this endpoint always returns tags once the video has finished parsing, even if no user tags were supplied at upload — the auto tags alone are enough to populate it.

Storage fields

string
GCS bucket of the video file. Omitted when the storage location cannot be resolved.
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. Note: video_url and cover_url are deliberately not returned by this endpoint — use bucket/blob instead.

Authorizations

Authorization
string
header
required

Query Parameters

video_no
string
required

Video identifier. Must be non-empty.

Response

200 - application/json

Successful response

code
string
Example:

"0000"

msg
string
Example:

"success"

data
object | null
success
boolean
Example:

true

failed
boolean
Example:

false