API Documentation
Integrate SendMeSafe into your existing workflows and applications with our REST API.
Overview
The SendMeSafe API enables programmatic management of upload links, share links, files, and team members. You can use all features of the web interface through the API.
- -Create, update, and manage upload links
- -Upload and download files securely
- -Create share links for secure file sharing
- -Invite and manage team members
Authentication
Authentication
All API requests require authentication via Bearer token in the Authorization header.
Example
Authorization: Bearer YOUR_API_KEY
Security Note
Only use API keys server-side. Never embed them in client-side code.
Base URL
All API requests are sent to the following base URL:
https://sendmesafe.com/apiEndpoints
Upload Links
Create and manage upload links that allow your clients to upload files.
/api/links/{id}Updates an existing upload link.
Parameter
idstring*labelstringexpiresAtISO 8601passwordstringmaxFileSizenumbercurl -X PATCH https://sendmesafe.com/api/links/link_abc123 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"label": "Updated Label",
"expiresAt": "2025-12-31T23:59:59Z"
}'/api/quick-linkCreates a new client and upload link in one step.
Parameter
clientNamestring*passwordstringexpiresInDaysnumbercurl -X POST https://sendmesafe.com/api/quick-link \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"clientName": "Max Mustermann",
"password": "secret123",
"expiresInDays": 30
}'{
"success": true,
"linkUrl": "https://sendmesafe.com/u/a1b2c3d4e5f6",
"linkId": "link_xyz789",
"clientId": "client_abc123"
}Uploads
Endpoints for uploading files via upload links.
/api/uploadGenerates a pre-signed URL for direct upload to S3.
Parameter
tokenstring*filenamestring*sizenumber*mimeTypestringpasswordstringcurl -X POST https://sendmesafe.com/api/upload \
-H "Content-Type: application/json" \
-d '{
"token": "abc123def456",
"filename": "document.pdf",
"size": 1048576,
"mimeType": "application/pdf"
}'{
"url": "https://storage.sendmesafe.com/...",
"key": "org_123/client_456/uuid-document.pdf"
}/api/upload/completeConfirms the upload and saves the file metadata.
Parameter
tokenstring*keystring*filenamestring*sizenumber*Files
Manage received and sent files.
/api/filesLists all files with optional filters.
Parameter
typestringclientstringqstringsortstring{
"files": [
{
"id": "received-file_123",
"type": "received",
"filename": "document.pdf",
"size": 1048576,
"mimeType": "application/pdf",
"createdAt": "2025-01-15T10:30:00Z",
"clientId": "client_abc",
"clientName": "Max Mustermann"
}
],
"counts": {
"total": 42,
"received": 30,
"sent": 12
}
}/api/files/{id}/downloadDownloads a file (streaming).
Parameter
idstring*/api/files/{id}Permanently deletes a file.
Parameter
idstring*Team
Manage team members and invitations.
Note: Team features require the Organisation plan.
/api/team/membersLists all team members and pending invitations.
{
"members": [
{
"id": "user_123",
"name": "Anna Schmidt",
"email": "anna@company.com",
"role": "OWNER",
"createdAt": "2024-01-01T00:00:00Z"
}
],
"invitations": [
{
"id": "inv_456",
"email": "new@company.com",
"role": "MEMBER",
"expiresAt": "2025-01-22T00:00:00Z"
}
]
}/api/team/invitationsSends an invitation to an email address.
Parameter
emailstring*rolestring/api/team/invitations?id={id}Revokes a pending invitation.
Parameter
idstring*/api/team/members/{id}Removes a member from the team.
Parameter
idstring*Search
/api/search?q={query}Searches clients, upload files, and share files.
Parameter
qstring*{
"clients": [...],
"uploadFiles": [...],
"sharedFiles": [...]
}Error Codes
The API uses standard HTTP status codes to indicate success or failure.
| Code | Status | Description |
|---|---|---|
| 400 | Bad Request | The request contains invalid parameters or is malformed. |
| 401 | Unauthorized | Invalid or missing API key. |
| 403 | Forbidden | No permission for this action or subscription upgrade required. |
| 404 | Not Found | The requested resource was not found. |
| 410 | Gone | The resource has expired (e.g., link expired). |
| 500 | Server Error | An internal server error occurred. Please try again later. |
Error Response
{
"error": "Unauthorized",
"message": "Invalid or missing API key"
}Rate Limits
To ensure service stability, the following rate limits apply:
| Endpoint | Limit |
|---|---|
| /api/* | 100 requests per minute |
| /api/upload | 50 uploads per minute |
| /api/search | 30 search queries per minute |
API Support
Have questions about the API or need help with integration? Our developer team is happy to assist.
api@sendmesafe.com