Before You Begin
You'll need an account with at least one cloud storage provider. We recommend setting up two or more destinations for redundancy.
Storage Options
Verity supports two types of cloud storage: developer-focused object storage (S3, B2, GCS) and consumer cloud drives (Google Drive, Dropbox). Choose based on your needs:
Object Storage (S3, B2, GCS)
- + Lowest cost at scale
- + More control over access policies
- + No file size limits
- - Requires technical setup (API keys, IAM)
Consumer Drives (Google Drive, Dropbox)
- + Easy OAuth sign-in
- + Free tiers available
- + Familiar interface for viewing files
- - May have storage limits on free plans
Storage Cost Comparison
| Provider | Storage Cost | 1 Hour @ 720p | Notes |
|---|---|---|---|
| Backblaze B2 | $0.005/GB/mo | ~$0.003 | Best value |
| Amazon S3 | $0.023/GB/mo | ~$0.015 | Most reliable |
| Google Cloud Storage | $0.020/GB/mo | ~$0.013 | Good integration |
| Google Drive | Free (15GB) / $1.99/mo (100GB) | Free* | Easiest setup |
| Dropbox | Free (2GB) / $11.99/mo (2TB) | Free* | Popular choice |
* Estimated for 720p video at ~500MB-1GB per hour. Actual costs depend on video quality settings and egress charges. Free tier limits apply.
Amazon S3 Setup
1. Create an S3 Bucket
- Log into the AWS S3 Console
- Click "Create bucket"
- Choose a unique bucket name (e.g.,
my-verity-recordings) - Select your preferred region (closer is faster)
- Keep "Block all public access" enabled (recommended)
- Click "Create bucket"
2. Create IAM Credentials
- Go to IAM Console
- Navigate to Users → Create user
- Name it something like
verity-uploader - Select "Access key - Programmatic access"
- Attach a policy with these permissions (replace
YOUR_BUCKET):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::YOUR_BUCKET/*"
}
]
}- Complete user creation and save the Access Key ID and Secret Access Key
3. Configure in Verity
In the app, add a new S3 destination with:
- Bucket: Your bucket name
- Region: e.g., us-east-1
- Access Key ID: From IAM
- Secret Access Key: From IAM
Backblaze B2 Setup
1. Create a B2 Bucket
- Log into Backblaze B2
- Click "Create a Bucket"
- Choose a unique bucket name
- Select "Private" for file visibility
- Disable object lock (optional)
- Click "Create a Bucket"
2. Create Application Key
- Go to "App Keys" in the B2 console
- Click "Add a New Application Key"
- Name it (e.g.,
verity-upload) - Restrict to your bucket (recommended)
- Allow: Write only (or Read and Write if you want to download)
- Click "Create New Key"
- Save the Application Key ID and Application Key immediately (key is shown only once)
3. Configure in Verity
Add a new B2 destination with:
- Bucket: Your bucket name
- Application Key ID: From B2
- Application Key: From B2
Google Cloud Storage Setup
1. Create a GCS Bucket
- Go to Google Cloud Console
- Click "Create bucket"
- Choose a globally unique name
- Select your preferred region
- Choose "Standard" storage class
- Use "Uniform" access control (recommended)
- Click "Create"
2. Create Service Account
- Go to IAM & Admin → Service Accounts
- Click "Create Service Account"
- Name it (e.g.,
verity-uploader) - Grant the role: "Storage Object Creator"
- Click "Done"
- Click on the new service account
- Go to "Keys" tab → Add Key → Create new key
- Choose JSON format and download the key file
3. Configure in Verity
Add a new GCS destination with:
- Bucket: Your bucket name
- Client Email: From the JSON key file
- Private Key: From the JSON key file
Google Drive Setup
No API keys required
Google Drive uses OAuth sign-in. Just tap "Sign in with Google" in the app.
What Permissions We Request
Transparency is important to us. Here's exactly what Verity asks for when you connect Google Drive:
drive.fileCreate and modify files the app creates. This lets Verity upload video chunks to your Drive. We can only access files that Verity itself created—we cannot see or access any of your other files.
drive.metadata.readonlyView folder names to let you pick a destination. This allows the folder picker to show you your folder structure. We only read folder names—we cannot see file contents.
What We Cannot Do
- Access files we didn't create (your documents, photos, etc.)
- Delete any files
- Share files or change sharing settings
- Access your email or profile information
Setup Steps
- In Verity, tap Add Destination → Google Drive
- Tap "Sign in with Google"
- Review the permissions and approve
- Select the folder where you want recordings stored
- Name your destination (e.g., "My Drive - Recordings")
Revoking Access
You can revoke Verity's access at any time from your Google Account permissions page.
Dropbox Setup
Secure app folder access
Verity uses Dropbox's "App folder" permission. We can only access a dedicated Apps/Verity folder—we cannot see or access any other files in your Dropbox.
What Permissions We Request
Transparency is important to us. Here's exactly what Verity asks for when you connect Dropbox:
App folderDedicated Verity folder only. Verity can only access the Apps/Verity folder in your Dropbox. We cannot see, read, or write to any other location in your account. This is the most restrictive permission Dropbox offers.
files.content.writeUpload recordings. Save video chunks to the Verity folder.
files.metadata.readList folder contents. See recordings and subfolders within the Verity folder.
What We Cannot Do
- Access any files outside the
Apps/Verityfolder - See your other Dropbox folders or files
- Delete any files
- Share files or create shared links
- Access your account settings
Setup Steps
- In Verity, tap Add Destination → Dropbox
- Tap "Sign in with Dropbox"
- Review the permissions and approve
- Dropbox automatically creates an
Apps/Verityfolder for your recordings - Optionally create subfolders to organize your recordings
- Name your destination (e.g., "Dropbox - Evidence")
Revoking Access
You can revoke Verity's access at any time from your Dropbox Connected Apps page.
OAuth Security
For Google Drive and Dropbox, Verity uses OAuth 2.0 with PKCE (Proof Key for Code Exchange), the industry standard for secure mobile authentication:
- Your password is never shared with us. You sign in directly with Google/Dropbox.
- Tokens are stored securely. Access tokens are stored in your device's secure keychain (iOS) or encrypted storage (Android).
- Tokens auto-refresh. We request offline access to refresh tokens automatically without requiring you to sign in again.
- You can revoke anytime. Revoking access immediately invalidates all tokens.
Testing Your Setup
After configuring a destination in Verity, use the "Test Upload" button to verify everything is working:
- A small test file is uploaded to your bucket
- We verify the upload succeeded
- The test file is deleted
If the test fails, double-check your credentials and bucket permissions.