Skip to main content
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

EndpointRequest
List Workforce BountiesGET /workforce/bounties
Retrieve Workforce BountyGET /workforce/bounties/{id}

Attributes

id
string
required
Bounty ID, prefixed bnty_.
accepted_submissions_count
integer
required
Submissions accepted so far.
accepted_submissions_limit
integer
required
Number of submissions that can be accepted (winner slots).
allowed_country_codes
string[]
required
Countries whose residents can work the bounty, as ISO 3166 alpha-2 codes. Empty means worldwide.
budget_amount
number
required
Total gross budget committed to the bounty: gross_reward_amount times accepted_submissions_limit.
business_goal_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
created_at
string
required
When the bounty was created, as an ISO 8601 timestamp.
currency
string
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 | null
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
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.
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.
poster
object
required
The user who posted the bounty.

Properties

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

Properties

url
string
required
Avatar image URL. Always present — a generated placeholder when the user set no picture.
username
string
required
Public username.
scheduled_frequency
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
scheduled_publish_at
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.
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
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
submissions_closed_at
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.
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.
WorkforceBounty
{
	"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"
}