curl --request POST \
--url https://pria.praxislxp.com/api/user/files \
--header 'Content-Type: multipart/form-data' \
--header 'x-access-token: <api-key>' \
--form files=@example-file \
--form confidential=false \
--form 'fileConfidential={"report.pdf": true, "notes.txt": false}' \
--form skipIndexing=false \
--form 'fileSkipIndexing={"report.pdf": true}' \
--form institution=6631915765bb0a94cfd6ca99 \
--form account_shared=false \
--form 'selectedCourse={"course_id": 1750532703472, "course_name": "Research"}' \
--form selectedAssistant=6856fa89cbafcff8d98680f5 \
--form collection=6631915765bb0a94cfd6ca99import requests
url = "https://pria.praxislxp.com/api/user/files"
files = { "files": ("example-file", open("example-file", "rb")) }
payload = {
"confidential": "false",
"fileConfidential": "{\"report.pdf\": true, \"notes.txt\": false}",
"skipIndexing": "false",
"fileSkipIndexing": "{\"report.pdf\": true}",
"institution": "6631915765bb0a94cfd6ca99",
"account_shared": "false",
"selectedCourse": "{\"course_id\": 1750532703472, \"course_name\": \"Research\"}",
"selectedAssistant": "6856fa89cbafcff8d98680f5",
"collection": "6631915765bb0a94cfd6ca99"
}
headers = {"x-access-token": "<api-key>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('files', '<string>');
form.append('confidential', 'false');
form.append('fileConfidential', '{"report.pdf": true, "notes.txt": false}');
form.append('skipIndexing', 'false');
form.append('fileSkipIndexing', '{"report.pdf": true}');
form.append('institution', '6631915765bb0a94cfd6ca99');
form.append('account_shared', 'false');
form.append('selectedCourse', '{"course_id": 1750532703472, "course_name": "Research"}');
form.append('selectedAssistant', '6856fa89cbafcff8d98680f5');
form.append('collection', '6631915765bb0a94cfd6ca99');
const options = {method: 'POST', headers: {'x-access-token': '<api-key>'}};
options.body = form;
fetch('https://pria.praxislxp.com/api/user/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pria.praxislxp.com/api/user/files",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"confidential\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileConfidential\"\r\n\r\n{\"report.pdf\": true, \"notes.txt\": false}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"skipIndexing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileSkipIndexing\"\r\n\r\n{\"report.pdf\": true}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"institution\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_shared\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedCourse\"\r\n\r\n{\"course_id\": 1750532703472, \"course_name\": \"Research\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedAssistant\"\r\n\r\n6856fa89cbafcff8d98680f5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"collection\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://pria.praxislxp.com/api/user/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"confidential\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileConfidential\"\r\n\r\n{\"report.pdf\": true, \"notes.txt\": false}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"skipIndexing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileSkipIndexing\"\r\n\r\n{\"report.pdf\": true}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"institution\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_shared\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedCourse\"\r\n\r\n{\"course_id\": 1750532703472, \"course_name\": \"Research\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedAssistant\"\r\n\r\n6856fa89cbafcff8d98680f5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"collection\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://pria.praxislxp.com/api/user/files")
.header("x-access-token", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"confidential\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileConfidential\"\r\n\r\n{\"report.pdf\": true, \"notes.txt\": false}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"skipIndexing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileSkipIndexing\"\r\n\r\n{\"report.pdf\": true}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"institution\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_shared\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedCourse\"\r\n\r\n{\"course_id\": 1750532703472, \"course_name\": \"Research\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedAssistant\"\r\n\r\n6856fa89cbafcff8d98680f5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"collection\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"confidential\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileConfidential\"\r\n\r\n{\"report.pdf\": true, \"notes.txt\": false}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"skipIndexing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileSkipIndexing\"\r\n\r\n{\"report.pdf\": true}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"institution\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_shared\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedCourse\"\r\n\r\n{\"course_id\": 1750532703472, \"course_name\": \"Research\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedAssistant\"\r\n\r\n6856fa89cbafcff8d98680f5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"collection\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Upload completed",
"files": [
{
"fieldname": "files",
"originalname": "<string>",
"filename": "<string>",
"mimetype": "<string>",
"size": 123,
"success": true,
"message": "<string>",
"usage": 123,
"uploadId": "<string>",
"file_url": "<string>",
"file_title": "<string>",
"file_summary": "<string>",
"summary_model": "<string>",
"image_analysis_model": "<string>",
"embeddings_model": "<string>",
"is_public": true,
"is_private": true,
"status": "<string>",
"thumbnail": "<string>",
"queued": true,
"ingestion": {
"phase": "queued",
"progress": 123,
"attempts": 123,
"enqueuedAt": "2023-11-07T05:31:56Z",
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"lastError": "<string>",
"errorClass": "permanent"
}
}
]
}{
"error": "File too large",
"message": "File size exceeds 500MB limit"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}{
"success": false,
"message": "File uploads are disabled for your account"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}Upload files
Uploads one or more files to the user’s IP Vault for RAG processing and embedding. Files are uploaded via multipart form-data using the ‘files’ field name. Audio files (mp3, m4a, webm, wav, mp4, mov, etc.) are limited to 25MB each. Non-audio files are limited to 150MB each. The multer middleware enforces a 500MB overall limit per file before the handler’s own size checks.
curl --request POST \
--url https://pria.praxislxp.com/api/user/files \
--header 'Content-Type: multipart/form-data' \
--header 'x-access-token: <api-key>' \
--form files=@example-file \
--form confidential=false \
--form 'fileConfidential={"report.pdf": true, "notes.txt": false}' \
--form skipIndexing=false \
--form 'fileSkipIndexing={"report.pdf": true}' \
--form institution=6631915765bb0a94cfd6ca99 \
--form account_shared=false \
--form 'selectedCourse={"course_id": 1750532703472, "course_name": "Research"}' \
--form selectedAssistant=6856fa89cbafcff8d98680f5 \
--form collection=6631915765bb0a94cfd6ca99import requests
url = "https://pria.praxislxp.com/api/user/files"
files = { "files": ("example-file", open("example-file", "rb")) }
payload = {
"confidential": "false",
"fileConfidential": "{\"report.pdf\": true, \"notes.txt\": false}",
"skipIndexing": "false",
"fileSkipIndexing": "{\"report.pdf\": true}",
"institution": "6631915765bb0a94cfd6ca99",
"account_shared": "false",
"selectedCourse": "{\"course_id\": 1750532703472, \"course_name\": \"Research\"}",
"selectedAssistant": "6856fa89cbafcff8d98680f5",
"collection": "6631915765bb0a94cfd6ca99"
}
headers = {"x-access-token": "<api-key>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('files', '<string>');
form.append('confidential', 'false');
form.append('fileConfidential', '{"report.pdf": true, "notes.txt": false}');
form.append('skipIndexing', 'false');
form.append('fileSkipIndexing', '{"report.pdf": true}');
form.append('institution', '6631915765bb0a94cfd6ca99');
form.append('account_shared', 'false');
form.append('selectedCourse', '{"course_id": 1750532703472, "course_name": "Research"}');
form.append('selectedAssistant', '6856fa89cbafcff8d98680f5');
form.append('collection', '6631915765bb0a94cfd6ca99');
const options = {method: 'POST', headers: {'x-access-token': '<api-key>'}};
options.body = form;
fetch('https://pria.praxislxp.com/api/user/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pria.praxislxp.com/api/user/files",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"confidential\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileConfidential\"\r\n\r\n{\"report.pdf\": true, \"notes.txt\": false}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"skipIndexing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileSkipIndexing\"\r\n\r\n{\"report.pdf\": true}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"institution\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_shared\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedCourse\"\r\n\r\n{\"course_id\": 1750532703472, \"course_name\": \"Research\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedAssistant\"\r\n\r\n6856fa89cbafcff8d98680f5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"collection\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://pria.praxislxp.com/api/user/files"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"confidential\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileConfidential\"\r\n\r\n{\"report.pdf\": true, \"notes.txt\": false}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"skipIndexing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileSkipIndexing\"\r\n\r\n{\"report.pdf\": true}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"institution\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_shared\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedCourse\"\r\n\r\n{\"course_id\": 1750532703472, \"course_name\": \"Research\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedAssistant\"\r\n\r\n6856fa89cbafcff8d98680f5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"collection\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://pria.praxislxp.com/api/user/files")
.header("x-access-token", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"confidential\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileConfidential\"\r\n\r\n{\"report.pdf\": true, \"notes.txt\": false}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"skipIndexing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileSkipIndexing\"\r\n\r\n{\"report.pdf\": true}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"institution\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_shared\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedCourse\"\r\n\r\n{\"course_id\": 1750532703472, \"course_name\": \"Research\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedAssistant\"\r\n\r\n6856fa89cbafcff8d98680f5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"collection\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"confidential\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileConfidential\"\r\n\r\n{\"report.pdf\": true, \"notes.txt\": false}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"skipIndexing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileSkipIndexing\"\r\n\r\n{\"report.pdf\": true}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"institution\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"account_shared\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedCourse\"\r\n\r\n{\"course_id\": 1750532703472, \"course_name\": \"Research\"}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selectedAssistant\"\r\n\r\n6856fa89cbafcff8d98680f5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"collection\"\r\n\r\n6631915765bb0a94cfd6ca99\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Upload completed",
"files": [
{
"fieldname": "files",
"originalname": "<string>",
"filename": "<string>",
"mimetype": "<string>",
"size": 123,
"success": true,
"message": "<string>",
"usage": 123,
"uploadId": "<string>",
"file_url": "<string>",
"file_title": "<string>",
"file_summary": "<string>",
"summary_model": "<string>",
"image_analysis_model": "<string>",
"embeddings_model": "<string>",
"is_public": true,
"is_private": true,
"status": "<string>",
"thumbnail": "<string>",
"queued": true,
"ingestion": {
"phase": "queued",
"progress": 123,
"attempts": 123,
"enqueuedAt": "2023-11-07T05:31:56Z",
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"lastError": "<string>",
"errorClass": "permanent"
}
}
]
}{
"error": "File too large",
"message": "File size exceeds 500MB limit"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}{
"success": false,
"message": "File uploads are disabled for your account"
}{
"success": false,
"message": "<string>",
"error": "<string>"
}Authorizations
JWT token passed in x-access-token header
Body
File(s) to upload. Audio files limited to 25MB, non-audio limited to 150MB.
Legacy global confidential flag (string 'true'/'false'). Only applied when institution is provided. Overridden per-file by fileConfidential.
"false"
JSON string mapping original filenames to per-file confidential booleans. Example: '{"report.pdf": true, "notes.txt": false}'. Overrides the global confidential flag.
"{\"report.pdf\": true, \"notes.txt\": false}"
Global skip-indexing flag (string 'true'/'false'). When true, all files in this upload batch skip RAG embedding generation and are set to status 'active' with no embeddings. Overridden per-file by fileSkipIndexing.
"false"
JSON string mapping original filenames to per-file skip-indexing booleans. Example: '{"report.pdf": true, "notes.txt": false}'. Overrides the global skipIndexing flag.
"{\"report.pdf\": true}"
Institution ID to associate the uploads with
"6631915765bb0a94cfd6ca99"
When 'true' and institution is set, marks files as shared across the institution's account
"false"
JSON string with course context for the upload history record. Example: '{"course_id": 1750532703472, "course_name": "Research"}'
"{\"course_id\": 1750532703472, \"course_name\": \"Research\"}"
Assistant ID for the upload history record (used as fallback if selectedCourse.assistant._id is not set)
"6856fa89cbafcff8d98680f5"
Collection ID to associate the uploaded files with. When provided, each Upload record is linked to this collection. The collection must be one this upload may land in: a 24-character id string (400 otherwise), an existing collection (404), one the caller may add to (a personal collection: its owner or a super admin; a Digital Twin collection: files.add in that twin, or the account-vault rule for an account-shared one; 403 otherwise), and in the vault the new file will be in (personal / this twin / this account; 400 otherwise).
"6631915765bb0a94cfd6ca99"
Was this page helpful?