Developer docs
Data flow
How a video moment travels from the candidate's browser to your ATS, and what each step persists.
A video moment has five steps from candidate keystroke to ATS record. Each step is owned by a specific component. This page lists who does what.
1. Recorder mounts
Your page loads recorder.js and calls FlipbaseV2.recorder({...}). The library renders a viewfinder into the target div and requests camera permission. No network call to Flipbase yet.
2. Candidate records
The candidate taps record, captures a take, and presses submit. The recording is encoded in the browser as WebM (Chrome, Firefox, Edge, Android) or MP4 (Safari, iOS), with VP9 / Opus or H.264 / AAC respectively.
3. Recorder uploads
The library negotiates a signed upload URL with the Flipbase API and PUTs the encoded video directly to object storage. The upload is browser-to-storage, your server is not in the path. A new video record is created with status 'created'.
4. Callback fires
Once the upload completes, the recorder's callback function is called with the new video UUID. This is the only moment in the flow where your client-side code runs: you persist the UUID against the candidate record in your system.
callback: color:#f0a4c0">function (videoId) {
color:#fbeef3">"color:#9a96a6">// POST videoId to your own backend, attached to the candidate
fetch(color:#fbeef3">'/api/candidates/' + candidateId + color:#fbeef3">'/video-moment', {
method: color:#fbeef3">'POST',
headers: { color:#fbeef3">'Content-Type': color:#fbeef3">'application/json' },
body: JSON.stringify({ flipbase_video_id: videoId }),
});
}5. Flipbase processes
Asynchronously, Flipbase transcodes the upload into web-streamable variants, generates thumbnail frames, and updates the video record's status to 'finished'. The video is now playable via player.js at any time.
6. Player retrieves
When a recruiter opens the candidate record in your ATS, your application loads player.js with the stored video_id. The player fetches the video record from the API and streams the playable file. The player handles its own lifecycle from that point.
What persists where
| Lives in | What |
|---|---|
| Flipbase | The encoded video file, thumbnails, transcoded variants, the video record (id, status, dimensions, duration, etc.) |
| Your system | The video UUID, attached to whatever candidate / application / role the moment belongs to |
| Your ATS / UI | The rendered player, embedded inline against the candidate record |
The contract is that Flipbase owns the file, you own the relationship between the UUID and the human it belongs to. If you ever leave Flipbase, you export the UUIDs and we hand over the underlying files via a one-time signed-URL bulk export.
Ready to call the API?
The full reference is on Postman. To actually call it you need an api_key + api_secret + sandbox organization. Reply within one working day.
