Skip to main content
POST
/
files
/
encrypted
/
upload
Upload an encrypted file
curl --request POST \
  --url https://proxy.cci.prem.io/files/encrypted/upload \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "encrypted_content": "<string>",
  "encrypted_name": "<string>",
  "client_hash": "<string>",
  "kid": "<string>",
  "wrapped_dek": "<string>",
  "mime_type": "<string>",
  "incognito": true,
  "version": 123,
  "encrypted_rag_dek": "<string>",
  "rag_dek_nonce": "<string>",
  "cipher_text": "<string>",
  "encrypted_file_dek": "<string>",
  "file_nonce": "<string>"
}
'
{
  "status": 200,
  "data": {
    "id": "file_0198042e-6dde-7b9c-bc91-452a7e0c833b",
    "version": "1",
    "kid": "key_01234567-89ab-cdef-0123-456789abcdef",
    "wrapped_dek": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
    "file_name": "0198042e-6dde-76e0-b817-3afb324e29ac.enc",
    "file_path": "encrypted/org_0196b0e9-11d8-7f26-b1d2-bd47054e4827/user_0196b0e9-11d8-7f26-b1d2-bd47054e4827/0198042e-6dde-76e0-b817-3afb324e29ac.enc",
    "file_size": 1060793,
    "type": "encrypted",
    "mime_type": "encrypted_mime_type_data",
    "is_duplicate": false,
    "created_at": "2025-07-13 16:26:48.415",
    "updated_at": null,
    "original_name": "encrypted-original-filename"
  },
  "error": null,
  "log": null,
  "validator": null,
  "support_id": null,
  "message": "Resource created successfully",
  "env": "development"
}

Authorizations

Authorization
string
header
required

Send your access token as header Authorization: Bearer {accessToken}

Authorization
string
header
required

Your API key that starts with sk_live or sk_test. You can create yours at go.prem.io/api-keys.

Body

application/json

Request body for uploading an encrypted file

encrypted_content
string
required

The encrypted file content as hexadecimal string

Example:

"0123456789abcdef..."

encrypted_name
string
required

The encrypted original filename

Maximum string length: 255
Example:

"encrypted_filename"

client_hash
string
required

Client-side hash for duplicate detection

Example:

"04b9e2ec43133ae7287f97764c0beda19f304374e1d6bfe4fcc36ad54502e5dc"

kid
string
required

Key identifier used for encryption

Example:

"key_01234567-89ab-cdef-0123-456789abcdef"

wrapped_dek
string
required

Wrapped data encryption key

Example:

"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"

mime_type
string
required

MIME type of the original file (encrypted on client side before sending)

Example:

"encrypted_mime_type_data"

incognito
boolean

Whether the file is incognito (optional)

Example:

true

version

Encryption version (optional)

Example:

1

encrypted_rag_dek
string

Encrypted RAG data encryption key

Example:

"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"

rag_dek_nonce
string

Nonce used for RAG DEK encryption

Example:

"0123456789abcdef0123456789abcdef"

cipher_text
string

Cipher text for RAG encryption context

Example:

"cipher_text_data"

encrypted_file_dek
string

Encrypted file data encryption key

Example:

"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"

file_nonce
string

Nonce used for file encryption

Example:

"0123456789abcdef0123456789abcdef"

Response

Encrypted file uploaded successfully

Response containing the uploaded encrypted file information

status
enum<integer>
required

Status code of the response

Available options:
200,
201,
202
data
object
required

Response data containing the requested object

message
string | null
required

Message of the response, human readable

Example:

"Resource created successfully"

env
enum<string>
required

API environment

Available options:
development,
production
error
string | null

Error message of the response, human readable

Example:

"Invalid email address"

log

Useful informaiton, not always present, to debug the response

Examples:
{ "request_id": "req_1234567890" }

"Some pertinent log message"

validator

Validator response object, each key is the field name and value is the error message

Example:
{
"email": "Invalid email address",
"password": "Password is required"
}
support_id
string<uuid> | null

Support ID linked to the response, used to identify it when talking with our team

Example:

"support_uuidv7-something-else"