Public API Reference
Integration & Mail Plugin Endpoints
This document describes the public HTTP API exposed by the FileCap server. These endpoints are intended for email plugins, third-party integrations, and other external systems that need to upload files, request invites, validate transfer metadata, or read server configuration. Internal endpoints used by the admin panel, the OWA add-in, and partner/license server integrations are outside the scope of this document.
The API has evolved through two distinct generations:
.jsp URLs (e.g., process_upload.jsp) that historically powered the Outlook Classic plugin and similar integrations. Each JSP performs a server-side redirect to a modern REST endpoint; both the JSP and the modern path continue to function./FileCap/api/... that return a structured ApiResult<T> envelope. New integrations should target this interface.All endpoints are served from the FileCap web application at the context root /FileCap. The Postman collection included with this document uses a baseURL variable that should contain the scheme and host (no trailing slash), e.g.:
https://filecap.example.com
The resulting URLs are then constructed as {{baseURL}}/FileCap/<path>.
Most endpoints accept an APIKey in the request body (form field, URL-encoded parameter, or JSON property—the modern variants accept apiKey as well). The key is configured per FileCap tenant and is required for every integration call unless the endpoint is explicitly public (e.g., password-rules and the validate/* endpoints).
A subset of modern endpoints also accepts a deviceApiKey, returned by the device registration flow (section 9). Endpoints that require web portal authentication use either the portal session cookie or a JWT Bearer token (scope transfer:free).
Modern JSON endpoints return their results in:
{
"success": true,
"value": { ... },
"errorMessage": null
}
In the event of failure, success is false, value is null and errorMessage contains the reason.
The Legacy / *.jsp Endpoints return plain text:
true — Request succeeded.false|<ERROR_CODE> — Request failed; the code indicates the cause.Several endpoints are rate-limited per session, per JWT, or globally. Limits are listed in the endpoint reference where applicable. When a limit is exceeded, the server responds with an HTTP 429.
These are the original public endpoints. They are retained for backward compatibility with deployed mail plugins and third-party scripts. New integrations should use the modern equivalents described in the following chapters; the table below shows which legacy URL redirects to which modern path.
| Legacy URL | Method | Forwards to | Notes |
|---|---|---|---|
process_upload.jsp | POST | /api/transfer/v1/send-outlook-transfer | multipart/form-data, text/plain response |
invite.jsp | POST | /api/invite/old | application/x-www-form-urlencoded |
mailPluginSettings.jsp | POST | /api/settings/outlook-windows | application/x-www-form-urlencoded → XML |
checkFile.jsp | POST | /api/validate/file | application/x-www-form-urlencoded |
checkTransfer.jsp | POST | /api/validate/transfer | application/x-www-form-urlencoded |
domainCheck.jsp | POST | /api/validate/domain | application/x-www-form-urlencoded |
Each legacy endpoint is described in detail below.
{{baseURL}}/FileCap/process_upload.jspContent-Type: multipart/form-data
Upload one or more files in a single transfer. Forwards to /api/transfer/v1/send-outlook-transfer. Returns plain text: true upon success, false|<ERROR_CODE> on failure.
Field ordering: The server streams the multipart body and processes the parts in the order they arrive. The fileMetadata The field MUST be sent BEFORE the file parts (file01, file02, ...). When a file part is read, the server looks up its expected size in the metadata list; on S3 storage, the upload is rejected with the message "File metadata required" if the metadata has not yet been seen, and on FREE-tier portals, a NullPointerException is thrown. A typical multipart body therefore begins with all text fields (APIKey, ids, from, ..., fileMetadata) and ends with the binary file01 / file02 / ... parts.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
deviceApiKey | string | no | Per-device API key when the integration is registered as a device. |
ids | string | yes | Transfer ID. Must be unique for each transfer. |
from | string | yes | Sender's email address. |
fromName | string | no | The sender's display name. |
subject | string | yes | Subject of the transfer. |
comment | string | yes | Message body. |
encryptMessage | boolean | no | When true The message body is encrypted (plain text only). Requires a password. |
rec0, rec1, ... | string | yes | TO recipients. The first is rec0, the next rec1 etc. |
cc0, cc1, ... | string | no | CC recipients. |
bcc0, bcc1, ... | string | no | BCC recipients. |
nameRec0, ... | string | no | Display names for the matching items recN recipient. |
storeDays_value | integer | no | How long the transfer remains on the FileCap server. |
downloadLoadable_value | integer | no | Maximum number of downloads. |
password | string | no | Required when encryptMessage = true or when a policy requires a password. |
useSmsTextAuthentication | boolean | no | Enable SMS verification for the recipient (requires mobileNumber). |
mobileNumber | string | no | Recipient's mobile number when SMS verification is used. |
dontNotify | boolean | no | When true, FileCap does not send a notification email to the recipient. |
nrOfFilesInTransfer | integer | no | Specify the number of files in the transfer. |
userAgent | string | no | Identifier of the calling client. |
version | string | no | Version of the calling client. |
fileMetadata | JSON (text) | yes | A JSON array describing each file part. One entry per file with filename, mimetype and size (bytes). The filename MUST exactly match the filename of the corresponding file part. CRITICAL: This field MUST appear in the multipart body BEFORE the file parts (see note above). |
file01, file02, ... | file | yes | File parts. The first file is file01, the next file02 etc. MUST appear AFTER the fileMetadata field. |
Plain text.
true
false|VIRUS_FOUND
VIRUS_FOUND — A virus was detected in one of the files. The transfer was canceled.NO_RECIPIENT_GIVEN — No recipients were specified for the transfer.FILETYPE_NOT_ALLOW — File type prohibited by MIME or extension policy.PASSWORD_MANDATORY_BUT_NOT_GIVEN — A password is required by policy but is missing.CANNOT_SEND_MAIL — FileCap was unable to send the notification email (mail server or relay misconfigured).API_KEY_INVALID — The provided APIKey is not valid.GENERAL_ERROR — Unknown error; check the FileCap server log for the stack trace. This is often a network or proxy issue.{{baseURL}}/FileCap/invite.jspContent-Type: application/x-www-form-urlencoded
Send a FileCap invitation to an external user, asking them to upload files for the person who sent the invitation. Forwards to /api/invite/old. Returns plain text true / false|<ERROR_CODE>.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
deviceApiKey | string | no | Per-device API key. |
id | string | yes | Invite ID. MUST begin with the prefix iiiii. |
senderEmail | string | yes | Email address of the person who needs to receive the invitation (the inviter). |
receiverEmail | string | yes | The email address of the person who needs to receive the files (usually your own email address). |
receiverMobileNr | string | no | The recipient's mobile number when SMS verification is required. |
message | string | no | Free-form message attached to the invitation. |
notify | boolean | no | When false, FileCap will not send a notification email (the calling system must handle this). |
Plain text.
true
false|CANNOT_SEND_MAIL
CANNOT_SEND_MAIL — The mail server was unable to process the invitation email.CANNOT_ADD_INVITE_TO_DB — FileCap was unable to save the invite ID.UNKNOWN_ERROR — An exception was thrown. Check the server log.{{baseURL}}/FileCap/mailPluginSettings.jspContent-Type: application/x-www-form-urlencoded
Request the FileCap server settings used by email plugins (Outlook Classic, etc.). Forwards to /api/settings/outlook-windows. Returns the plug-in configuration as XML.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
userAgent | string | no | Identifier of the calling client. |
version | string | no | Version of the calling client. |
long | string | no | Local (e.g., NL, EN). |
XML document containing the maximum file size, allowed file extensions, password policy, verification methods, branding, etc.
{{baseURL}}/FileCap/checkFile.jspContent-Type: application/x-www-form-urlencoded
Before uploading, verify whether a single file is permitted by the server policy (file extension and MIME blocklists, sender restrictions). Forwards to /api/validate/file.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
filename | string | yes | Name of the file. |
sender | string | yes | Sender's email address. |
mime | string | yes | MIME type of the file. |
fileID | string | no | File identifier. |
Plain text true when permitted, false|<ERROR_CODE> when blocked.
{{baseURL}}/FileCap/checkTransfer.jspContent-Type: application/x-www-form-urlencoded
Inspect a previously created transfer (used by email plugins to check status and contents). Forwards to /api/validate/transfer.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
deviceApiKey | string | no | Per-device API key. |
id | string | yes | Transfer ID. |
email | string | no | Recipient email; if provided, the response is limited to this recipient. |
Plain text response containing the transfer status and file list.
{{baseURL}}/FileCap/domainCheck.jspContent-Type: application/x-www-form-urlencoded
Verify whether the sender's domain is permitted to send messages to the recipient's domain (whitelist / IP rules). Forwards to /api/validate/domain.
| Name | Type | Req. | Description |
|---|---|---|---|
email | string | yes | Recipient's email address whose domain must be validated. |
sender | string | yes | Sender's email address. |
Plain text true / false|<ERROR_CODE>.
Modern transfer endpoints under /FileCap/api/transfer. The send-outlook-transfer endpoint replaces the legacy process_upload.jsp flow but returns a structured JSON ApiResult instead of plain text. The /transfer/v1/send-outlook-transfer endpoint is the path to which the legacy JSP forwards (text response) and is documented for the sake of completeness.
All multipart upload endpoints in this chapter (send-outlook-transfer, v1/send-outlook-transfer, send-transfer, send-reply) share a single multipart parser. They all accept — and require — a fileMetadata A form field that MUST be sent BEFORE the file parts. See the note in section 3.1 for details and the consequences if the order is reversed.
{{baseURL}}/FileCap/api/transfer/send-outlook-transferContent-Type: multipart/form-data
Modern Outlook plugin upload endpoint. Same form fields as process_upload.jsp; the response is a JSON ApiResult<ApiUploadValue>. Rate-limited per session (SendOutlookTransfer).
Field ordering: Like the legacy endpoint, the fileMetadata The form field is required and MUST be sent BEFORE the file parts. The server processes the multipart body in stream order; for each file part, it looks up the expected size in the metadata list, and rejects the upload ("File metadata required" on S3 storage; NullPointerException on FREE-tier portals) when the metadata has not yet been encountered.
[
{ "filename": "report.pdf", "mimetype": "application/pdf", "size": 102400 },
{ "filename": "photo.jpg", "mimetype": "image/jpeg", "size": 51200 }
]
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key (alias: apiKey). |
deviceApiKey | string | no | Per-device API key. |
ids | string | yes | Transfer ID (alias: transferId). |
from | string | yes | Sender email (aliases: fromEmail, senderEmail, senderEmailAddress). |
fromName | string | no | Sender display name (alias: senderName). |
subject | string | yes | Transfer subject. |
comment | string | yes | Message body. |
encryptMessage | boolean | no | Encrypt the message body (alias: useEncryption). |
rec0, rec1, ... | string | yes | TO recipients (alias: recipient). |
cc0, cc1, ... | string | no | CC recipients. |
bcc0, bcc1, ... | string | no | BCC recipients. |
maxDownloads | integer | no | Maximum number of downloads (also known as: downloadLoadable_value). |
maxDaysToStore | integer | no | Retention period in days (also known as: storeDays_value). |
password | string | no | Transfer password. |
useSmsTextAuthentication | boolean | no | Enable SMS verification (alias: enableToken). |
verificationMethod1 | string | no | Primary verification method (e.g., EMAIL_ACCESS_CODE, SMS, PASSWORD, NONE). |
verificationMethod2 | string | no | Secondary verification method. |
dontNotify | boolean | no | When true, FileCap does not send a notification email. |
nrOfFilesInTransfer | integer | no | Explicit file count. |
userAgent / version | string | no | Identification of the calling client. |
fileMetadata | JSON (text) | yes | A JSON array describing each file part. One entry per file with filename, mimetype and size (bytes). The filename MUST exactly match the corresponding file part. CRITICAL: must appear BEFORE the file parts in the multipart body. |
file01, file02, ... | file | yes | File parts. MUST appear AFTER the fileMetadata field. |
JSON. Example:
{
"success": true,
"value": {
"transferId": "263478632784632748237513",
"generatedPassword": "Ax9!kp2Qm"
},
"errorMessage": null
}
{{baseURL}}/FileCap/api/transfer/v1/send-outlook-transferContent-Type: multipart/form-data
Plain-text version of the upload (returns true / false|<ERROR_CODE>). This is the endpoint that process_upload.jsp forwards to. Use it when the calling client requires the legacy text response format.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
deviceApiKey | string | no | Per-device API key when the integration is registered as a device. |
ids | string | yes | Transfer ID. Must be unique for each transfer. |
from | string | yes | Sender's email address. |
fromName | string | no | The sender's display name. |
subject | string | yes | Subject of the transfer. |
comment | string | yes | Message body. |
encryptMessage | boolean | no | When true The message body is encrypted (plain text only). Requires a password. |
rec0, rec1, ... | string | yes | TO recipients. The first is rec0, the next rec1 etc. |
cc0, cc1, ... | string | no | CC recipients. |
bcc0, bcc1, ... | string | no | BCC recipients. |
nameRec0, ... | string | no | Display names for the matching items recN recipient. |
storeDays_value | integer | no | How long the transfer remains on the FileCap server. |
downloadLoadable_value | integer | no | Maximum number of downloads. |
password | string | no | Required when encryptMessage = true or when a policy requires a password. |
useSmsTextAuthentication | boolean | no | Enable SMS verification for the recipient (requires mobileNumber). |
mobileNumber | string | no | Recipient's mobile number when SMS verification is used. |
dontNotify | boolean | no | When true, FileCap does not send a notification email to the recipient. |
nrOfFilesInTransfer | integer | no | Specify the number of files in the transfer. |
userAgent | string | no | Identifier of the calling client. |
version | string | no | Version of the calling client. |
fileMetadata | JSON (text) | yes | A JSON array describing each file part. One entry per file with filename, mimetype and size (bytes). The filename MUST exactly match the filename of the corresponding file part. CRITICAL: This field MUST appear in the multipart body BEFORE the file parts. |
file01, file02, ... | file | yes | File parts. The first file is file01, the next file02 etc. MUST appear AFTER the fileMetadata field. |
Plain text.
true
false|API_KEY_INVALID
{{baseURL}}/FileCap/api/transfer/validate-uploadContent-Type: application/json
Validate the metadata of an upload before sending any data. Checks server quota, allowed file extensions and MIME types, maximum size, etc. The aliased path /transfer/validateUpload works just as well.
{
"lang": "NL",
"fileMetadataList": [
{
"fileName": "report.pdf",
"fileSize": 102400,
"mimeType": "application/pdf"
}
]
}
ApiResult<Void> — only success and errorMessage are populated.
{{baseURL}}/FileCap/api/transfer/validate-filesContent-Type: application/json
Per-file validation. Returns one entry per file indicating whether it is allowed and, if not, which rule was violated.
{
"lang": "NL",
"fileMetadataList": [
{ "fileName": "clean.pdf", "fileSize": 1024, "mimeType": "application/pdf" },
{ "fileName": "forbidden.exe", "fileSize": 2048, "mimeType": "application/x-msdownload" }
]
}
ApiResult<ValidateFilesResultModel>.
{{baseURL}}/FileCap/api/transfer/validate-recipientContent-Type: application/json
Validate the sender/recipient combination against domain whitelists, IP allowlists, and the emailMaySend / emailMayReceive rules.
{
"senderEmailAddress": "kees@example.com",
"recipientEmailAddress": "piet@receiver.com"
}
ApiResult<Void>.
VALIDATION_ERROR_DOMAIN_INVALID — The recipient or sender domain is not allowed.VALIDATION_ERROR_EMAIL_ADDRESS — One of the email addresses is invalid.{{baseURL}}/FileCap/api/transfer/send-replyContent-Type: multipart/form-data
Send a secure reply to an existing transfer. The original transfer is identified by its transfer ID. Rate-limited (SendReply). Same multipart parser as in section 3.1, so when file parts are attached, the fileMetadata The field MUST appear before them.
| Name | Type | Req. | Description |
|---|---|---|---|
ids | string | yes | ID of the original transfer. |
from | string | yes | Sender's email address. |
subject | string | yes | Reply subject. |
comment | string | no | Reply to this message. |
replyToAll | boolean | no | Reply to every recipient of the original transfer. |
fileMetadata | JSON (text) | yes* | A JSON array describing each file part (filename, mimetype, size). Required when file parts are attached. MUST appear BEFORE the file parts. |
file01, ... | file | no | Optional file parts. Place AFTER fileMetadata. |
ApiResult<SentTransferInfo>.
{{baseURL}}/FileCap/api/transfer/checkConnectionContent-Type: application/json
Lightweight liveness probe. Always returns ApiResult.success("connected") when the FileCap portal is accessible.
Always returns:
{ "success": true, "value": "connected", "errorMessage": null }
Endpoints for sending FileCap invites. The entire controller is rate-limited to 10 requests per minute.
{{baseURL}}/FileCap/api/inviteContent-Type: application/json
A modern JSON version of the legacy format invite.jsp flow. Accepts a list of invitees in a single call.
{
"apiKey": "HKADASD68768768ASDASDASDAD",
"deviceApiKey": "",
"sender": {
"emailAddress": "kees@example.com",
"name": "Kees Janssen"
},
"invitees": [
"piet@company.com",
"jan@partner.com"
],
"message": "Please upload the requested documents."
}
ApiResult<Void>.
{{baseURL}}/FileCap/api/invite/oldContent-Type: application/x-www-form-urlencoded
Direct call to the endpoint that invite.jsp forwards to. Returns plain text true / false|<ERROR_CODE>.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
deviceApiKey | string | no | Per-device API key. |
id | string | yes | Invite ID, must begin with iiiii. |
senderEmail | string | yes | Invite via email. |
receiverEmail | string | yes | Email recipient. |
receiverMobileNr | string | no | Recipient's mobile number. |
message | string | no | Optional free-form message. |
notify | boolean | no | When false, FileCap will not send a notification email. |
Plain text true / false|<ERROR_CODE>.
{{baseURL}}/FileCap/api/invite/generate-idContent-Type: application/json
Pre-generate the invite ID used in the id field of the legacy invite call (the value starting with iiiii). Alias path: /invite/generateInviteId.
{
"apiKey": "HKADASD68768768ASDASDASDAD",
"deviceApiKey": "",
"sender": {
"emailAddress": "kees@example.com"
}
}
ApiResult<String> — the generated invite ID.
Server settings used by clients and plugins: password policy, recipient verification options, branding, plugin settings.
{{baseURL}}/FileCap/api/settings/getPasswordRulesContent-Type: application/json
Detailed description of the password requirements.
{
"apiKey": "HKADASD68768768ASDASDASDAD",
"lang": "NL"
}
ApiResult<PasswordRules>:
{
"success": true,
"value": {
"enabled": true,
"title": "Password requirements",
"rules": [
{ "description": "At least 8 characters", "requirement": ".{8,}" },
{ "description": "At least one digit", "requirement": "(?=.*\\d)" }
]
}
}
UNEXPECTED_ERROR — Internal server error; check the server log.{{baseURL}}/FileCap/api/settings/password-rules?lang=NLPublic, unauthenticated GET version. Returns the same ApiResult<PasswordRules> body.
| Name | Type | Req. | Description |
|---|---|---|---|
long | string | no | Local code (e.g., NL, EN). |
{{baseURL}}/FileCap/api/settings/getPasswordPolicyContent-Type: application/json
Brief summary of the password requirements: minimum length, character classes, expiration, reuse.
{
"apiKey": "HKADASD68768768ASDASDASDAD"
}
ApiResult<PasswordPolicy>.
UNEXPECTED_ERROR — Internal server error; check the server log.{{baseURL}}/FileCap/api/settings/outlook-windowsContent-Type: application/x-www-form-urlencoded
Endpoint that mailPluginSettings.jsp forwards to. Returns the plug-in configuration as XML.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
userAgent | string | no | Identifier of the calling client. |
version | string | no | Client version. |
long | string | no | Local code. |
XML document. Also available as a JSON version at the same path (POST application/json) which returns an HTTP 202 response + ApiResult<OutlookClassicSettings>, or an HTTP 401 error when authentication fails.
{{baseURL}}/FileCap/api/settings/recipient-verification-optionsContent-Type: application/json
Lists the verification methods that can be applied to a transfer (e.g., NONE, EMAIL_ACCESS_CODE, SMS, PASSWORD) and which ones are required under current policy.
{ "apiKey": "HKADASD68768768ASDASDASDAD" }
ApiResult<RecipientVerificationOptions>.
UNEXPECTED_ERROR — Internal server error; check the server log.{{baseURL}}/FileCap/api/settings/app-settingsContent-Type: application/json
Generic settings bundle for client apps: enabled features, maximum upload size, branding, supported languages, etc.
{
"apiKey": "HKADASD68768768ASDASDASDAD",
"lang": "NL"
}
ApiResult<AppSettings>.
UNEXPECTED_ERROR — Internal server error; check the server log.{{baseURL}}/FileCap/api/settings?lang=NLReturns ApiResult<WebPortalSettings> for the web portal (theme, locale options, feature flags). Allowed for portal types MAIN, SUB, and FREE.
| Name | Type | Req. | Description |
|---|---|---|---|
long | string | no | Local code. |
{{baseURL}}/FileCap/api/settings/is-shared-access-code-availableContent-Type: application/json
Returns a raw boolean (true / false) — not wrapped in ApiResult — indicating whether a shared access code has been configured for the given transfer.
{ "transferId": "263478632784632748237513" }
Raw Boolean: true or false. Returns false in the event of any internal error.
Lightweight validators that mail plugins call before composing or sending a message. All endpoints under /api/validate return plain text (true / false|<ERROR_CODE>).
{{baseURL}}/FileCap/api/validate/fileContent-Type: application/x-www-form-urlencoded
Validate a single file by name and MIME type against the policy engine. Path that checkFile.jsp forwards to.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
filename | string | yes | File name. |
sender | string | yes | Sender's email address. |
mime | string | yes | MIME type. |
fileID | string | no | File identifier. |
Plain text true / false|<ERROR_CODE>.
{{baseURL}}/FileCap/api/validate/transferContent-Type: application/x-www-form-urlencoded
Path that checkTransfer.jsp forwards to.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
deviceApiKey | string | no | Per-device API key. |
id | string | yes | Transfer ID. |
email | string | no | Optional recipient email address. |
Plain text true / false|<ERROR_CODE>.
{{baseURL}}/FileCap/api/validate/domainContent-Type: application/x-www-form-urlencoded
Path that domainCheck.jsp forwards to. Validates the sender's domain against the recipient's domain.
| Name | Type | Req. | Description |
|---|---|---|---|
email | string | yes | Recipient's email address. |
sender | string | yes | Sender's email address. |
Plain text true / false|<ERROR_CODE>.
{{baseURL}}/FileCap/api/validate/email-may-sendContent-Type: text/plain
Returns a raw boolean for the question "Is this sender allowed to send via FileCap?". The body is the plain email address as text/plain.
Raw Boolean: true / false.
Endpoints for the policy / DLP engine. Both endpoints require either DEVICE or API_KEY authentication and are rate-limited to 60 requests per minute.
{{baseURL}}/FileCap/api/business-rules/scan-attachmentContent-Type: multipart/form-data
Run a DLP/business-rules scan on a single attachment.
| Name | Type | Req. | Description |
|---|---|---|---|
APIKey | string | yes | FileCap server API key. |
file | file | yes | Select the part to scan. |
ApiResult<BusinessRulesScanResult> along with the scan results and any policy violations.
{{baseURL}}/FileCap/api/business-rules/scan-textContent-Type: application/json
Run a DLP scan on arbitrary text.
{
"text": "Hello, this is the message body that needs to be scanned for sensitive data."
}
ApiResult<BusinessRulesScanResult>.
Sender-facing endpoints to inspect and revoke (block) a transfer that has already been sent. When a transfer is created, FileCap stores a hashed blockPassword along with the transfer and emails, the SENDER receives a notification containing a block link in the following format:
https://<host>/FileCap/blockTransfer.jsp?id=<transferId>&blockId=<blockId>&email=<senderEmail>
The JSP sanitizes the parameters and redirects to the portal's "block" page, which loads transfer metadata via GET /api/block/info and — upon confirmation — calls POST /api/block to actually block the transfer. The blockId Here's the secret: anyone with the transferId, blockId, and sender's email address can block the transfer; no API key or session is required. Every validation failure (incorrect blockId, incorrect sender, unknown transferId) deliberately returns the same generic error PORTAL_BLOCK_TRANSFER_NOT_FOUND so the caller cannot tell which field was incorrect.
Integrations that suppress FileCap's own notification emails (dontNotify=true (upon upload) must capture and forward the blockId to the sender themselves — without it, the transfer cannot be blocked via the API.
{{baseURL}}/FileCap/api/block/info?transferId=...&blockId=...&emailAddress=...Return the metadata that the FileCap web UI displays on the block confirmation page: the TO recipients of the transfer, the file names, and a flag indicating whether the message body was encrypted. The call is read-only—it does not modify the transfer, send any email, or write to the audit log.
Validation order (each failure collapses to PORTAL_BLOCK_TRANSFER_NOT_FOUND (unless otherwise noted):
blockId must match the stored blockPassword;emailAddress must be a known sender of the transfer;PORTAL_DOWNLOAD_TRANSFER_EXPIRED;PORTAL_BLOCK_TRANSFER_ALREADY_BLOCKED.| Name | Type | Req. | Description |
|---|---|---|---|
transferId | string | yes | The transfer's unique ID (the ids (value provided at the time of upload). Used to look up the transfer record. |
blockId | string | yes | The block secret embedded in the FileCap notification email sent to the sender (URL parameter blockId or blockTransfer.jsp). The server hashes this value and compares it to the blockPassword stored during the transfer. |
emailAddress | string | yes | The email address of the SENDER of the transfer. Validated against the transfer's sender record (SenderDb.isSender). Not the recipient's address. |
ApiResult<TransferBlockInfo> with three fields: recipients (array of email addresses of the TO recipients), files (a set of filenames within the transfer, without a path) and hasEncryptedMessage (true (when the message body was encrypted at the time of upload). Example success body:
{
"success": true,
"value": {
"recipients": ["piet@company.com", "jan@partner.com"],
"files": ["contract.pdf", "appendix.docx"],
"hasEncryptedMessage": false
},
"errorMessage": null
}
{{baseURL}}/FileCap/api/blockContent-Type: application/json
Mark the transfer as blocked. After a successful call:
| Name | Type | Req. | Description |
|---|---|---|---|
transferId | string | yes | The transfer's unique ID (the ids value from the upload call). |
blockId | string | yes | The block secret from the sender's notification email. |
emailAddress | string | yes | The SENDER's email address (validated against the transfer's sender record, not the recipient's address). |
{
"transferId": "263478632784632748237513",
"blockId": "BLK-1234",
"emailAddress": "kees@example.com"
}
ApiResult<Void> — only success and errorMessage are populated. Possible error messages:
PORTAL_BLOCK_TRANSFER_NOT_FOUND — a generic catch-all for missing parameters, an unknown transfer, an incorrect block ID, an incorrect sender email address, or any unexpected exception — deliberately ambiguous so that the server does not reveal which field was incorrect.PORTAL_DOWNLOAD_TRANSFER_EXPIRED — the transfer has already expired (status DISABLED).PORTAL_BLOCK_TRANSFER_ALREADY_BLOCKED — The transfer had been blocked previously.PORTAL_BLOCK_TRANSFER_ERROR — The database update failed.The call is idempotent: a second call with the same parameters returns PORTAL_BLOCK_TRANSFER_ALREADY_BLOCKED, the underlying state is not changed, and no additional notification email is sent. Side-effect ordering: the database update occurs before the notification email is sent, so if the mail server is unreachable, the transfer is still blocked, and only the email failure is logged.
Endpoints for registering an external device (a third-party system) with the FileCap server so that it can call the API using its own per-device API key. The process is as follows: register → the server sends a verification code via email → verify → the caller receives a JWT / device token.
{{baseURL}}/FileCap/api/user/devices/registerContent-Type: application/json
Initiate device registration. The server sends a verification code via email to emailAddress.
{
"emailAddress": "kees@example.com",
"apiKey": "HKADASD68768768ASDASDASDAD",
"deviceName": "My integration server",
"lang": "NL"
}
ApiResult<Void>.
{{baseURL}}/FileCap/api/user/devices/verifyContent-Type: application/json
Exchange the verification code sent by email for a JWT or device token.
{
"email": "kees@example.com",
"verificationCode": "123456"
}
ApiResult<String> — the issued token.