Generate a presigned URL for direct file upload. This allows clients to upload files directly to storage without passing through the API server. After uploading, call POST /files to create the database record.
curl -X POST https://app.mavera.io/api/v1/files/upload-url \
-H "Authorization: Bearer mvra_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"file_name": "image.png",
"file_type": "image/png",
"file_size": 524288,
"workspace_id": "ws_abc123"
}'{
"object": "upload_url",
"upload_url": "<string>",
"public_url": "<string>",
"key": "<string>",
"expires_in": 123,
"method": "PUT",
"headers": {
"Content-Type": "<string>",
"x-amz-checksum-sha256": "<string>"
},
"next_step": {
"description": "<string>",
"endpoint": "<string>",
"body": {}
}
}Documentation Index
Fetch the complete documentation index at: https://docs.mavera.io/llms.txt
Use this file to discover all available pages before exploring further.
API key prefixed with mvra_live_. Create keys at Settings > Developer > API Keys.
Name of the file to upload
MIME type of the file (e.g., 'image/png', 'application/pdf')
File size in bytes. Maximum 10MB for regular files, 2GB for video files.
x >= 1Workspace to upload the file to
SHA256 checksum of the file for integrity verification (optional)
Optional folder ID to organize the file
Presigned upload URL generated
Response containing the presigned upload URL and instructions
upload_url Presigned URL for uploading the file (PUT request)
Public URL where the file will be accessible after upload
Storage key for the file
Seconds until the upload URL expires (3600 = 1 hour)
HTTP method to use for uploading
PUT Headers to include when uploading to the presigned URL
Show child attributes
Instructions for completing the upload
Show child attributes
curl -X POST https://app.mavera.io/api/v1/files/upload-url \
-H "Authorization: Bearer mvra_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"file_name": "image.png",
"file_type": "image/png",
"file_size": 524288,
"workspace_id": "ws_abc123"
}'{
"object": "upload_url",
"upload_url": "<string>",
"public_url": "<string>",
"key": "<string>",
"expires_in": 123,
"method": "PUT",
"headers": {
"Content-Type": "<string>",
"x-amz-checksum-sha256": "<string>"
},
"next_step": {
"description": "<string>",
"endpoint": "<string>",
"body": {}
}
}