title | string | yes | Max 200 characters. |
description | string | yes | Max 5000 characters. |
price | number | yes | Bounty price. |
priceType | "fixed" | "hourly" | yes | Price interpretation. |
completionCriteria | string | no | Definition of done. |
evidenceTypes | string[] | no | text, photo, video, or link. |
category | string | no | Allowed category. |
skillsNeeded | string[] | no | Required skills. |
location | object | no | city, state, country, isRemoteAllowed. To target an entire country, provide its ISO country code with isRemoteAllowed false and omit city/state. Platform-blocked countries are rejected. |
supportedCountries | string[] | no | Countries whose workers may see and apply, as ISO codes (country names are recognized), e.g. ["US", "CA", "GB", "NZ", "AU"]; normalized and deduplicated. Omit to keep the location-derived policy: a country-only location restricts to that country, an on-site city location keeps its country gate, other locations stay unrestricted. When location.country is set it must be in the list, and on-site bounties (isRemoteAllowed false) accept only that country. Blocked or unrecognized countries are rejected. With identityRequired the list is enforced against the verified document country. Not accepted on aiManaged bounties. |
deadline | string | no | Application cutoff as an ISO timestamp. At or after this time, the listing leaves discovery and rejects new applications and direct uploads. Use completionWindowHours for a post-acceptance completion deadline. |
spotsAvailable | number | no | Number of workers, default 1. |
completionWindowHours | number | no | Auto-reassign completion deadline: any whole number of hours from 1 to 720 (30 days), e.g. 36. Once a worker confirms their seat, they have this long to complete; overdue seats are automatically released and the listing reopens for other applicants. Workers may request an extension via POST /api/bounties/:id/applications/:appId/extension, which you approve, deny, or replace via POST .../extension/decision with { action: "approve" | "deny" | "grant", hours? }. Omit for no completion deadline and always omit for tasks anchored to a future event, shift, or appointment because the clock starts at seat confirmation. For AI-managed bounties this overrides the default 6-hour work window. |
identityRequired | boolean | no | Require applicants to pass an identity check (government ID) before applying. Verified once per account and reused across bounties. Default false. |
excludedParticipantSourceBountyIds | string[] | no | Exclude previous participants: ids of your own earlier regular bounties (max 1000). Anyone ever accepted on one of them cannot see or apply to this bounty. Editable later with PATCH. |
micCheckRequired | boolean | no | Require applicants to record an on-device microphone sample before applying. The recording is scored (background noise, clipping, Bluetooth-headset bandwidth, DNSMOS speech quality) and appears as micCheck on each application. With an explicit autoAcceptMinMicScore, automatic review rejects scores below that cutoff; without one, below-default scores stay pending for manual review. Default false. |
autoAccept | boolean | no | Automatically review applicants as they apply. Deterministic checks (account standing, country eligibility, payout viability, your blocklist) always run; an AI review runs when an application needs further assessment. Qualified applicants are accepted, clear mismatches are rejected with a reason, and uncertain cases stay pending for your manual review. Default true; pass false to review every application yourself. Ignored for aiManaged bounties. |
autoAcceptMinMicScore | number | no | Minimum overall DNSMOS speech-quality score (1-5) an applicant’s mic recording must reach on micCheckRequired bounties. Setting it makes the score a hard cutoff for automatic review: below it the application is auto-rejected with a reason, at/above it proceeds toward acceptance; unscored recordings always stay pending. Unset = platform default 3.0, below which applications only stay pending for manual review. |
requiredLinks | object[] | no | Applicant links. |
applicationDetails | object[] | no | Applicant detail items for standard application bounties: questions, acknowledgments, one-file image/DOCX uploads, or one required camera-only live video. Updates affect future applications; existing applications retain the answers collected under their original fields. |
lifecycleMessages | object | no | Optional onAccepted, onRejected, onSubmissionReceived, onSubmissionApproved, and onSubmissionRejected message templates. Supports {{name}}, {{bountyTitle}}, {{deadline}}, and {{reason}}; acceptance and submission templates are only sent to accepted applicants. |
submissionMode | "application" | "photo_upload" | "video_upload" | "document_upload" | no | Upload-collection bounties gather files directly instead of applications. Requires the matching photoSubmission, videoSubmission, or documentSubmission settings (max files, consentText, confirmationMessage). |
idempotencyKey | string | no | Optional 24-hour dedupe key. May also be supplied as the Idempotency-Key header. |