Video infrastructure you can put your own product in front of.
If video is a feature inside your application, you need an API, webhooks and playback on your own domain - not a vendor's watch page.
Short answer
An API and webhooks over storage you control.
Upload through a REST API, get webhooks when jobs change state, and issue signed playback URLs from your own backend. The output lands in your own R2 bucket, so your customers' video is inside your infrastructure rather than a third party's account.
That last point tends to matter in enterprise sales: answering "where does our video actually live?" with your own cloud account is a shorter conversation than naming a vendor.
Estimate this workload in the calculator See how BYO storage works
Integration surface
What you build against.
The pieces that make video a feature rather than an embed.
REST API for ingest
POST a source and manage assets programmatically. No manual step in your product's workflow.
Webhooks on state change
Job started, finished, failed. Your application updates its own UI rather than polling.
Backend-issued playback
Your server decides who may watch and requests a signed URL accordingly, so authorisation follows your own permission model.
Multi-tenant shape
How customer video maps onto storage.
| Concern | Approach | Why |
|---|---|---|
| Isolation | Per-tenant prefix in your bucket | Keeps one customer's objects addressable separately |
| Credentials | Scoped R2 API token | NULX only reaches the prefixes the token allows |
| Deletion | Delete objects under the prefix | Removal is in your control, not a support ticket |
| Cost attribution | Per-prefix storage metrics | Bill your own customers from your own numbers |
| Playback auth | Your backend signs | Authorisation matches your permission model |
This is the arrangement BYO storage makes possible: the storage account, the deletion path and the audit trail belong to you rather than to a video vendor.
Common questions
Integration questions.
Can NULX see my customers' video?
Only the prefixes your API token allows. During managed encoding a worker reads the source through a limited signed URL and writes output back. Credentials are encrypted and never displayed again after saving.
What happens if a job fails?
A webhook fires with the failure state so your application can surface it. Failures are visible rather than silent.
Is there a sandbox?
Sign in and connect a test bucket. There is no card required to try the pipeline end to end.
Can we self-host the pipeline?
That is an enterprise conversation rather than a self-serve plan. Ask and we will scope it honestly.
Sources
Rates checked September 10, 2026 · Page updated September 10, 2026
Next step
Estimate at your tenancy.
Model aggregate customer storage and viewing to see what the platform layer costs.