> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Workforce Bounties

A Workforce Bounty is a paid task posted by an account or user. The reward is held in escrow when the bounty publishes, workers submit proof of completed work, and each accepted submission is paid out until every winner slot fills.

Use the Workforce Bounties API to list an account's bounties for reporting or dashboards, list the bounties a user can work or has participated in, and retrieve a single bounty by ID.

## Endpoints

| Endpoint                                                                                      | Request                                                                     |
| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [List Workforce Bounties](/api-reference/beta/workforce-bounties/list-workforce-bounties)     | <Badge color="blue" size="sm" stroke>GET</Badge> `/workforce/bounties`      |
| [Retrieve Workforce Bounty](/api-reference/beta/workforce-bounties/retrieve-workforce-bounty) | <Badge color="blue" size="sm" stroke>GET</Badge> `/workforce/bounties/{id}` |

## Attributes

<Columns cols={2}>
  <Column>
    <ResponseField name="id" type="string" required>
      Bounty ID, prefixed `bnty_`.
    </ResponseField>

    <ResponseField name="accepted_submissions_count" type="integer" required>
      Submissions accepted so far.
    </ResponseField>

    <ResponseField name="accepted_submissions_limit" type="integer" required>
      Number of submissions that can be accepted (winner slots).
    </ResponseField>

    <ResponseField name="allowed_country_codes" type="string[]" required>
      Countries whose residents can work the bounty, as ISO 3166 alpha-2 codes.
      Empty means worldwide.
    </ResponseField>

    <ResponseField name="budget_amount" type="number" required>
      Total gross budget committed to the bounty: `gross_reward_amount` times
      `accepted_submissions_limit`.
    </ResponseField>

    <ResponseField name="business_goal_type" type="string,null | null" required>
      What the poster wants the work to achieve.

      Available options: `clipping`, `post_engagement`, `owned_account_growth`, `ugc_content`, `local_activation`, `other`
    </ResponseField>

    <ResponseField name="created_at" type="string" required>
      When the bounty was created, as an ISO 8601 timestamp.
    </ResponseField>

    <ResponseField name="currency" type="string" required>
      Currency for all amounts on the bounty, as a lowercase ISO 4217 code.
    </ResponseField>

    <ResponseField name="description" type="string" required>
      Full task instructions shown to workers.
    </ResponseField>

    <ResponseField name="experience_id" type="string | null" required>
      Experience the bounty is hosted in, prefixed `exp_`. Null for platform-wide
      bounties; may belong to a different account than the funder.
    </ResponseField>

    <ResponseField name="funding_account" type="object | null" required>
      The account whose balance funds the bounty pool, or `null` when a user funds
      it personally. May differ from the account hosting `experience_id`.
    </ResponseField>

    <ResponseField name="gross_paid_out_amount" type="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.
    </ResponseField>

    <ResponseField name="gross_reward_amount" type="number" required>
      Gross bounty-pool amount allocated per accepted submission, in whole currency
      units.
    </ResponseField>

    <ResponseField name="poster" type="object" required>
      The user who posted the bounty.

      <Accordion title="Properties" defaultOpen={true}>
        <ResponseField name="id" type="string" required>
          User ID, prefixed `user_`.
        </ResponseField>

        <ResponseField name="name" type="string | null" required>
          Display name.
        </ResponseField>

        <ResponseField name="profile_picture" type="object" required>
          Avatar wrapper; its `url` is always present, using a generated placeholder when the user set no picture.

          <Accordion title="Properties" defaultOpen={true}>
            <ResponseField name="url" type="string" required>
              Avatar image URL. Always present — a generated placeholder when the user set no picture.
            </ResponseField>
          </Accordion>
        </ResponseField>

        <ResponseField name="username" type="string" required>
          Public username.
        </ResponseField>
      </Accordion>
    </ResponseField>

    <ResponseField name="scheduled_frequency" type="string,null | null" required>
      How often the schedule creates a new bounty. Each occurrence is a separate bounty; the original is not republished.

      Available options: `once`, `hourly`, `daily`, `weekly`, `monthly`
    </ResponseField>

    <ResponseField name="scheduled_publish_at" type="string | null" 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.
    </ResponseField>

    <ResponseField name="spots_remaining" type="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.
    </ResponseField>

    <ResponseField name="status" type="string" 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.

      Available options: `scheduled`, `open`, `closed`, `completed`, `canceled`
    </ResponseField>

    <ResponseField name="submissions_closed_at" type="string | null" required>
      When new submissions were explicitly stopped, as an ISO 8601 timestamp. Null
      when submissions were never explicitly stopped — including closed or completed
      bounties that simply filled every winner slot.
    </ResponseField>

    <ResponseField name="title" type="string" required>
      Short name of the task shown to workers.
    </ResponseField>

    <ResponseField name="unresolved_submissions_count" type="integer" required>
      Submissions still awaiting an outcome: in progress or pending review.
    </ResponseField>

    <ResponseField name="updated_at" type="string" required>
      When the bounty was last updated, as an ISO 8601 timestamp.
    </ResponseField>
  </Column>

  <Column>
    <div className="api-resource-sticky-example">
      ```json WorkforceBounty theme={null}
      {
      	"id": "bnty_xxxxxxxxxxxxx",
      	"title": "Clip our Tuesday livestream",
      	"description": "Record a 30-60 second clip of the stream's best moment and post it with the campaign hashtag.",
      	"status": "open",
      	"currency": "usd",
      	"gross_reward_amount": 25,
      	"budget_amount": 125,
      	"gross_paid_out_amount": 50,
      	"accepted_submissions_limit": 5,
      	"accepted_submissions_count": 2,
      	"unresolved_submissions_count": 1,
      	"spots_remaining": 3,
      	"business_goal_type": "clipping",
      	"allowed_country_codes": ["US", "MX"],
      	"submissions_closed_at": null,
      	"scheduled_publish_at": null,
      	"scheduled_frequency": null,
      	"experience_id": "exp_xxxxxxxxxxxxx",
      	"poster": {
      		"id": "user_xxxxxxxxxxxx",
      		"username": "acme_studio",
      		"name": "Creator Name",
      		"profile_picture": {
      			"url": "https://img.whop.com/creator.png"
      		}
      	},
      	"funding_account": {
      		"id": "biz_xxxxxxxxxxxxx",
      		"title": "Acme Studio"
      	},
      	"created_at": "2026-07-01T00:00:00.000Z",
      	"updated_at": "2026-07-08T00:00:00.000Z"
      }
      ```
    </div>
  </Column>
</Columns>
