GET/auth/me
Read the authenticated account.
No parameters.
curl -X GET "https://api.streamvault.example/api/v1/auth/me" \
-H "Authorization: Bearer $API_KEY"Upload, organise and deliver video from your own applications. Choose the API that fits your integration.
For new integrations: Bearer authentication, JSON payloads and HTTP status codes.
https://api.streamvault.example/api/v1Bearer YOUR_API_KEY01 / Quickstart
Get your API key from your account settings, set it as $API_KEY on your server, then list your files.
curl -X GET "https://api.streamvault.example/api/v1/files" \
-H "Authorization: Bearer $API_KEY"Examples use placeholders. Replace values in braces with your file codes or UUIDs before running them.
Send Authorization: Bearer YOUR_API_KEY with each request. A session access token is also accepted. Keep credentials on your server; rotating your API key in Settings invalidates the previous key.
For JSON requests, also send Content-Type: application/json. Folder and upload session IDs are UUIDs; files use file codes.
Send API credentials and uploads directly to HTTPS URLs. An HTTP redirect cannot protect a key that has already crossed the network. Use HTTPS for presigned storage URLs too; never rewrite a signed URL to change its scheme.
The reserved example hostname is a placeholder unless a public API origin is configured. Local HTTP endpoints are for isolated development, not public integrations.
See fair usage limits and integration support.
Successful calls return JSON directly, without the Legacy envelope. Check the HTTP status before reading the response. A file list looks like this:
{
"page": 1,
"per_page": 100,
"files": []
}| HTTP status | Meaning |
|---|---|
| 400 | Invalid request or parameters |
| 401 | Missing, invalid or expired credentials |
| 403 | Access denied |
| 404 | Resource not found |
| 409 | Resource already exists |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
{ "error": "Unauthorized" }Authenticated requests share a limit of 10 requests per second per account. On HTTP 429, pause and retry with backoff.
Use the same account API key, with the new base URL and request format. Update your error handling to check HTTP status codes.
02 / API reference
Copy an example to run on your server. POST, PATCH and DELETE requests change account data.
/auth/meRead the authenticated account.
No parameters.
curl -X GET "https://api.streamvault.example/api/v1/auth/me" \
-H "Authorization: Bearer $API_KEY"/filesList and search your files.
Query: folder_id (UUID), q (title search), page (default 1), per_page (default 100, maximum 500).
curl -X GET "https://api.streamvault.example/api/v1/files" \
-H "Authorization: Bearer $API_KEY"/files/{code}Get metadata for one of your files.
Path: code is the file code.
curl -X GET "https://api.streamvault.example/api/v1/files/{code}" \
-H "Authorization: Bearer $API_KEY"/files/{code}Update a title, folder, visibility or download permission.
JSON: title, folder_id (UUID or null for root), is_public, allow_download. All fields optional.
curl -X PATCH "https://api.streamvault.example/api/v1/files/{code}" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Summer trip",
"is_public": false
}'/files/{code}/cloneCopy an accessible file into your account.
JSON: folder_id (UUID) and title, both optional.
curl -X POST "https://api.streamvault.example/api/v1/files/{code}/clone" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "My copy"
}'/files/bulkMove, delete, change privacy or rotate aliases for up to 100 files.
JSON: action (move, delete, privacy, rotate_aliases), file_codes (array). move accepts folder_id; privacy requires is_public.
curl -X POST "https://api.streamvault.example/api/v1/files/bulk" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "privacy",
"file_codes": [
"YOUR_FILE_CODE"
],
"is_public": false
}'/foldersList folders inside a parent, or at the root.
Query: parent_id (optional UUID). Omit it for root folders.
curl -X GET "https://api.streamvault.example/api/v1/folders" \
-H "Authorization: Bearer $API_KEY"/foldersCreate a folder.
JSON: name (required), parent_id (optional UUID), is_public (optional boolean).
curl -X POST "https://api.streamvault.example/api/v1/folders" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Travel",
"is_public": false
}'/folders/{id}Rename, move or change a folder’s visibility.
Path: id (UUID). JSON: name, parent_id (UUID or null for root), is_public. All fields optional.
curl -X PATCH "https://api.streamvault.example/api/v1/folders/{id}" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Travel films"
}'/folders/{id}Delete a folder.
Path: id is the folder UUID. This changes account data.
curl -X DELETE "https://api.streamvault.example/api/v1/folders/{id}" \
-H "Authorization: Bearer $API_KEY"/remoteRead remote upload jobs and available slots.
No parameters. Returns jobs, total_slots and used_slots.
curl -X GET "https://api.streamvault.example/api/v1/remote" \
-H "Authorization: Bearer $API_KEY"/remoteQueue videos from remote URLs.
JSON: urls (required array, 1–100 URLs), folder_id (optional UUID), title (optional, applies to a single URL).
curl -X POST "https://api.streamvault.example/api/v1/remote" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://example.com/video.mp4"
]
}'/remote/actionsRetry failed jobs or clear the remote upload queue.
JSON: restart_errors, clear_errors, clear_all (optional booleans), delete_code (optional file code).
curl -X POST "https://api.streamvault.example/api/v1/remote/actions" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"restart_errors": true
}'/upload/initStart a multipart upload or a proof-of-possession challenge.
JSON: filename, size_bytes, mime_type, blake3_hash (required). folder_id and title are optional.
curl -X POST "https://api.streamvault.example/api/v1/upload/init" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filename": "video.mp4",
"size_bytes": 734003200,
"mime_type": "video/mp4",
"blake3_hash": "BLAKE3_HEX_OF_YOUR_FILE"
}'/upload/partsRequest presigned URLs for upload parts.
JSON: session_id (UUID), part_numbers (array of part numbers).
curl -X POST "https://api.streamvault.example/api/v1/upload/parts" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"session_id": "YOUR_SESSION_UUID",
"part_numbers": [
1,
2
]
}'/upload/completeFinalize an upload after sending all parts.
JSON: session_id, parts (array of part_number and etag). Use the ETag returned by storage.
curl -X POST "https://api.streamvault.example/api/v1/upload/complete" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"session_id": "YOUR_SESSION_UUID",
"parts": [
{
"part_number": 1,
"etag": "ETAG_FROM_STORAGE"
}
]
}'/upload/proveComplete a deduplicated upload using the returned challenge.
JSON: session_id, proof (hex BLAKE3 of decoded nonce bytes followed by the challenged file range).
curl -X POST "https://api.streamvault.example/api/v1/upload/prove" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"session_id": "YOUR_SESSION_UUID",
"proof": "BLAKE3_PROOF_HEX"
}'/upload/{id}Inspect an upload session and resume progress.
Path: id is the upload session UUID.
curl -X GET "https://api.streamvault.example/api/v1/upload/{id}" \
-H "Authorization: Bearer $API_KEY"/upload/{id}Abort an upload session.
Path: id is the upload session UUID. This cancels the upload.
curl -X DELETE "https://api.streamvault.example/api/v1/upload/{id}" \
-H "Authorization: Bearer $API_KEY"03 / Upload workflow
POST /upload/init with its metadata.POST /upload/parts.POST /upload/complete. Check GET /upload/{id} to resume a session.POST /upload/prove.All paths above are relative to /api/v1. To import an existing remote video instead, use POST /remote.
04 / Delivery
Both APIs use the same player. Embed a file at /e/{file_code}. Set a poster, subtitles and autoplay below, then copy the embed code.
https://streamvault.example/e/FILE_CODE<iframe src="https://streamvault.example/e/FILE_CODE" width="640" height="360" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>Enter a file code to preview the player.