File
A file for a case.
Operations
Every route this entity exposes. Each route links to its own reference on this page.
| Method | Route | SDK operation | Returns |
|---|---|---|---|
POST |
/cases/files |
create |
File uploaded successfully |
GET |
/cases/files |
list |
Paginated list of files |
Examples
One example per SDK, generated from the API model. The argument names are the parameters and fields of this entity, and the values are placeholders. The examples are not compiled or executed.
Golang
Construct client as shown in the Golang setup, then call the operations:
files, err := client.File(nil).List(nil, nil)
if err != nil {
panic(err)
}
fmt.Println(files)
created, err := client.File(nil).Create(map[string]any{"createdAt": "example", "file": "example", "fileId": "example", "fileName": "example", "profileId": 1, "purpose": "example", "submissionData": map[string]any{}}, nil)
if err != nil {
panic(err)
}
fmt.Println(created)
Lua
Construct client as shown in the Lua setup, then call the operations:
local files, err = client:File():list()
local created, err = client:File():create({ createdAt = "example", file = "example", fileId = "example", fileName = "example", profileId = 1, purpose = "example", submissionData = {} })
PHP
Construct client as shown in the PHP setup, then call the operations:
$files = $client->File()->list();
$created = $client->File()->create(["createdAt" => "example", "file" => "example", "fileId" => "example", "fileName" => "example", "profileId" => 1, "purpose" => "example", "submissionData" => []]);
Python
Construct client as shown in the Python setup, then call the operations:
files = client.File().list()
created = client.File().create({ "createdAt": "example", "file": "example", "fileId": "example", "fileName": "example", "profileId": 1, "purpose": "example", "submissionData": {} })
Ruby
Construct client as shown in the Ruby setup, then call the operations:
files = client.File.list()
created = client.File.create({ "createdAt" => "example", "file" => "example", "fileId" => "example", "fileName" => "example", "profileId" => 1, "purpose" => "example", "submissionData" => {} })
TypeScript
Construct client as shown in the TypeScript setup, then call the operations:
const files = await client.File().list()
const created = await client.File().create({ createdAt: "example", file: "example", fileId: "example", fileName: "example", profileId: 1, purpose: "example", submissionData: {} })
Fields
| Field | Type | Required | Description |
|---|---|---|---|
createdAt |
string |
Yes | Timestamp when the file was uploaded. |
file |
string |
Yes | The file to upload. |
fileId |
string |
Yes | Unique identifier of the uploaded file. |
fileName |
string |
Yes | The name of the uploaded file. |
profileId |
integer |
Yes | The ID of the profile this file belongs to. |
purpose |
string |
Yes | The purpose of the file upload. |
submissionData |
object |
Yes | Metadata for the file upload, sent as the submissionData part of the multipart request. |
create
POST /cases/files
Operation ID: caseFileUpload.
Authentication: bearer token (ClientCredentialsToken).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
X-External-Correlation-Id |
header |
string (uuid) |
No | Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more. |
Request body
multipart/form-data
| Property | Type | Required | Description |
|---|---|---|---|
file |
string |
Yes | The file to upload. Do not include personally identifying information in the file name. Must be one of the supported content types (application/pdf, image/jpeg, image/png) and must not exceed 15 MB. File name must not exceed 128 characters and the file extension must match the content type (for example .pdf for application/pdf). |
submissionData |
object |
Yes | Metadata for the file upload, sent as the submissionData part of the multipart request. |
submissionData.profileId |
integer (int64) |
Yes | The ID of the profile you are providing the file for. If you are set up only with your own profile and do not have them for end customers you must use your own profileId. |
submissionData.purpose |
enum: GENERAL |
Yes | The purpose of the file upload. |
Responses
201: File uploaded successfully
application/json
| Property | Type | Required | Description |
|---|---|---|---|
createdAt |
string |
Yes | Timestamp when the file was uploaded. Format: ISO 8601 datetime without timezone (server timezone is UTC). |
fileId |
string (uuid) |
Yes | Unique identifier of the uploaded file (UUID v4). |
fileName |
string |
Yes | The original name of the uploaded file. |
profileId |
integer (int64) |
Yes | The ID of the profile this file belongs to. |
purpose |
enum: GENERAL |
Yes | The purpose of the file upload. |
400: Bad request - validation failed
application/json
The response is object and object.
401: Unauthorized - missing or invalid authentication
application/json
The response is object and object.
Example response:
{
"detail": "Authentication required",
"status": 401,
"title": "Unauthorized",
"type": "/errors/types/access"
}
403: Forbidden - insufficient permissions
application/json
The response is object and object.
Example response:
{
"code": "forbidden",
"detail": "Unauthorized",
"status": 403,
"title": "Forbidden",
"type": "/errors/types/access"
}
429: Too many requests - rate limit exceeded
application/json
The response is object and object.
Example response:
{
"code": "rate_limit_exceeded",
"detail": "Too many files uploaded recently. Please try again later.",
"instance": "/cases/files",
"status": 429,
"title": "Too Many Requests",
"type": "/errors/types/domain"
}
500: Internal server error
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code |
string |
No | A machine-readable error code for domain errors. |
detail |
string |
No | A human-readable explanation specific to this occurrence of the error. |
instance |
string |
No | The request path that caused the error. |
status |
integer |
Yes | The HTTP status code. |
title |
string |
Yes | A short, human-readable summary of the error type. |
type |
string |
Yes | A URI reference that identifies the error type. Common types: - /errors/types/validation - Request validation failed - /errors/types/access - Authentication or authorization error - /errors/types/domain - Domain-specific business rule violation |
Example response:
{
"detail": "An unexpected error occurred. Please try again later.",
"instance": "/cases/files",
"status": 500,
"title": "Internal Server Error",
"type": "/errors/types/internal"
}
list
GET /cases/files
Operation ID: caseFileList.
Authentication: bearer token (ClientCredentialsToken).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
pageNumber |
query |
integer (int32) |
No | The page number to retrieve. Must be at least 1. |
pageSize |
query |
integer (int32) |
No | The maximum number of files to return per page. Between 1 and 100. |
profileId |
query |
integer (int64) |
No | Filter files by profile ID. Omit this parameter to retrieve files across all profiles. |
X-External-Correlation-Id |
header |
string (uuid) |
No | Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more. |
Responses
200: Paginated list of files
application/json
| Property | Type | Required | Description |
|---|---|---|---|
files |
array of object |
Yes | Collection of file metadata for the requested page. Ordered by createdAt descending and then fileId descending. |
files[].createdAt |
string |
Yes | Timestamp when the file was uploaded. Format: ISO 8601 datetime without timezone (server timezone is UTC). |
files[].fileId |
string (uuid) |
Yes | Unique identifier of the uploaded file. |
files[].fileName |
string |
Yes | The name of the uploaded file. |
files[].profileId |
integer (int64) |
Yes | The ID of the profile this file belongs to. |
files[].purpose |
enum: GENERAL |
Yes | The purpose of the file upload. |
totalFiles |
integer (int64) |
Yes | Total number of files across all pages. |
Example response:
{
"files": [
{
"createdAt": "2026-09-30T10:00:00.123",
"fileId": "a1b2c3d4-e5f6-4789-abcd-ef1234567890",
"fileName": "company-registration.pdf",
"profileId": 14556049,
"purpose": "GENERAL"
},
{
"createdAt": "2026-09-29T10:00:00.123",
"fileId": "b2c3d4e5-f6a7-4890-bcde-f12345678901",
"fileName": "identity-document.png",
"profileId": 14556049,
"purpose": "GENERAL"
}
],
"totalFiles": 5
}
400: Bad request - validation failed
application/json
The response is object and object.
401: Unauthorized - missing or invalid authentication
application/json
The response is object and object.
Example response:
{
"detail": "Authentication required",
"status": 401,
"title": "Unauthorized",
"type": "/errors/types/access"
}
403: Forbidden - insufficient permissions
application/json
The response is object and object.
Example response:
{
"code": "forbidden",
"detail": "Unauthorized",
"status": 403,
"title": "Forbidden",
"type": "/errors/types/access"
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header
application/json
The response is object.
500: Internal server error
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code |
string |
No | A machine-readable error code for domain errors. |
detail |
string |
No | A human-readable explanation specific to this occurrence of the error. |
instance |
string |
No | The request path that caused the error. |
status |
integer |
Yes | The HTTP status code. |
title |
string |
Yes | A short, human-readable summary of the error type. |
type |
string |
Yes | A URI reference that identifies the error type. Common types: - /errors/types/validation - Request validation failed - /errors/types/access - Authentication or authorization error - /errors/types/domain - Domain-specific business rule violation |
Example response:
{
"detail": "An unexpected error occurred. Please try again later.",
"instance": "/cases/files",
"status": 500,
"title": "Internal Server Error",
"type": "/errors/types/internal"
}