Sources

Start an app capture: its presigned upload URL.

A capture is an MP4 screen recording of a web app: H.264, constant 30 fps, at most 1920×1080, tagged bt709 (its sound, when it has any, in AAC), up to 512 MB. Every file is checked after its upload; one that does not conform is rejected with the command that re-encodes it. The file never passes through the API: create answers a presigned PUT URL that works for an hour (send exactly the declared bytes with content-type: video/mp4), then finalize checks the stored file and marks the capture ready or rejected (with rejectionReason). Free. The answer's upload is where to PUT the file (with upload.headers); eventsUpload and checkpointUploads are the recorder's side files when declared. Then POST /story-projects/{projectId}/captures/{captureId}/finalize. A capture names the stored tour it ran (tourId, one of this project's tours: its feature is copied onto the capture) and the product feature it shows (featureId, a product Bible episode id — alone, or exactly the tour's own feature); featureName on every read is the feature's name in the Bible as it reads now. Unknown fields are refused with 400 validation_failed. Requires Idempotency-Key.

post/story-projects/{projectId}/captures

Request

  • Base URL: https://docs.sleeperhit.studio/api/v1
  • URL: https://docs.sleeperhit.studio/api/v1/story-projects/{projectId}/captures
  • Auth: HTTP bearer

Headers

Idempotency-Keystring required

Customer-generated stable identifier for safe retries of idempotent POST requests.

Request body

bytesinteger required

The file's exact size in bytes; the upload URL is signed for it.

fileNamestring
labelstring
sha256string

The file's SHA-256; finalize rejects a stored file that does not match.

originUrlstring uri

The page the recording was made on.

routestring

The app route the recording starts on.

appVersionstring

Free text: the app's version or image tag when it was recorded.

tourobject

The recorder's tour, as it ran (at most 65536 bytes of JSON).

tourIdstring

The stored tour whose run this recording is: one of this project's tours. Its feature is copied onto the capture (or send featureId with it, exactly the tour's own feature).

featureIdstring

The product feature it shows (a product Bible episode id): alone, or exactly the feature the named tourId walks through.

role'raw' | 'edit'

raw for a complete uncut master (private, never played by a beat); edit (default) for a derivative or hand upload.

sourceCaptureIdstring

For an edit: the ready raw master in this project it was cut from.

editMapobject

For an edit: the frame-based source-to-edit map (kept and removed ranges, both hashes); checked at create and finalize.

Response

The capture (uploading) and where to upload its file.

nextstring required

What to do next, in a sentence.

Changes

No recorded changes to this operation across all 1 revision of this API.