API

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"
}