Skip to main content
A Bounty Submission is one worker’s attempt on a bounty. It starts as an in-progress attempt, enters the review queue when proof is submitted, and ends approved (paid from the bounty’s escrowed pool) or denied. Use the Bounty Submissions API to submit proof of completed work to a bounty, list the submissions you authored, and review the submissions on your bounties — across every bounty or narrowed to one.

Endpoints

Attributes

string
required
Submission ID, prefixed btys_.
string
required
The bounty the work was submitted to, prefixed bnty_.
object[] | null
required
The submission’s capture clips in recording order, each carrying its own review status and temporary signed artifact URLs. The full deliverable when deliverable_type is data_capture, populated only on single-submission reads; null on list responses (use captured_clip_count and captured_duration_seconds for the summary) and for other deliverable types. An attempt still in progress lists every clip it has recorded, including failed ones; once submitted, only clips that passed validation are listed, since only those are evidence.

Properties

string
required
Capture clip ID, prefixed bclip_.
string
required
The bounty submission (attempt) this clip belongs to, prefixed btys_.
string
required
When the clip was created, as an ISO 8601 timestamp.
integer | null
required
Server-validated clip duration in whole seconds. null until validation completes.
string | null
required
Stable validation failure code. null unless status is failed.
string | null
required
Human-readable validation failure reason. null unless status is failed.
string | null
required
Temporary signed URL for the video frame timestamp log. Returned only on single-clip reads for an authorized viewer; null on list responses or until the artifact is attached.
string | null
required
Temporary signed URL for the IMU (accelerometer + gyroscope) log. Returned only on single-clip reads for an authorized viewer; null on list responses or until the artifact is attached.
string | null
required
Temporary signed URL for the capture manifest. Returned only on single-clip reads for an authorized viewer; null on list responses or until the artifact is attached.
string | null
required
When server-side validation completed successfully, as an ISO 8601 timestamp. null until then.
integer
required
The clip’s stable order within the attempt, starting at 1.
string
required
Recording and validation state. recording is still capturing; verifying is running server-side validation; ready passed validation and counts toward the verified-duration payout gate; failed did not validate.Available options: recording, verifying, ready, failed
string
required
When the clip was last updated, as an ISO 8601 timestamp.
string | null
required
Temporary signed URL for the synchronized MP4 video. Returned only on single-clip reads for an authorized viewer; null on list responses or until the artifact is attached.
string | null
required
The vendor filename stem Country_City_Site_Station_Operator, derived from the capture metadata. null until every component is present.
integer
required
Number of verified capture clips accepted for this submission so far. 0 for submissions whose deliverable doesn’t accumulate clips.
integer
required
Total verified duration of accepted capture clips, in whole seconds. 0 for submissions whose deliverable doesn’t accumulate clips.
string | null
required
Capture metadata: city the footage was recorded in. null unless capture metadata was provided.
string | null
required
When the worker claimed the submission, as an ISO 8601 timestamp.
string | null
required
Written proof the worker submitted with their work.
string | null
required
Capture metadata: country the footage was recorded in. null unless capture metadata was provided.
string
required
When the submission was created, as an ISO 8601 timestamp.
string | null
required
How the work arrived when it came in through the API in one shot, informational only — read the work from deliverable_urls, files, and capture_clips directly. null for submissions whose proof is a livestream recording, including ones that attached links or files on submit.Available options: content_url, media, data_capture
string[] | null
required
Links submitted as work, followed by temporary download URLs for the uploaded files. null when the submission carries neither.
string | null
required
Why the submission was denied, when a presentable reason exists. Always null unless status is denied.
string | null
required
Capture metadata: device the footage was recorded on. null unless capture metadata was provided.
object[]
required
Files uploaded as part of the work, in upload order. Empty when the submission has none.

Properties

string
required
File ID, prefixed file_.
string | null
required
Broad kind of file.Available options: image, video, audio, other
string | null
required
MIME type of the file.
string | null
required
Name the file was uploaded with.
string | null
required
Temporary download URL for the file.
integer | null
required
Capture metadata: horizontal field of view in degrees. null when not reported.
object | null
required
Latest public proof livestream attached to the submission.

Properties

string
required
Livestream feed ID.
string | null
required
When the proof livestream ended, as an ISO 8601 timestamp. null while it is still live — a feed with a started_at and no ended_at is streaming right now.
string | null
required
Recording lifecycle state.Available options: recording, processing, completed, failed
string | null
required
Playback URL for a completed proof recording, when available.
string | null
required
When the proof livestream went live, as an ISO 8601 timestamp. null before it starts.
string | null
required
Current proof thumbnail URL, when available.
string
required
Display title for the proof livestream.
string | null
required
Capture metadata: identifier of the person who recorded the footage. null unless capture metadata was provided.
string | null
required
When the submission was approved or denied, as an ISO 8601 timestamp. null until then.
string | null
required
Capture metadata: site or venue the footage was recorded at. null unless capture metadata was provided.
string | null
required
Capture metadata: station or position within the site. null unless capture metadata was provided.
string | null
required
Lifecycle state. in_progress submissions are active attempts that have not submitted proof yet; submitted submissions await review; approved submissions were accepted and paid; denied submissions were rejected. null when the attempt ended without proof, taking it out of the public lifecycle — those attempts are absent from every public list and read.Available options: in_progress, submitted, approved, denied
string | null
required
When proof was submitted for review, as an ISO 8601 timestamp. null while the attempt is in progress.
string
required
When the submission was last updated, as an ISO 8601 timestamp.
object
required
User who submitted the work.

Properties

string
required
User ID, prefixed user_.
string | null
required
Display name.
object
required
Avatar wrapper; its url is always present, using a generated placeholder when the user set no picture.

Properties

string
required
Avatar image URL. Always present — a generated placeholder when the user set no picture.
string
required
Public username.
BountySubmission