Materials are uploaded directly to CDN/object storage via presigned URLs, then registered with the VMEG API. Bytes do not pass through the API gateway. Every upload-related POST in this flow requiresDocumentation Index
Fetch the complete documentation index at: https://docs.vmeg.ai/llms.txt
Use this file to discover all available pages before exploring further.
X-Idempotency-Key.
Choose an upload mode
| Mode | When to use |
|---|---|
| Single-file (presigned URL) | Smaller files, one PUT |
| Multipart | Large files, resumable parts |
Single-file upload
Get presigned URL
POST /openapi/v1/assets/material/upload/gen-upload-url with fileHash (MD5) and fileName.PUT file to CDN
If the response includes
data.material, the file was deduplicated — skip PUT. Otherwise upload bytes to data.uploadUrl.Example
The Java example uses Jackson (
ObjectMapper) for JSON. Add com.fasterxml.jackson.core:jackson-databind to your project, or parse responses with your preferred JSON library.Multipart upload
For large files:POST .../multipart/initiatePOST .../multipart/presign-parts— presigned URL per part- PUT each part to CDN and record each part
ETag POST .../multipart/complete— finalize and getmaterialId- On failure:
POST .../multipart/abort
recommendedPartSize from the initiate response (S3 minimum part size is typically 5 MB except the last part).
Example
After upload
UsematerialId in source.materialId for media translation. Manage assets via Materials.
