/** * @example * { * description: "Record one continuous pass of a full interior detail, dash to trunk, on a customer vehicle.", * gross_reward_amount: 40, * title: "Record interior detailing passes" * } */ export interface CreateBountiesRequest { /** Number of submissions that can be accepted (winner slots). Defaults to 1. The escrowed total is `gross_reward_amount` times this limit and must be at least $5. */ accepted_submissions_limit?: number | null; /** How many winner slots one worker can win. Defaults to `1`. Wins plus proofs awaiting review never exceed this number, and a worker runs one attempt at a time. Cannot exceed `accepted_submissions_limit`. */ accepted_submissions_per_user_limit?: number | null; /** Account whose balance funds the bounty pool (`biz_` tag). Defaults to the caller's personal balance. Requires permission to move the account's funds. */ account_id?: string | null; /** Countries whose residents can work the bounty, as ISO 3166 alpha-2 codes. Empty means worldwide. */ allowed_country_codes?: string[] | null; /** What the poster wants the work to achieve, declared once here. */ business_goal_type?: CreateBountiesRequest.BusinessGoalType; /** Per-bounty overrides of the served capture contract. Only accepted when `business_goal_type` is `data_capture`; omitted fields keep the platform defaults, and the resulting contract is echoed back as `capture_spec` on the bounty. */ capture_spec?: CreateBountiesRequest.CaptureSpec; /** Full task instructions shown to workers. */ description: string; /** Experience to host the bounty in (`exp_` tag). Any visibility — public for an open bounty, private for an invited one. Required unless account_id is set, in which case the bounty anchors in that account's public forum. */ experience_id?: string | null; /** How often the schedule creates a new bounty. Each occurrence is a separate bounty. Defaults to `once`; only applies with `publish_at`. */ frequency?: CreateBountiesRequest.Frequency; /** Gross bounty-pool amount (USD) escrowed per accepted submission, in whole dollars. Platform fees and affiliate shares are paid from this amount. */ gross_reward_amount: number; /** ISO 8601 time to publish the bounty. When set, the bounty is created as a hidden draft and funded + published at this time instead of immediately. */ publish_at?: string | null; /** IANA timezone for recurring occurrences. Required when publish_at is set. */ publish_at_timezone?: string | null; /** Short name of the task shown to workers. */ title: string; } export declare namespace CreateBountiesRequest { /** What the poster wants the work to achieve, declared once here. */ const BusinessGoalType: { readonly Clipping: "clipping"; readonly PostEngagement: "post_engagement"; readonly OwnedAccountGrowth: "owned_account_growth"; readonly UgcContent: "ugc_content"; readonly LocalActivation: "local_activation"; readonly DataCapture: "data_capture"; readonly Other: "other"; }; type BusinessGoalType = (typeof BusinessGoalType)[keyof typeof BusinessGoalType]; /** * Per-bounty overrides of the served capture contract. Only accepted when `business_goal_type` is `data_capture`; omitted fields keep the platform defaults, and the resulting contract is echoed back as `capture_spec` on the bounty. */ interface CaptureSpec { /** Average bitrate the recorder encodes at, in megabits per second. Must sit within the served floor and ceiling. */ bitrate_target_mbps?: number | undefined; /** Whether the recorder also writes camera make and model into the video container's metadata. */ embed_camera_metadata?: boolean | undefined; /** Longest stall between consecutive frames a clip may contain before the client rejects it, in milliseconds. Unlike the recording fields this one can also be tuned after the bounty is created, since it bounds what is accepted rather than how footage is captured. */ frame_gap_tolerance_ms?: number | undefined; /** Minimum length of a single clip, in seconds. */ min_clip_duration_seconds?: number | undefined; /** Total verified footage a submission must accumulate across all its clips before it can be submitted, in seconds. Must be a whole number of hours between 1 and 12. Editable after create, until someone starts an attempt. */ min_total_verified_duration_seconds?: number | undefined; /** How the recorder configures video stabilization. `off` preserves raw motion for pose extraction. */ stabilization_mode?: CaptureSpec.StabilizationMode | undefined; } namespace CaptureSpec { /** How the recorder configures video stabilization. `off` preserves raw motion for pose extraction. */ const StabilizationMode: { readonly Off: "off"; readonly On: "on"; readonly Any: "any"; }; type StabilizationMode = (typeof StabilizationMode)[keyof typeof StabilizationMode]; } /** How often the schedule creates a new bounty. Each occurrence is a separate bounty. Defaults to `once`; only applies with `publish_at`. */ const Frequency: { readonly Once: "once"; readonly Hourly: "hourly"; readonly Daily: "daily"; readonly Weekly: "weekly"; readonly Monthly: "monthly"; }; type Frequency = (typeof Frequency)[keyof typeof Frequency]; }