How BYO-Cloud Delivery Works
Responses are encrypted end-to-end and stored in the consumer's own S3-compatible bucket. The consumer downloads and decrypts locally.
Why BYO-Cloud Delivery?
When API responses contain sensitive data — financial records, medical results, proprietary datasets — you don't want them sitting on someone else's infrastructure. Sertone BYO-Cloud delivery stores encrypted responses directly in your own S3-compatible storage bucket. You choose the provider, you hold the keys, you control retention.
This is ideal for enterprises with strict data residency requirements, regulated industries that mandate data sovereignty, or any team that refuses to let API response data touch third-party servers. Supported providers include AWS S3, MinIO, Backblaze B2, Wasabi, DigitalOcean Spaces, Cloudflare R2, and 22+ more.
When a consumer makes an API call with cloud delivery enabled, the response is AES-256-GCM encrypted and uploaded to the configured MinIO bucket. The consumer then downloads and decrypts it locally — the platform never sees the plaintext data.
Live Demo — S3 Bucket Delivery
Call API with Cloud Delivery
The response will show the encrypted object stored in MinIO, along with the decrypted data and latency metrics.
Code Samples
# Call API with S3 delivery via your local Sertone wrapper
$ curl -X POST https://localhost:3000/internal/call \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_CONSUMER_SECRET" \
-d '{
"api_id_public": "bb-webhook-receiver",
"method": "GET",
"path": "/status"
}'
# Response includes S3 object metadata
{
"status": 200,
"delivery": "s3",
"bucket": "demo-responses",
"objectKey": "resp_1711612800_abc123.enc",
"encrypted": true,
"cipher": "AES-256-GCM"
}
// JavaScript — fetch with S3 delivery
const response = await fetch('https://localhost:3000/internal/call', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_CONSUMER_SECRET'
},
body: JSON.stringify({
api_id_public: 'bb-webhook-receiver',
method: 'GET',
path: '/status'
})
});
const { data } = await response.json();
console.log('Result:', data.result);
// Download and decrypt from your bucket
// const s3Object = await s3Client.getObject({ Bucket: 'demo-responses', Key: data.result.objectKey });
// const decrypted = decrypt(s3Object.Body, yourPrivateKey);
# Python — requests with S3 delivery
import requests
import boto3
response = requests.post(
'https://localhost:3000/internal/call',
headers={
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_CONSUMER_SECRET',
},
json={
'api_id_public': 'bb-webhook-receiver',
'method': 'GET',
'path': '/status',
},
)
result = response.json().get('data', {}).get('result', {})
print(f"S3 Object: {result.get('objectKey')}")
print(f"Cipher: {result.get('cipher')}")
# Download from your MinIO / S3 bucket
# s3 = boto3.client('s3', endpoint_url='https://minio.your-server.com')
# obj = s3.get_object(Bucket='demo-responses', Key=result['objectKey'])
Self-Host with Your Own S3 Storage
Run the Docker Container
Pull and run the free Sertone wrapper on your own infrastructure. One command sets everything up.
docker run -d --name sertone \
-p 3000-3003:3000-3003 -p 3005-3006:3005-3006 \
-v sertone-data:/app/data \
sertone/wrapper:latest
Open the Web Console
Navigate to https://localhost:3002/panel to access your Sertone control center. Create your account and connect your wallet on first launch.
Browse the Catalog
Click Catalog & SDKs in the sidebar. Search for APIs, try them in demo mode (free), then switch to production when ready.
Make Your First Call
Copy your consumer secret from Settings > Security, then use the code samples above to call any API from your own code.