---
title: "Update Bounty"
method: PATCH
path: "/bounties/{id}"
tags: ["Bounties"]
---

# Update Bounty

`PATCH /bounties/{id}`

Updates a bounty. A published bounty accepts title, description, and country targeting while it is still open with nothing under review. A scheduled (not-yet-published) draft additionally accepts the reward, winner slots, and schedule.

## Request body

- object
  - `accepted_submissions_limit` integer, nullable — Scheduled drafts only. Number of submissions that can be accepted (winner slots).
  - `allowed_country_codes` string[], nullable — Replace the countries whose residents can work the bounty, as ISO 3166 alpha-2 codes. Empty means worldwide.
  - `business_goal_type` 'clipping' | 'post_engagement' | 'owned_account_growth' | 'ugc_content' | 'local_activation' | 'data_capture' | 'other' — What the poster wants the work to achieve, declared once here.
  - `description` string — New full task instructions.
  - `frequency` 'once' | 'hourly' | 'daily' | 'weekly' | 'monthly' — Scheduled drafts only. How often the schedule creates a new bounty.
  - `gross_reward_amount` number, nullable — Scheduled drafts only. Gross bounty-pool amount (USD) escrowed per accepted submission. The escrowed total (this times accepted_submissions_limit) must stay at least $5.
  - `publish_at` string, nullable — Scheduled drafts only. New ISO 8601 time to publish the draft. Must be in the future.
  - `publish_at_timezone` string, nullable — Scheduled drafts only. IANA timezone for recurring occurrences.
  - `title` string — New short name of the task.

## Response `200`

bounty updated

