curl --request POST \
--url https://databunkerpro.myorg.com/v2/FileCreate \
--header 'Content-Type: application/json' \
--header 'X-Bunker-Token: <api-key>' \
--data '
{
"identity": "<string>",
"filename": "<string>",
"filedata": "aSDinaTvuI8gbWludGxpZnk=",
"mimetype": "<string>",
"slidingtime": "<string>",
"finaltime": "<string>",
"tags": [
"<string>"
],
"request_metadata": {}
}
'import requests
url = "https://databunkerpro.myorg.com/v2/FileCreate"
payload = {
"identity": "<string>",
"filename": "<string>",
"filedata": "aSDinaTvuI8gbWludGxpZnk=",
"mimetype": "<string>",
"slidingtime": "<string>",
"finaltime": "<string>",
"tags": ["<string>"],
"request_metadata": {}
}
headers = {
"X-Bunker-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Bunker-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identity: '<string>',
filename: '<string>',
filedata: 'aSDinaTvuI8gbWludGxpZnk=',
mimetype: '<string>',
slidingtime: '<string>',
finaltime: '<string>',
tags: ['<string>'],
request_metadata: {}
})
};
fetch('https://databunkerpro.myorg.com/v2/FileCreate', 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://databunkerpro.myorg.com/v2/FileCreate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identity' => '<string>',
'filename' => '<string>',
'filedata' => 'aSDinaTvuI8gbWludGxpZnk=',
'mimetype' => '<string>',
'slidingtime' => '<string>',
'finaltime' => '<string>',
'tags' => [
'<string>'
],
'request_metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Bunker-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://databunkerpro.myorg.com/v2/FileCreate"
payload := strings.NewReader("{\n \"identity\": \"<string>\",\n \"filename\": \"<string>\",\n \"filedata\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"mimetype\": \"<string>\",\n \"slidingtime\": \"<string>\",\n \"finaltime\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"request_metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Bunker-Token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://databunkerpro.myorg.com/v2/FileCreate")
.header("X-Bunker-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"identity\": \"<string>\",\n \"filename\": \"<string>\",\n \"filedata\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"mimetype\": \"<string>\",\n \"slidingtime\": \"<string>\",\n \"finaltime\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"request_metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://databunkerpro.myorg.com/v2/FileCreate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Bunker-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identity\": \"<string>\",\n \"filename\": \"<string>\",\n \"filedata\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"mimetype\": \"<string>\",\n \"slidingtime\": \"<string>\",\n \"finaltime\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"request_metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"status": "ok",
"token": "<string>",
"fileuuid": "<string>",
"tags": [
"<string>"
],
"duplicate": true
}{
"status": "error",
"message": "Missing API request parameters: profile"
}{
"status": "error",
"message": "Access denied"
}{
"status": "error",
"message": "The user record was not found"
}{
"status": "error",
"message": "Internal error"
}Store a file for a user
Stores an encrypted file for a user. The file content is supplied as a base64-encoded filedata field. Each file is encrypted with a per-file key (wrapped by the user’s record key) and stored in the configured object-storage backend (local disk, Amazon S3, Google Cloud Storage, or Azure Blob Storage).
If the same content is uploaded again for the same user, the response sets duplicate to true and no new object is written.
curl --request POST \
--url https://databunkerpro.myorg.com/v2/FileCreate \
--header 'Content-Type: application/json' \
--header 'X-Bunker-Token: <api-key>' \
--data '
{
"identity": "<string>",
"filename": "<string>",
"filedata": "aSDinaTvuI8gbWludGxpZnk=",
"mimetype": "<string>",
"slidingtime": "<string>",
"finaltime": "<string>",
"tags": [
"<string>"
],
"request_metadata": {}
}
'import requests
url = "https://databunkerpro.myorg.com/v2/FileCreate"
payload = {
"identity": "<string>",
"filename": "<string>",
"filedata": "aSDinaTvuI8gbWludGxpZnk=",
"mimetype": "<string>",
"slidingtime": "<string>",
"finaltime": "<string>",
"tags": ["<string>"],
"request_metadata": {}
}
headers = {
"X-Bunker-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Bunker-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identity: '<string>',
filename: '<string>',
filedata: 'aSDinaTvuI8gbWludGxpZnk=',
mimetype: '<string>',
slidingtime: '<string>',
finaltime: '<string>',
tags: ['<string>'],
request_metadata: {}
})
};
fetch('https://databunkerpro.myorg.com/v2/FileCreate', 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://databunkerpro.myorg.com/v2/FileCreate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identity' => '<string>',
'filename' => '<string>',
'filedata' => 'aSDinaTvuI8gbWludGxpZnk=',
'mimetype' => '<string>',
'slidingtime' => '<string>',
'finaltime' => '<string>',
'tags' => [
'<string>'
],
'request_metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Bunker-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://databunkerpro.myorg.com/v2/FileCreate"
payload := strings.NewReader("{\n \"identity\": \"<string>\",\n \"filename\": \"<string>\",\n \"filedata\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"mimetype\": \"<string>\",\n \"slidingtime\": \"<string>\",\n \"finaltime\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"request_metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Bunker-Token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://databunkerpro.myorg.com/v2/FileCreate")
.header("X-Bunker-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"identity\": \"<string>\",\n \"filename\": \"<string>\",\n \"filedata\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"mimetype\": \"<string>\",\n \"slidingtime\": \"<string>\",\n \"finaltime\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"request_metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://databunkerpro.myorg.com/v2/FileCreate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Bunker-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identity\": \"<string>\",\n \"filename\": \"<string>\",\n \"filedata\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"mimetype\": \"<string>\",\n \"slidingtime\": \"<string>\",\n \"finaltime\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"request_metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"status": "ok",
"token": "<string>",
"fileuuid": "<string>",
"tags": [
"<string>"
],
"duplicate": true
}{
"status": "error",
"message": "Missing API request parameters: profile"
}{
"status": "error",
"message": "Access denied"
}{
"status": "error",
"message": "The user record was not found"
}{
"status": "error",
"message": "Internal error"
}Authorizations
API token for authentication
Body
Mode of user identification
login, token, email, phone, custom User identifier corresponding to the mode
Name of the file (1-255 characters)
Base64-encoded file content
MIME type of the file. If omitted, it is auto-detected from the content.
Sliding retention period for the file (e.g., '30d', '1y')
Absolute expiration time for the file (e.g., '90d', '2026-01-01')
File tags. Accepts an array of strings or a comma-separated string.
Tags are lowercased and de-duplicated, must match ^[a-z0-9][a-z0-9._-]{0,49}$,
and at most 16 are kept per file. Tags drive file-level authorisation.
Additional metadata for the request