Getting started with secure-docs
secure-docs is an encrypted document vault driven by an HTTP API. You upload your clients' confidential documents (passports, certificates, statements), then let a third party, such as a translator, an expert or a contractor, view them without ever handing over the file. Each page is rendered server-side as an image, watermarked with the name of the person viewing it, and every view is logged. The original file never leaves the vault.
Three concepts
Source and delivery documents
Every file has a kind. A source document (the default) is the confidential original: it can only be viewed, never downloaded, not even with your API key. A delivery document is the result you hand to your end client (for example, the signed translation): your server can download it with GET /v1/files/:id/download.
View link
A view link grants read-only access to one file, for one named person, for a limited time. It takes the form of an opaque token. You can send the hosted viewer URL as is, or serve the pages from your own application. See View links.
Access log
Every action on a file (upload, open, page view, download, revocation, deletion) is recorded with the date, the viewer's email address and their IP address. Read the log with GET /v1/files/:id/access-log or in the dashboard.
Quickstart
- Create an account. The Free plan is enough to try the API.
- In Dashboard > API keys, create a key. It starts with
sd_live_and is shown only once: copy it into your server configuration. - Upload a PDF, JPEG or PNG file.
- Create a view link and open the URL returned in the
urlfield.
export SECURE_DOCS_API_KEY="sd_live_..."
# 3. Upload a file (the request body is the raw file)
curl -X POST https://docs.traductionexpert.com/api/v1/files \
-H "Authorization: Bearer $SECURE_DOCS_API_KEY" \
-H "Content-Type: application/pdf" \
-H "x-file-name: passport.pdf" \
--data-binary @passport.pdf
# {"id":"9dab9089-bbc5-4853-a179-03e76523c5da","name":"passport.pdf","kind":"source","contentType":"application/pdf",
# "size":482113,"pageCount":2,"createdAt":"2026-10-14T09:12:03.000Z"}
# 4. Create a view link valid for one hour
curl -X POST https://docs.traductionexpert.com/api/v1/views \
-H "Authorization: Bearer $SECURE_DOCS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileId":"9dab9089-bbc5-4853-a179-03e76523c5da","viewerName":"Claire Martin","viewerEmail":"[email protected]","ttlSeconds":3600}'
# {"token":"TsTzcrhEaO2ge3ejImbqgKC33uCaRoQi0CzugwxFKcM","url":"https://docs.traductionexpert.com/v/TsTzcrhEaO2ge3ejImbqgKC33uCaRoQi0CzugwxFKcM","expiresAt":"2026-10-14T10:12:05.000Z"}Open the url in a browser: you see the document, with every page carrying the viewer's name, email, the date and their IP address. Then go back to the dashboard: the open and each page view appear in the file's access log.
Next pageAuthentication