latestOpenAPI 3.1.02026-08-153864115.7 MB

c301132dbfd7

Bounty Submissions

Retrieve Bounty Submission

Retrieves one bounty submission the credential can see — one the caller authored, or one on a bounty they posted or their account owns.

get/bounty_submissions/{id}

Response

bounty submission returned

bounty_idstring required

The bounty the work was submitted to, prefixed bnty_.

capture_filenamestring nullable required

The vendor filename stem Country_City_Site_Station_Operator, derived from the capture metadata. null until every component is present.

captured_clip_countinteger required

Number of verified capture clips accepted for this submission so far. 0 for submissions whose deliverable doesn't accumulate clips.

captured_duration_secondsinteger required

Total verified duration of accepted capture clips, in whole seconds. 0 for submissions whose deliverable doesn't accumulate clips.

citystring nullable required

Capture metadata: city the footage was recorded in. null unless capture metadata was provided.

claimed_atstring nullable required

When the worker claimed the submission, as an ISO 8601 timestamp.

contentstring nullable required

Written proof the worker submitted with their work.

countrystring nullable required

Capture metadata: country the footage was recorded in. null unless capture metadata was provided.

created_atstring required

When the submission was created, as an ISO 8601 timestamp.

deliverable_type'content_url' | 'media' | 'data_capture' | 'null' nullable 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.

deliverable_urlsstring[] nullable required
denial_reasonstring nullable required

Why the submission was denied, when a presentable reason exists. Always null unless status is denied.

devicestring nullable required

Capture metadata: device the footage was recorded on. null unless capture metadata was provided.

fovinteger nullable required

Capture metadata: horizontal field of view in degrees. null when not reported.

idstring required

Submission ID, prefixed btys_.

operatorstring nullable required

Capture metadata: identifier of the person who recorded the footage. null unless capture metadata was provided.

resolved_atstring nullable required

When the submission was approved or denied, as an ISO 8601 timestamp. null until then.

sitestring nullable required

Capture metadata: site or venue the footage was recorded at. null unless capture metadata was provided.

stationstring nullable required

Capture metadata: station or position within the site. null unless capture metadata was provided.

status'in_progress' | 'submitted' | 'approved' | 'denied' 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.

submitted_atstring nullable required

When proof was submitted for review, as an ISO 8601 timestamp. null while the attempt is in progress.

updated_atstring required

When the submission was last updated, as an ISO 8601 timestamp.

Example response

{
  "bounty_id": "bnty_xxxxxxxxxxxxxx",
  "capture_clips": [
    {
      "bounty_submission_id": "btys_xxxxxxxxxxxxxx",
      "created_at": "2026-01-01T12:00:00.000Z",
      "duration_seconds": 180,
      "failure_code": "upload_failed",
      "failure_message": "video: The video upload failed after 5 retries.",
      "frames_url": "https://assets-2-rough.whop.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "id": "bclip_xxxxxxxxxxxxxx",
      "imu_url": "https://assets-2-rough.whop.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "manifest_url": "https://assets-2-rough.whop.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "ready_at": "2026-01-01T12:00:00.000Z",
      "sequence": 1,
      "status": "ready",
      "updated_at": "2026-01-01T12:00:00.000Z",
      "video_url": "https://assets-2-rough.whop.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
  ],
  "capture_filename": "US_Austin_BurnetRd_Bay2_mwebb",
  "city": "Austin",
  "claimed_at": "2026-01-01T12:00:00.000Z",
  "content": "Ceramic coating reveal, shot at the Burnet Rd bay",
  "country": "US",
  "created_at": "2026-01-01T12:00:00.000Z",
  "deliverable_type": "media",
  "deliverable_urls": [
    "https://tiktok.com/@shinetime/video/1"
  ],
  "denial_reason": "The clip never shows the finished paint.",
  "device": "iPhone 15 Pro",
  "files": [
    {
      "attachment_type": "image",
      "content_type": "image/png",
      "filename": "ceramic-coating-cut.png",
      "id": "file_xxxxxxxxxxxxxx",
      "url": "https://assets-2-rough.whop.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
  ],
  "fov": 120,
  "id": "btys_xxxxxxxxxxxxxx",
  "latest_proof_livestream_feed": {
    "id": "lfeed_3",
    "recording_status": "completed",
    "recording_url": "https://assets-2-rough.whop.com/uploads/video/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "thumbnail_url": "https://img.whop.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxx/resize:fit/width:1000/height:500/plain/https://cdn.whop.com/livestreams/paint-correction-proof-cover.jpg",
    "title": "Untitled Livestream"
  },
  "operator": "mwebb",
  "resolved_at": "2026-01-01T12:00:00.000Z",
  "site": "BurnetRd",
  "station": "Bay2",
  "status": "submitted",
  "submitted_at": "2026-01-01T12:00:00.000Z",
  "updated_at": "2026-01-01T12:00:00.000Z",
  "worker": {
    "id": "user_xxxxxxxxxxxxxx",
    "name": "Dana Whitfield",
    "profile_picture": {
      "url": "https://assets-2-rough.whop.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    },
    "username": "danawhitfield"
  }
}