Lightweight document protection — includes watermarks and metadata establishing clear chain of custody.
The API uses asynchronous processing to handle large volumes without timeouts:
Authorization: Bearer aqua-api-watermark-77204041104282
This API key is universal and can be used immediately for testing.
| Parameter | Type | Description |
|---|---|---|
user_email |
String | Your Aquamark account email Use [email protected] for testing with Aquamark branding |
funder |
String or Array | Funder name(s) Max 15 per request, letters/numbers/spaces/hyphens only |
files |
Array of Objects | Array of file objects, each containing:name (required): Filename with .pdf extensionurl or data (required): Public URL or base64-encoded PDFCan mix URL and base64 files in the same request |
Max file size: 25MB per file
name: The filename (e.g., "bank-statement-jan.pdf")url: Public URL to the PDF file, ORdata: Base64-encoded PDF dataNote: Examples use cURL for clarity. Translate to your preferred language (Python, JavaScript, Java, etc.). Standard HTTP requests—nothing custom.
curl -X POST https://aquamark-broker-funder.onrender.com/watermark-broker-funder \
-H "Authorization: Bearer aqua-api-watermark-77204041104282" \
-H "Content-Type: application/json" \
-d '{
"user_email": "[email protected]",
"funder": ["Forward Financing", "OnDeck Capital", "Kapitus"],
"files": [
{
"name": "bank-statement-jan.pdf",
"url": "https://your-portal.com/submissions/jan.pdf"
},
{
"name": "bank-statement-feb.pdf",
"data": "JVBERi0xLjcKJeLjz9MK..."
},
{
"name": "credit-application.pdf",
"data": "JVBERi0xLjcKJeLjz9MK..."
}
]
}'
Note: You can mix files with url and files with data (base64) in the same request. The data field should contain the complete base64-encoded PDF. Convert your PDF files to base64 using any standard library before sending.
{
"job_id": "abc-123-def-456",
"status": "processing",
"file_count": 3,
"message": "Job created successfully. Poll /job-status/{job_id} for updates."
}
Use the job_id from Step 2 to check status every 10 seconds:
curl https://aquamark-broker-funder.onrender.com/job-status/abc-123-def-456
While processing:
{
"job_id": "abc-123-def-456",
"status": "processing",
"progress": "Processing 2 of 3 files",
"created_at": "2025-01-06T10:00:00Z"
}
When complete:
{
"job_id": "abc-123-def-456",
"status": "complete",
"download_url": "https://...broker-job-results/abc-123-def-456.zip",
"message": "Ready for download. Files expire after 1 hour.",
"created_at": "2025-01-06T10:00:00Z",
"completed_at": "2025-01-06T10:01:30Z"
}
On error:
{
"job_id": "abc-123-def-456",
"status": "error",
"error_message": "Job timed out after 10 minutes",
"created_at": "2025-01-06T10:00:00Z",
"completed_at": "2025-01-06T10:10:00Z"
}
Use the download_url from Step 3 to download the ZIP:
curl "https://...broker-job-results/abc-123-def-456.zip" --output watermarked.zip
watermarked.zip/
├── bank-statement-jan-forward-financing.pdf
├── bank-statement-jan-ondeck-capital.pdf
├── bank-statement-jan-kapitus.pdf
├── bank-statement-feb-forward-financing.pdf
├── bank-statement-feb-ondeck-capital.pdf
├── bank-statement-feb-kapitus.pdf
├── credit-application-forward-financing.pdf
├── credit-application-ondeck-capital.pdf
└── credit-application-kapitus.pdf
Each file is watermarked with your broker logo and the funder's name.
complete or errordownload_url is a signed URL with built-in expirationStorage tip: Each funder receives a unique PDF, so files can accumulate quickly. We recommend deleting watermarked files immediately after confirming successful delivery to the funder by adding a basic file deletion command to your existing workflow.
curl -X POST https://aquamark-broker-funder.onrender.com/watermark-broker-funder \
-H "Authorization: Bearer aqua-api-watermark-77204041104282" \
-H "Content-Type: application/json" \
-d '{
"user_email": "[email protected]",
"funder": ["Forward Financing", "OnDeck Capital"],
"files": [
{
"name": "statement.pdf",
"url": "https://example.com/statement.pdf"
}
]
}'
curl -X POST https://aquamark-broker-funder.onrender.com/watermark-broker-funder \
-H "Authorization: Bearer aqua-api-watermark-77204041104282" \
-H "Content-Type: application/json" \
-d '{
"user_email": "[email protected]",
"funder": ["Forward Financing", "OnDeck Capital"],
"files": [
{
"name": "statement.pdf",
"data": "JVBERi0xLjcKJeLjz9MK..."
}
]
}'
| Code | Meaning | Example Response |
|---|---|---|
| 400 | Bad request | Missing 'files' array. Provide array of file objects with 'name' and either 'data' (base64) or 'url' |
| 401 | Invalid API key | Invalid API key |
| 402 | Account not authorized | Requires the Leak Detection plan |
| 404 | Job not found | Job not found |
| 413 | File too large | File 'statement.pdf' exceeds 25MB limit (30MB) |
| 429 | Rate limit exceeded | Too many requests. Please wait 15 minutes and try again. |
| 500 | Server error | Internal server error |
The examples above use test credentials with Aquamark branding. To deploy with your own branding:
[email protected] with your Aquamark account email in the user_email parameterQuestions? Email [email protected]