Generate file upload URLs for a case
curl --request POST \
--url https://api.uk.veridox.ai/cases/{caseId}/files \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"file_labels": [
"<string>"
]
}
'import requests
url = "https://api.uk.veridox.ai/cases/{caseId}/files"
payload = { "file_labels": ["<string>"] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({file_labels: ['<string>']})
};
fetch('https://api.uk.veridox.ai/cases/{caseId}/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://api.uk.veridox.ai/cases/{caseId}/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 => json_encode([
'file_labels' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://api.uk.veridox.ai/cases/{caseId}/files"
payload := strings.NewReader("{\n \"file_labels\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://api.uk.veridox.ai/cases/{caseId}/files")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"file_labels\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uk.veridox.ai/cases/{caseId}/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"file_labels\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"files": [
{
"file_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>",
"sas_url": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
]
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}Cases
Upload Files to Case
Generate upload URLs for adding files to an existing case.
POST
/
cases
/
{caseId}
/
files
Generate file upload URLs for a case
curl --request POST \
--url https://api.uk.veridox.ai/cases/{caseId}/files \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"file_labels": [
"<string>"
]
}
'import requests
url = "https://api.uk.veridox.ai/cases/{caseId}/files"
payload = { "file_labels": ["<string>"] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({file_labels: ['<string>']})
};
fetch('https://api.uk.veridox.ai/cases/{caseId}/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://api.uk.veridox.ai/cases/{caseId}/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 => json_encode([
'file_labels' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://api.uk.veridox.ai/cases/{caseId}/files"
payload := strings.NewReader("{\n \"file_labels\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://api.uk.veridox.ai/cases/{caseId}/files")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"file_labels\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uk.veridox.ai/cases/{caseId}/files")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"file_labels\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"files": [
{
"file_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>",
"sas_url": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
]
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}Generate pre-signed upload URLs for adding files to an existing case. This endpoint allows you to upload additional files to cases that have already been created, as long as the case is not locked.
Use Case Creation Upload (
Use Additional File Upload (
Case Locking: Once you start uploading files to a case, the case becomes locked and you cannot add more files later. Upload all files you need in a single batch.
When to Use This Endpoint
Use Case Creation Upload (POST /cases)
- When creating a new case with initial files.
- For the first batch of files in a case.
- When you know all files upfront.
Use Additional File Upload (POST /cases/{caseId}/files)
- When adding files to existing unlocked cases.
- For supplementary documents after initial case creation.
- When file requirements change during the process.
Was this page helpful?
⌘I