- Bounty
  - `accepted_deliverable_types` string[], required
  - `accepted_submissions_count` integer, required — Submissions accepted so far.
  - `accepted_submissions_limit` integer, required — Number of submissions that can be accepted (winner slots).
  - `affiliate_share_amount` number, required — What a referrer earns per accepted submission when the worker arrived through their affiliate link, in whole currency units, at the standard platform fee rate. Taken out of the worker's post-fee reward rather than added on top. `0` when the bounty pays no affiliate share, including bounties tied to no account, which cannot record a referral.
  - `allowed_country_codes` string[], required
  - `budget_amount` number, required — Total gross budget committed to the bounty: `gross_reward_amount` times `accepted_submissions_limit`.
  - `business_goal_type` 'clipping' | 'post_engagement' | 'owned_account_growth' | 'ugc_content' | 'local_activation' | 'data_capture' | 'other' | 'null', nullable, required — What the poster wants the work to achieve, declared once at create. `null` for bounties created before the taxonomy rolled out.
  - `cancel_requested_at` string, nullable, required — When cancellation was requested, as an ISO 8601 timestamp. On a `closed` bounty this means the cancel is pending: submissions are stopped and the bounty cancels once in-flight submissions resolve. On a `canceled` bounty it records when the cancellation was requested. `null` when no cancellation was ever requested.
  - `capture_spec` CaptureSpec, required
    - `filename_pattern` string, required — The naming convention for uploaded files, built from the required metadata fields.
    - `imu` CaptureSpecImu, required
      - `device_motion_units` string, required — Units for the device-motion channels, as a compact key=unit string.
      - `magnetometer_units` string, required — Units for the magnetometer channel.
      - `min_rate_hz` number, required — Minimum sustained IMU sample rate in hertz for a clip to pass validation.
      - `target_rate_hz` integer, required — Target IMU sample rate in hertz.
      - `warmup_min_rate_hz` number, required — Minimum IMU sample rate in hertz tolerated during the warmup window.
      - `warmup_ns` integer, required — Startup window, in nanoseconds, during which the relaxed warmup rate applies.
    - `manifest_schema_version` integer, required — Schema version the client must stamp on the capture manifest it uploads.
    - `min_clip_duration_seconds` integer, required — Minimum length of a single clip, in seconds.
    - `min_total_verified_duration_seconds` integer, required — Total verified footage a submission must accumulate across all its clips before it can be submitted, in seconds. Always a whole number of hours.
    - `required_metadata_fields` string[], required
    - `single_continuous_take` boolean, required — Whether each clip must be one uninterrupted recording rather than stitched segments.
    - `video` CaptureSpecVideo, required
      - `bitrate_ceiling_mbps` integer, required — Maximum acceptable average bitrate, in megabits per second.
      - `bitrate_floor_mbps` integer, required — Minimum acceptable average bitrate, in megabits per second.
      - `bitrate_target_mbps` integer, required — Recommended average bitrate to encode at, in megabits per second.
      - `camera_lens` string, required — Which physical lens to record with.
      - `codecs` string[], required
      - `embed_camera_metadata` boolean, required — Whether the client must also write the camera make and model into the video container's metadata. When `false`, the capture manifest and export CSV are the metadata carrier.
      - `fps` integer, required — Target capture frame rate.
      - `frame_gap_tolerance_ms` integer, required — Longest stall between consecutive frames a clip may contain before the client rejects it, in milliseconds. Every frame is timestamped in the frame log, so a stall stays alignable downstream — this bounds how broken a capture may be, not how evenly it must be paced.
      - `height` integer, required — Required frame height in pixels — recorded footage must match exactly.
      - `min_fov_degrees` integer, required — Minimum acceptable horizontal field of view, in degrees.
      - `orientation` string, required — Device orientation to record in.
      - `preferred_fov_degrees` integer, required — Preferred horizontal field of view, in degrees.
      - `stabilization_mode` 'off' | 'on' | 'any', required — How the client must configure video stabilization: `off` disables EIS so raw motion is preserved for pose extraction, `on` requires it, `any` leaves the device default.
      - `stabilization_required` boolean, required — Whether hardware/software stabilization must be enabled. True exactly when stabilization_mode is `on`.
      - `width` integer, required — Required frame width in pixels — recorded footage must match exactly.
  - `created_at` string, required — When the bounty was created, as an ISO 8601 timestamp.
  - `currency` 'usd' | 'sgd' | 'inr' | 'aud' | 'brl' | 'cad' | 'dkk' | 'eur' | 'nok' | 'gbp' | 'sek' | 'chf' | 'hkd' | 'huf' | 'jpy' | 'mxn' | 'myr' | 'pln' | 'czk' | 'nzd' | 'aed' | 'cop' | 'ron' | 'thb' | 'bgn' | 'idr' | 'dop' | 'php' | 'try' | 'krw' | 'twd' | 'vnd' | 'pkr' | 'clp' | 'uyu' | 'ars' | 'zar' | 'dzd' | 'tnd' | 'mad' | 'kes' | 'kwd' | 'jod' | 'all' | 'xcd' | 'amd' | 'bsd' | 'bhd' | 'bob' | 'bam' | 'khr' | 'crc' | 'xof' | 'egp' | 'etb' | 'gmd' | 'ghs' | 'gtq' | 'gyd' | 'ils' | 'jmd' | 'mop' | 'mga' | 'mur' | 'mdl' | 'mnt' | 'nad' | 'ngn' | 'mkd' | 'omr' | 'pyg' | 'pen' | 'qar' | 'rwf' | 'sar' | 'rsd' | 'lkr' | 'tzs' | 'ttd' | 'uzs' | 'rub' | 'cny' | 'kzt' | 'awg', required — Currency for all amounts on the bounty, as a lowercase ISO 4217 code.
  - `description` string, required — Full task instructions shown to workers.
  - `experience_id` string, nullable, required — Experience the bounty is hosted in, prefixed `exp_`. `null` for platform-wide bounties; may belong to a different account than the funder.
  - `funding_account` AccountSummary, required
    - `id` string, required — Account ID, prefixed `biz_`.
    - `title` string, required — Account display name.
  - `gross_paid_out_amount` number, required — Gross amount paid out from the bounty pool across accepted submissions — worker payouts, platform fees, and affiliate shares together. Tips and reviewer rewards are excluded.
  - `gross_reward_amount` number, required — Gross bounty-pool amount allocated per accepted submission, in whole currency units.
  - `id` string, required — Bounty ID, prefixed `bnty_`.
  - `net_reward_amount` number, required — What a worker is quoted per accepted submission after the platform fee, in whole currency units. The exact post-fee figure, at the standard platform fee rate — a worker who locked a different rate, or who arrived through an affiliate link, is paid a different amount.
  - `poster` UserSummary, required
    - `id` string, required — User ID, prefixed `user_`.
    - `name` string, nullable, required — Display name.
    - `profile_picture` UserProfilePicture, required
      - `url` string, required — Avatar image URL. Always present — a generated placeholder when the user set no picture.
    - `username` string, required — Public username.
  - `scheduled_frequency` 'once' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'null', nullable, required — How often the schedule creates a new bounty. Each occurrence is a separate bounty; the original is not republished.
  - `scheduled_publish_at` string, nullable, required — When a scheduled bounty will publish, as an ISO 8601 timestamp. `null` once published, for bounties that were never scheduled, and for terminally failed drafts parked for manual rescheduling.
  - `spots_remaining` integer, required — Unfilled winner capacity: `accepted_submissions_limit` minus `accepted_submissions_count`, clamped to zero. Not a signal that the bounty currently accepts new claims.
  - `status` 'scheduled' | 'open' | 'closed' | 'completed' | 'canceled', required — Lifecycle state. `scheduled` bounties are unpublished drafts, visible to their poster and the account's authorized managers; `open` bounties accept new submissions; `closed` bounties are live but no longer accept new submissions; `completed` bounties paid out every winner slot; `canceled` bounties ended before filling their slots.
  - `submissions_closed_at` string, nullable, required — When new submissions stopped being accepted, as an ISO 8601 timestamp. Set when a cancellation is requested on a bounty with work in flight, so in-flight submissions can resolve before the bounty cancels. `null` when submissions were never stopped — including completed bounties that simply filled every winner slot.
  - `title` string, required — Short name of the task shown to workers.
  - `unresolved_submissions_count` integer, required — Submissions still awaiting an outcome: in progress or pending review.
  - `updated_at` string, required — When the bounty was last updated, as an ISO 8601 timestamp.

## Other responses

- `404` — Resource not found

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/versions/db0883548bc5/schema)
