@whop/cli 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -14140,7 +14140,7 @@ var native_spec_default = {
14140
14140
  termsOfService: "https://whop.com/tos-developer-api/",
14141
14141
  title: "Whop API",
14142
14142
  version: "1.0.0",
14143
- "x-api-version-date": "2026-09-25"
14143
+ "x-api-version-date": "2026-09-29"
14144
14144
  },
14145
14145
  servers: [
14146
14146
  {
@@ -31431,7 +31431,7 @@ var native_spec_default = {
31431
31431
  "warning_under_review",
31432
31432
  "won",
31433
31433
  "lost",
31434
- "closed",
31434
+ "prevented",
31435
31435
  "warning_closed"
31436
31436
  ],
31437
31437
  example: "needs_response",
@@ -31587,7 +31587,7 @@ var native_spec_default = {
31587
31587
  "warning_under_review",
31588
31588
  "won",
31589
31589
  "lost",
31590
- "closed",
31590
+ "prevented",
31591
31591
  "warning_closed"
31592
31592
  ],
31593
31593
  example: "needs_response",
@@ -31646,10 +31646,6 @@ var native_spec_default = {
31646
31646
  status: {
31647
31647
  description: "How many of the matching disputes are in each status. Every status is present, including those with a count of zero.",
31648
31648
  properties: {
31649
- closed: {
31650
- example: 0,
31651
- type: "integer"
31652
- },
31653
31649
  lost: {
31654
31650
  example: 0,
31655
31651
  type: "integer"
@@ -31658,6 +31654,10 @@ var native_spec_default = {
31658
31654
  example: 1,
31659
31655
  type: "integer"
31660
31656
  },
31657
+ prevented: {
31658
+ example: 0,
31659
+ type: "integer"
31660
+ },
31661
31661
  under_review: {
31662
31662
  example: 0,
31663
31663
  type: "integer"
@@ -31686,7 +31686,7 @@ var native_spec_default = {
31686
31686
  "warning_under_review",
31687
31687
  "won",
31688
31688
  "lost",
31689
- "closed",
31689
+ "prevented",
31690
31690
  "warning_closed"
31691
31691
  ],
31692
31692
  type: "object"
@@ -32807,7 +32807,7 @@ var native_spec_default = {
32807
32807
  },
32808
32808
  "/economic_intelligence": {
32809
32809
  get: {
32810
- description: "Lists an account's recommendations and generation requests, newest first. Without an account, signed-out visitors receive a business-setup template and eligible users receive their saved setup recommendation.",
32810
+ description: "Lists an account's recommendations and generation requests, newest first by default. Without an account, signed-out visitors receive a business-setup template and eligible users receive their saved setup recommendation. With `has_run` and no account, users receive the recommendations run on every account they can read.",
32811
32811
  operationId: "list",
32812
32812
  parameters: [
32813
32813
  {
@@ -32828,7 +32828,15 @@ var native_spec_default = {
32828
32828
  name: "status",
32829
32829
  required: false,
32830
32830
  schema: {
32831
- enum: ["queued", "pending", "ready", "executed", "superseded"],
32831
+ enum: [
32832
+ "queued",
32833
+ "pending",
32834
+ "ready",
32835
+ "running",
32836
+ "executed",
32837
+ "incomplete",
32838
+ "superseded"
32839
+ ],
32832
32840
  type: "string"
32833
32841
  }
32834
32842
  },
@@ -32842,6 +32850,37 @@ var native_spec_default = {
32842
32850
  type: "string"
32843
32851
  }
32844
32852
  },
32853
+ {
32854
+ description: "When true, only recommendations someone has started running, by any user. Without `account_id`, covers every account you can read that has Economic Intelligence. Can't be combined with `input`.",
32855
+ in: "query",
32856
+ name: "has_run",
32857
+ required: false,
32858
+ schema: {
32859
+ type: "boolean"
32860
+ }
32861
+ },
32862
+ {
32863
+ description: "Sort field.",
32864
+ in: "query",
32865
+ name: "order",
32866
+ required: false,
32867
+ schema: {
32868
+ default: "created_at",
32869
+ enum: ["created_at", "run_started_at"],
32870
+ type: "string"
32871
+ }
32872
+ },
32873
+ {
32874
+ description: "Sort direction.",
32875
+ in: "query",
32876
+ name: "direction",
32877
+ required: false,
32878
+ schema: {
32879
+ default: "desc",
32880
+ enum: ["asc", "desc"],
32881
+ type: "string"
32882
+ }
32883
+ },
32845
32884
  {
32846
32885
  description: "Number of results to return from the start of the range.",
32847
32886
  in: "query",
@@ -32966,7 +33005,7 @@ var native_spec_default = {
32966
33005
  },
32967
33006
  "/economic_intelligence/{id}": {
32968
33007
  patch: {
32969
- description: "Updates a recommendation status, records feedback, or both. Send `sentiment` to rate it. Include `status: superseded` to retire it and request replacements; a rating alone leaves its status unchanged.",
33008
+ description: "Updates a recommendation status, records feedback, or both. Send `sentiment` to rate it. Include `status: superseded` to retire a ready recommendation and request replacements; a rating alone leaves its status unchanged. To run a recommendation yourself, send `status: running` to start, then `status: executed` when it is carried out (with `result_id` naming what it changed, or `result_page` naming where it worked, so the result links there) or `status: incomplete` if the run ended without carrying it out. Whop AI reports its own runs the same way. Send `status: acknowledged` once an executed run's result has been seen.",
32970
33009
  operationId: "update",
32971
33010
  parameters: [
32972
33011
  {
@@ -33002,6 +33041,36 @@ var native_spec_default = {
33002
33041
  maxLength: 1e3,
33003
33042
  type: "string"
33004
33043
  },
33044
+ result_id: {
33045
+ description: "With `status: executed`, the ID of what the run produced or changed, and the recommendation's `result_url` becomes where to view it: an ad (`ad_`), ad group (`adgrp_`) or ad campaign (`adcamp_`), a website (`app_`), a product (`prod_`), a plan (`plan_`), a checkout link (`ch_`), a promo code (`promo_`), or an experience (`exp_`). Without `result_id` or `result_page`, `result_url` links to the resource the recommendation was about, when it names one. Send only one of `result_id`, `result_page` and `result_url`.",
33046
+ example: "prod_xxxxxxxxxxxxx",
33047
+ type: "string"
33048
+ },
33049
+ result_page: {
33050
+ description: "With `status: executed`, the page where the run's result can be seen when it is not one resource, such as the checkout links list or the store page. The recommendation's `result_url` becomes that page on the account's dashboard, or its store page for `store_page`.",
33051
+ enum: [
33052
+ "home",
33053
+ "products",
33054
+ "ads",
33055
+ "websites",
33056
+ "checkout_links",
33057
+ "tracking_links",
33058
+ "promo_codes",
33059
+ "payments",
33060
+ "customers",
33061
+ "affiliates",
33062
+ "analytics",
33063
+ "store_page"
33064
+ ],
33065
+ example: "promo_codes",
33066
+ type: "string"
33067
+ },
33068
+ result_url: {
33069
+ description: "With `status: executed`, where to view what was produced when it is outside Whop. An http or https URL. Prefer `result_id` for anything on Whop.",
33070
+ example: "https://atlas.whop.site/",
33071
+ maxLength: 2048,
33072
+ type: "string"
33073
+ },
33005
33074
  sentiment: {
33006
33075
  description: "A signed-in user can rate a recommendation as `positive` or `negative`. Can be sent alone or together with status.",
33007
33076
  enum: ["positive", "negative"],
@@ -33009,14 +33078,20 @@ var native_spec_default = {
33009
33078
  type: "string"
33010
33079
  },
33011
33080
  status: {
33012
- description: "Use `executed` to record approval, or `superseded` to reject the recommendation.",
33013
- enum: ["executed", "superseded"],
33081
+ description: "Use `running` to start a run of a ready recommendation, `executed` to record that it was carried out, `incomplete` to record that a running recommendation's run ended without carrying it out, `superseded` to reject a ready recommendation, or `acknowledged` to mark an executed run as seen; the recommendation stays `executed` and records `acknowledged_at`.",
33082
+ enum: [
33083
+ "running",
33084
+ "executed",
33085
+ "incomplete",
33086
+ "superseded",
33087
+ "acknowledged"
33088
+ ],
33014
33089
  example: "superseded",
33015
33090
  type: "string"
33016
33091
  },
33017
33092
  user_feedback: {
33018
33093
  description: "An optional explanation of the rating or rejection. Negative feedback informs replacement recommendations.",
33019
- example: "Wrong audience",
33094
+ example: " Focus on returning buyers ",
33020
33095
  maxLength: 2e3,
33021
33096
  type: "string"
33022
33097
  }
@@ -35743,7 +35818,7 @@ var native_spec_default = {
35743
35818
  type: "array"
35744
35819
  },
35745
35820
  filters: {
35746
- description: "Resource-specific filters. For native REST resources (`payouts`, `transfers`, `products`) these are the resource's own list query params; for dashboard tables they mirror the dashboard table filters.\n\n<details>\n<summary>Filters by resource (25)</summary>\n\n<details>\n<summary>ad_campaigns (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/ad_campaigns`.\n\n- `created_after` `string` \u2014 Only return campaigns created after this timestamp.\n- `created_before` `string` \u2014 Only return campaigns created before this timestamp.\n- `query` `string` \u2014 Filter campaigns by a title or ID substring.\n- `status` `string` \u2014 Only return campaigns with this status. One of `draft`, `active`, `paused`, `payment_failed`.\n\n</details>\n<details>\n<summary>ad_groups (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/ad_groups`.\n\n- `ad_campaign_id` `string` \u2014 Filter to ad groups in this campaign.\n- `ad_campaign_ids` `string[]` \u2014 Filter to ad groups in these campaigns (max 100). Repeat the parameter for each id (ad_campaign_ids=a&ad_campaign_ids=b).\n- `created_after` `string` \u2014 Only return ad groups created after this timestamp.\n- `created_before` `string` \u2014 Only return ad groups created before this timestamp.\n- `query` `string` \u2014 Filter ad groups by a title or ID substring.\n- `status` `string` \u2014 Filter to ad groups with this status. One of `active`, `paused`, `rejected`, `duplicating`.\n\n</details>\n<details>\n<summary>ads (8)</summary>\n\nMirrors the filtering query params of `GET /api/v1/ads`.\n\n- `ad_campaign_id` `string` \u2014 Only return ads in this ad campaign.\n- `ad_campaign_ids` `string[]` \u2014 Only return ads in these ad campaigns (max 100). Repeat the parameter for each id (ad_campaign_ids=a&ad_campaign_ids=b).\n- `ad_group_id` `string` \u2014 Only return ads in this ad group.\n- `ad_group_ids` `string[]` \u2014 Only return ads in these ad groups (max 100). Repeat the parameter for each id (ad_group_ids=a&ad_group_ids=b).\n- `created_after` `string` \u2014 Only return ads created after this timestamp.\n- `created_before` `string` \u2014 Only return ads created before this timestamp.\n- `query` `string` \u2014 Filter ads by a title or ID substring.\n- `status` `string` \u2014 Only return ads with this status. One of `active`, `paused`, `in_review`, `rejected`.\n\n</details>\n<details>\n<summary>apps (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/apps`.\n\n- `app_type` `string` \u2014 Filter apps by the type of end-user they are built for. Apps of type `website` are left out unless you ask for them by name. One of `b2b_app`, `b2c_app`, `company_app`, `component`, `website`.\n- `query` `string` \u2014 A search string matched against app names.\n- `recommended` `boolean` \u2014 Only return apps Whop recommends (or, with `false`, only those it does not), independently of verification status.\n- `verified` `boolean` \u2014 Only return apps whose Whop verification status matches this value. Omit this filter to include every verification status the caller can see.\n- `verified_apps_only` `boolean` \u2014 Legacy compatibility filter. Use `verified` for field equality. `true` returns verified apps; clients pinned before `2026-08-25-2` retain the earlier public website discovery behavior.\n- `view_type` `string` \u2014 Only return apps supporting this view type, such as `dashboard` or `hub`. One of `hub`, `discover`, `dash`, `dashboard`, `analytics`, `skills`, `openapi`.\n\n</details>\n<details>\n<summary>audiences (3)</summary>\n\nMirrors the filtering query params of `GET /api/v1/audiences`.\n\n- `audience_id` `string` \u2014 Audience ID, prefixed `adaud_`, used to filter the response to one audience.\n- `audience_type` `string` \u2014 Filter by custom or lookalike audiences. One of `custom`, `lookalike`.\n- `source_type` `string` \u2014 Filter by uploaded customer lists, Whop People filters, or social engagement. One of `csv_upload`, `people_filter`, `engagement`.\n\n</details>\n<details>\n<summary>bounties (8)</summary>\n\nMirrors the filtering query params of `GET /api/v1/bounties`.\n\n- `business_goal_type` `string` \u2014 Filter by the poster's declared goal. Bounties created before the goal taxonomy carry no goal and never match this filter. One of `clipping`, `post_engagement`, `owned_account_growth`, `ugc_content`, `local_activation`, `data_capture`, `other`.\n- `country` `string` \u2014 Only bounties workable from this country, as an ISO 3166-1 alpha-2 code. Bounties with no country targeting are workable worldwide and always match.\n- `created_after` `string` \u2014 Only bounties created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only bounties created before this ISO 8601 timestamp.\n- `experience_id` `string` \u2014 Only bounties posted to this forum experience, prefixed `exp_`. An unknown experience, or one outside the caller's scope, matches nothing.\n- `query` `string` \u2014 Substring match on the bounty title or ID.\n- `status` `string` \u2014 Filter by lifecycle state. One of `scheduled`, `open`, `closed`, `completed`, `canceled`.\n- `user_id` `string` \u2014 List the bounties this user participated in (`user_` tag). Must be the authenticated user.\n\n</details>\n<details>\n<summary>bounty_submissions (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/bounty_submissions`.\n\n- `bounty_id` `string` \u2014 Only submissions on this bounty (`bnty_` tag).\n- `created_after` `string` \u2014 Only submissions created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only submissions created before this ISO 8601 timestamp.\n- `status` `string` \u2014 Filter by lifecycle state. One of `in_progress`, `submitted`, `approved`, `denied`.\n\n</details>\n<details>\n<summary>card_transactions (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/card_transactions`.\n\n- `card_id` `string[]` \u2014 Return only transactions charged to these cards, each prefixed `icrd_`.\n- `cardholder_id` `string[]` \u2014 Return only transactions on cards assigned to these users, each prefixed `user_`.\n- `created_after` `string` \u2014 Return only transactions authorized at or after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Return only transactions authorized at or before this ISO 8601 timestamp.\n- `status` `string` \u2014 Return only transactions with this status. One of `pending`, `completed`, `reversed`, `declined`.\n- `transaction_ids` `string[]` \u2014 Return only these card transactions, each prefixed `citx_`. Repeat the parameter, or pass one comma-separated value.\n\n</details>\n<details>\n<summary>checkout_configurations (3)</summary>\n\nMirrors the filtering query params of `GET /api/v1/checkout_configurations`.\n\n- `created_after` `string` \u2014 Only return checkout configurations created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only return checkout configurations created before this ISO 8601 timestamp.\n- `plan_id` `string` \u2014 Only return checkout configurations for this variant ID, prefixed `plan_`.\n\n</details>\n<details>\n<summary>disputes (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/disputes`.\n\n- `created_after` `string` \u2014 Only disputes opened after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only disputes opened before this ISO 8601 timestamp.\n- `currency` `string` \u2014 Only disputes in this three-letter ISO currency.\n- `status` `string[]` \u2014 Only disputes in these statuses. Repeat the parameter to pass several \u2014 one paginated list covers all of them. Inquiries match only the `warning_` statuses. A `needs_response` dispute whose evidence deadline has passed reports and filters as `under_review` instead.\n\n</details>\n<details>\n<summary>events (14)</summary>\n\nMirrors the filtering query params of `GET /api/v1/events`.\n\n- `attribution_model` `string` \u2014 Attribution model for the source filter (defaults to last_touch). One of `last_touch`, `first_touch`.\n- `browser` `string` \u2014 Browser families to filter by, comma-separated (e.g. Chrome, Mobile Safari).\n- `city` `string` \u2014 Cities to filter by, comma-separated.\n- `country` `string` \u2014 Country codes to filter by, comma-separated.\n- `device` `string` \u2014 Device families to filter by, comma-separated (e.g. iPhone, Mac).\n- `event` `string` \u2014 Full event names to filter by, comma-separated (payment.completed, pixel.lead, pixel.page, pixel.custom:<name>) \u2014 the same vocabulary the events / people metrics use.\n- `from` `string` \u2014 Start of the time range as an ISO 8601 timestamp. Required when identifier is omitted.\n- `hostname` `string` \u2014 Page hostnames to filter by, comma-separated.\n- `identifier` `string` \u2014 Any hard identifier of the person: a person ID (prsn_*), user ID, email, phone number, or a tracking cookie value (wuid, anonymous ID, fbp/fbc/ttp/ga). Omit to list recent events for the account.\n- `os` `string` \u2014 Operating system families to filter by, comma-separated (e.g. iOS, Windows).\n- `page` `string` \u2014 Page paths to filter by, comma-separated.\n- `source` `string` \u2014 Canonical source path, exact or with a trailing :* prefix (whop:<campaign>:*, ext:meta:*, referrer:<domain>, direct, unknown). Selects conversions credited to this source.\n- `to` `string` \u2014 End of the time range as an ISO 8601 timestamp. Required when identifier is omitted; otherwise defaults to now.\n- `utm_source` `string` \u2014 utm_source values to filter by, comma-separated.\n\n</details>\n<details>\n<summary>financial-activity (12)</summary>\n\nMirrors the filtering query params of `GET /api/v1/financial_activity`.\n\n- `activity_id` `string` \u2014 Optional ledger activity ID (for example `line_3`). Returns at most that one activity.\n- `available_after` `string` \u2014 Only include balance credits and debits available on or after this `YYYY-MM-DD` date (UTC), distinct from posted_at. Requires currency.\n- `available_before` `string` \u2014 Only include balance credits and debits available on or before this `YYYY-MM-DD` date (UTC). Set equal to available_after for a single day. Requires currency.\n- `currency` `string` \u2014 Optional currency code filter, for example `usd`.\n- `exclude_internal_movements` `boolean` \u2014 Whether to exclude balance reservations and balanced movements between the account's own balances.\n- `include_owned_accounts` `boolean` \u2014 When true, aggregates the authenticated user's personal ledger with the businesses they own (owner role with balance read) into one feed. Requires user_id to be the authenticated user; cannot be combined with account_id or the settlement-date filters. Each returned row includes the owning `account`.\n- `include_resource` `boolean` \u2014 Whether to include the `resource` field in the response or not. Consider passing `false` if you need a fast response without as many rich details.\n- `line_types` `string[]` \u2014 Optional ledger line categories to include. Some categories (for example `onchain_deposit`, which covers inbound crypto deposits such as MoonPay onramps) are only returned when explicitly requested here.\n- `posted_after` `string` \u2014 Only include rows posted after this ISO 8601 timestamp.\n- `posted_before` `string` \u2014 Only include rows posted before this ISO 8601 timestamp.\n- `resource_id` `string` \u2014 Optional prefixed resource ID. Returns activity associated with that resource.\n- `user_id` `string` \u2014 The owning user ID (a user_ identifier). Provide this or account_id.\n\n</details>\n<details>\n<summary>members (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/members`.\n\n- `access_level` `string` \u2014 Filter by what the member can reach on the account. One of `no_access`, `admin`, `customer`.\n- `created_after` `string` \u2014 Only members who joined after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only members who joined before this ISO 8601 timestamp.\n- `query` `string` \u2014 Search members by name or username. An exact email address also matches when the credential holds the member:email:read scope.\n- `status` `string` \u2014 Filter by whether the member is still part of the account. One of `joined`, `left`.\n- `user_ids` `string[]` \u2014 Only return members whose users match these `user_` identifiers.\n\n</details>\n<details>\n<summary>memberships (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/memberships`.\n\n- `created_after` `string` \u2014 Only memberships created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only memberships created before this ISO 8601 timestamp.\n- `plan_id` `string` \u2014 Filter to memberships of this variant (`plan_` tag). Repeat as plan_ids[] for several.\n- `product_id` `string` \u2014 Filter to memberships of this product (`prod_` tag). Repeat as product_ids[] for several.\n- `status` `string` \u2014 Filter by billing state. `canceling` matches active memberships set to cancel at period end; `paused` matches memberships with payment collection paused. One of `active`, `trialing`, `past_due`, `completed`, `canceled`, `expired`, `canceling`, `paused`.\n- `user_id` `string` \u2014 Narrow to one user's memberships (`user_` tag, or `me` for the caller). A user outside the caller's visible set returns an empty list.\n\n</details>\n<details>\n<summary>payouts (7)</summary>\n\nMirrors the filtering query params of `GET /api/v1/payouts`.\n\n- `created_after` `string` \u2014 Only payouts created at or after this ISO 8601 time (inclusive).\n- `created_before` `string` \u2014 Only payouts created before this ISO 8601 time (exclusive).\n- `currency` `string` \u2014 Optional currency code filter, for example `usd`.\n- `payout_method_id` `string` \u2014 Filter to payouts sent to one saved payout method (a pytk_ identifier). An unknown id matches nothing.\n- `source` `string` \u2014 Filter by how the payout was created. Payouts created before source tracking or through internal tooling carry no source and never match. One of `api`, `dashboard`, `automatic`.\n- `status` `string` \u2014 Filter to payouts whose `status` reads this word, matching exactly what this version displays \u2014 `reversed` finds settled payouts the bank later returned. Requires Api-Version-Date 2026-08-21 or later. One of `requested`, `in_review`, `processing`, `completed`, `reversed`, `canceled`, `failed`, `denied`.\n- `user_id` `string` \u2014 The owning user ID (a user_ identifier). Provide this or account_id.\n\n</details>\n<details>\n<summary>people (39)</summary>\n\nMirrors the filtering query params of `GET /api/v1/people`.\n\n- `aov_gt` `number` \u2014 Select people whose lifetime aov is greater than this value. LTV and AOV are in USD.\n- `aov_gte` `number` \u2014 Select people whose lifetime aov is at least this value. LTV and AOV are in USD.\n- `aov_lt` `number` \u2014 Select people whose lifetime aov is less than this value. LTV and AOV are in USD.\n- `aov_lte` `number` \u2014 Select people whose lifetime aov is at most this value. LTV and AOV are in USD.\n- `attribution_model` `string` \u2014 Attribution model the source filter matches against (defaults to last_touch). One of `last_touch`, `first_touch`.\n- `audience_id` `string` \u2014 Only include people in this audience. An audience that keeps itself up to date resolves to the People filters that define it, so this always reflects who matches now; uploaded lists and point-in-time snapshots match their recorded members.\n- `contactable` `boolean` \u2014 true for people who have an email address or phone number \u2014 the ones an ad platform can match.\n- `country` `string` \u2014 Only include people with activity from this ISO 3166-1 alpha-2 country code.\n- `custom_event` `string` \u2014 Only include people who fired this custom pixel event.\n- `email` `string` \u2014 Only include the person linked to this email address.\n- `event_count_gt` `number` \u2014 Select people whose lifetime event_count is greater than this value. LTV and AOV are in USD.\n- `event_count_gte` `number` \u2014 Select people whose lifetime event_count is at least this value. LTV and AOV are in USD.\n- `event_count_lt` `number` \u2014 Select people whose lifetime event_count is less than this value. LTV and AOV are in USD.\n- `event_count_lte` `number` \u2014 Select people whose lifetime event_count is at most this value. LTV and AOV are in USD.\n- `event_from` `string` \u2014 The inclusive start of the matching activity window.\n- `event_name` `string[]` \u2014 Only include people who fired any of these events, e.g. payment.completed or page.checkout.view.\n- `event_to` `string` \u2014 The inclusive end of the matching activity window, for both stats drilldowns and saved audiences.\n- `event_within_days` `integer` \u2014 Match activity within a rolling number of days. Cannot be combined with event_from/event_to.\n- `first_seen_after` `string` \u2014 Only include people first seen at or after this ISO 8601 timestamp.\n- `first_seen_before` `string` \u2014 Only include people first seen before this ISO 8601 timestamp.\n- `first_seen_within_days` `integer` \u2014 Only include people first seen within this many days, as a rolling window.\n- `from` `string` \u2014 Inclusive activity-window start. Alias for event_from.\n- `has_purchased` `boolean` \u2014 true for customers only, false for people who have never purchased.\n- `last_seen_after` `string` \u2014 Only include people last seen at or after this ISO 8601 timestamp.\n- `last_seen_before` `string` \u2014 Only include people last seen before this ISO 8601 timestamp.\n- `last_seen_within_days` `integer` \u2014 Only include people last seen within this many days, as a rolling window.\n- `ltv_gt` `number` \u2014 Select people whose lifetime ltv is greater than this value. LTV and AOV are in USD.\n- `ltv_gte` `number` \u2014 Select people whose lifetime ltv is at least this value. LTV and AOV are in USD.\n- `ltv_lt` `number` \u2014 Select people whose lifetime ltv is less than this value. LTV and AOV are in USD.\n- `ltv_lte` `number` \u2014 Select people whose lifetime ltv is at most this value. LTV and AOV are in USD.\n- `phone` `string` \u2014 Only include the person linked to this phone number.\n- `purchase_count_gt` `number` \u2014 Select people whose lifetime purchase_count is greater than this value. LTV and AOV are in USD.\n- `purchase_count_gte` `number` \u2014 Select people whose lifetime purchase_count is at least this value. LTV and AOV are in USD.\n- `purchase_count_lt` `number` \u2014 Select people whose lifetime purchase_count is less than this value. LTV and AOV are in USD.\n- `purchase_count_lte` `number` \u2014 Select people whose lifetime purchase_count is at most this value. LTV and AOV are in USD.\n- `query` `string` \u2014 Search people by name, email, phone, or whop user ID (case-insensitive substring match).\n- `source` `string[]` \u2014 Only include people acquired from any of these sources \u2014 canonical paths (whop:<campaign>:<group>:<ad>, ext:<platform>:..., referrer:<domain>, direct, other), exact or with a trailing :* prefix. The same vocabulary the events / people metrics use.\n- `to` `string` \u2014 Inclusive activity-window end. Alias for event_to.\n- `user_id` `string` \u2014 Only include the person linked to this whop user ID.\n\n</details>\n<details>\n<summary>plans (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/plans`.\n\n- `created_after` `string`\n- `created_before` `string`\n- `plan_types` `string[]`\n- `product_ids` `string[]`\n- `release_methods` `string[]`\n- `visibilities` `string[]`\n\n</details>\n<details>\n<summary>products (10)</summary>\n\nMirrors the filtering query params of `GET /api/v1/products`.\n\n- `access_pass_types` `string[]` \u2014 Filter to only products matching these types.\n- `created_after` `string` \u2014 Only return products created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only return products created before this ISO 8601 timestamp.\n- `labels` `string[]` \u2014 Filter to only products carrying all of these labels. Labels are matched lowercased.\n- `marketplace_category_route` `string` \u2014 Only return marketplace products assigned to this category route, such as `trading`.\n- `plan_types` `string[]` \u2014 Filter to products with a buyable variant of these billing models, such as `one_time` or `renewal`.\n- `price_maximum` `number` \u2014 Only return products whose advertised buyable variant has a displayed price of at most this amount. Recurring variants use renewal price.\n- `price_minimum` `number` \u2014 Only return products whose advertised buyable variant has a displayed price of at least this amount. Recurring variants use renewal price.\n- `query` `string` \u2014 Ranked search against product title and headline. Omit to browse by recency.\n- `visibilities` `string[]` \u2014 Filter to only products matching these visibility states. Ignored on the public marketplace list, which only returns visible products.\n\n</details>\n<details>\n<summary>promo_codes (5)</summary>\n\nMirrors the filtering query params of `GET /api/v1/promo_codes`.\n\n- `created_after` `string` \u2014 Only promo codes created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only promo codes created before this ISO 8601 timestamp.\n- `plan_ids` `string[]` \u2014 Only promo codes scoped to these variant IDs.\n- `product_ids` `string[]` \u2014 Only promo codes scoped to these product IDs.\n- `status` `string` \u2014 Promo-code status. `expired` groups inactive and archived codes. One of `active`, `inactive`, `archived`, `expired`.\n\n</details>\n<details>\n<summary>resolution_center_cases (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/resolution_center_cases`.\n\n- `created_after` `string` \u2014 Only cases created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only cases created before this ISO 8601 timestamp.\n- `outcome` `string[]` \u2014 Only closed cases that ended these ways. Repeat the parameter to pass several.\n- `reason` `string[]` \u2014 Only cases opened for these reasons. Repeat the parameter to pass several.\n- `status` `string[]` \u2014 Only cases in these statuses. Repeat the parameter to pass several \u2014 one paginated list covers all of them.\n- `user_id` `string` \u2014 Only cases opened by this customer \u2014 a `user_` tag, or `me` for the calling user. It narrows what you can already read, so `me` lists the cases you opened without the ones on accounts you are a team member of.\n\n</details>\n<details>\n<summary>shipments (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/shipments`.\n\n- `created_after` `string` \u2014 Return shipments created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Return shipments created before this ISO 8601 timestamp.\n- `payment_id` `string[]` \u2014 Only shipments fulfilling these payments, each prefixed `pay_`. Repeat the parameter to pass several, up to 100 per request \u2014 one paginated list covers all of them.\n- `status` `string` \u2014 Filter to shipments with this delivery status. One of `unknown`, `pre_transit`, `in_transit`, `out_for_delivery`, `delivered`, `available_for_pickup`, `return_to_sender`, `failure`, `cancelled`, `error`.\n\n</details>\n<details>\n<summary>social_accounts (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/social_accounts`.\n\n- `platform` `string` \u2014 Only return social accounts for the platform that is specified. One of `x`, `instagram`, `youtube`, `tiktok`, `facebook`, `discord`, `telegram`, `linkedin`, `snapchat`.\n- `scopes` `string[]` \u2014 Only return social accounts that have these scopes.\n- `user_id` `string` \u2014 The User that the social accounts are connected to. Provide either this or account_id.\n- `verified` `boolean` \u2014 Only return social accounts that are verified on the platform.\n\n</details>\n<details>\n<summary>team_members (5)</summary>\n\nMirrors the filtering query params of `GET /api/v1/team_members`.\n\n- `created_after` `string` \u2014 Only return members added after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only return members added before this ISO 8601 timestamp.\n- `role` `string` \u2014 Only return members with this role. `custom` matches members on a dashboard-managed custom role. One of `owner`, `admin`, `partner`, `sales_manager`, `moderator`, `advertiser`, `app_manager`, `support`, `manager`, `workforce`, `custom`.\n- `status` `string` \u2014 Only return members with this status: `joined` (accepted members) or `pending` (pending invites). Both are returned by default. One of `joined`, `pending`.\n- `user_id` `string` \u2014 Only return the membership for this user ID, prefixed `user_`.\n\n</details>\n<details>\n<summary>transfers (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/transfers`.\n\n- `created_after` `string` \u2014 Only transfers created strictly after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only transfers created strictly before this ISO 8601 timestamp.\n- `destination_id` `string` \u2014 Filter to transfers received by this account. Provide this or origin_id.\n- `origin_id` `string` \u2014 Filter to transfers sent from this account. Provide this or destination_id.\n\n</details>\n<details>\n<summary>webhooks (3)</summary>\n\nMirrors the filtering query params of `GET /api/v1/webhooks`.\n\n- `app_id` `string` \u2014 Only return webhooks attached to this app. Omit to list the account's own webhooks.\n- `has_failures` `boolean` \u2014 Only return webhooks whose endpoint is currently failing \u2014 every delivery since the current failure streak began has been rejected. Clears as soon as a delivery succeeds.\n- `include_app_webhooks` `boolean` \u2014 Also return webhooks attached to the account's apps, not just the account's own. Cannot be combined with `app_id`.\n\n</details>\n</details>",
35821
+ description: "Resource-specific filters. For native REST resources (`payouts`, `transfers`, `products`) these are the resource's own list query params; for dashboard tables they mirror the dashboard table filters.\n\n<details>\n<summary>Filters by resource (25)</summary>\n\n<details>\n<summary>ad_campaigns (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/ad_campaigns`.\n\n- `created_after` `string` \u2014 Only return campaigns created after this timestamp.\n- `created_before` `string` \u2014 Only return campaigns created before this timestamp.\n- `query` `string` \u2014 Filter campaigns by a title or ID substring.\n- `status` `string` \u2014 Only return campaigns with this status. One of `draft`, `active`, `paused`, `payment_failed`.\n\n</details>\n<details>\n<summary>ad_groups (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/ad_groups`.\n\n- `ad_campaign_id` `string` \u2014 Filter to ad groups in this campaign.\n- `ad_campaign_ids` `string[]` \u2014 Filter to ad groups in these campaigns (max 100). Repeat the parameter for each id (ad_campaign_ids=a&ad_campaign_ids=b).\n- `created_after` `string` \u2014 Only return ad groups created after this timestamp.\n- `created_before` `string` \u2014 Only return ad groups created before this timestamp.\n- `query` `string` \u2014 Filter ad groups by a title or ID substring.\n- `status` `string` \u2014 Filter to ad groups with this status. One of `active`, `paused`, `rejected`, `duplicating`.\n\n</details>\n<details>\n<summary>ads (8)</summary>\n\nMirrors the filtering query params of `GET /api/v1/ads`.\n\n- `ad_campaign_id` `string` \u2014 Only return ads in this ad campaign.\n- `ad_campaign_ids` `string[]` \u2014 Only return ads in these ad campaigns (max 100). Repeat the parameter for each id (ad_campaign_ids=a&ad_campaign_ids=b).\n- `ad_group_id` `string` \u2014 Only return ads in this ad group.\n- `ad_group_ids` `string[]` \u2014 Only return ads in these ad groups (max 100). Repeat the parameter for each id (ad_group_ids=a&ad_group_ids=b).\n- `created_after` `string` \u2014 Only return ads created after this timestamp.\n- `created_before` `string` \u2014 Only return ads created before this timestamp.\n- `query` `string` \u2014 Filter ads by a title or ID substring.\n- `status` `string` \u2014 Only return ads with this status. One of `active`, `paused`, `in_review`, `rejected`.\n\n</details>\n<details>\n<summary>apps (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/apps`.\n\n- `app_type` `string` \u2014 Filter apps by the type of end-user they are built for. Apps of type `website` are left out unless you ask for them by name. One of `b2b_app`, `b2c_app`, `company_app`, `component`, `website`.\n- `query` `string` \u2014 A search string matched against app names.\n- `recommended` `boolean` \u2014 Only return apps Whop recommends (or, with `false`, only those it does not), independently of verification status.\n- `verified` `boolean` \u2014 Only return apps whose Whop verification status matches this value. Omit this filter to include every verification status the caller can see.\n- `verified_apps_only` `boolean` \u2014 Legacy compatibility filter. Use `verified` for field equality. `true` returns verified apps; clients pinned before `2026-08-25-2` retain the earlier public website discovery behavior.\n- `view_type` `string` \u2014 Only return apps supporting this view type, such as `dashboard` or `hub`. One of `hub`, `discover`, `dash`, `dashboard`, `analytics`, `skills`, `openapi`.\n\n</details>\n<details>\n<summary>audiences (3)</summary>\n\nMirrors the filtering query params of `GET /api/v1/audiences`.\n\n- `audience_id` `string` \u2014 Audience ID, prefixed `adaud_`, used to filter the response to one audience.\n- `audience_type` `string` \u2014 Filter by custom or lookalike audiences. One of `custom`, `lookalike`.\n- `source_type` `string` \u2014 Filter by uploaded customer lists, Whop People filters, or social engagement. One of `csv_upload`, `people_filter`, `engagement`.\n\n</details>\n<details>\n<summary>bounties (8)</summary>\n\nMirrors the filtering query params of `GET /api/v1/bounties`.\n\n- `business_goal_type` `string` \u2014 Filter by the poster's declared goal. Bounties created before the goal taxonomy carry no goal and never match this filter. One of `clipping`, `post_engagement`, `owned_account_growth`, `ugc_content`, `local_activation`, `data_capture`, `other`.\n- `country` `string` \u2014 Only bounties workable from this country, as an ISO 3166-1 alpha-2 code. Bounties with no country targeting are workable worldwide and always match.\n- `created_after` `string` \u2014 Only bounties created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only bounties created before this ISO 8601 timestamp.\n- `experience_id` `string` \u2014 Only bounties posted to this forum experience, prefixed `exp_`. An unknown experience, or one outside the caller's scope, matches nothing.\n- `query` `string` \u2014 Substring match on the bounty title or ID.\n- `status` `string` \u2014 Filter by lifecycle state. One of `scheduled`, `open`, `closed`, `completed`, `canceled`.\n- `user_id` `string` \u2014 List the bounties this user participated in (`user_` tag). Must be the authenticated user.\n\n</details>\n<details>\n<summary>bounty_submissions (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/bounty_submissions`.\n\n- `bounty_id` `string` \u2014 Only submissions on this bounty (`bnty_` tag).\n- `created_after` `string` \u2014 Only submissions created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only submissions created before this ISO 8601 timestamp.\n- `status` `string` \u2014 Filter by lifecycle state. One of `in_progress`, `submitted`, `approved`, `denied`.\n\n</details>\n<details>\n<summary>card_transactions (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/card_transactions`.\n\n- `card_id` `string[]` \u2014 Return only transactions charged to these cards, each prefixed `icrd_`.\n- `cardholder_id` `string[]` \u2014 Return only transactions on cards assigned to these users, each prefixed `user_`.\n- `created_after` `string` \u2014 Return only transactions authorized at or after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Return only transactions authorized at or before this ISO 8601 timestamp.\n- `status` `string` \u2014 Return only transactions with this status. One of `pending`, `completed`, `reversed`, `declined`.\n- `transaction_ids` `string[]` \u2014 Return only these card transactions, each prefixed `citx_`. Repeat the parameter, or pass one comma-separated value.\n\n</details>\n<details>\n<summary>checkout_configurations (3)</summary>\n\nMirrors the filtering query params of `GET /api/v1/checkout_configurations`.\n\n- `created_after` `string` \u2014 Only return checkout configurations created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only return checkout configurations created before this ISO 8601 timestamp.\n- `plan_id` `string` \u2014 Only return checkout configurations for this variant ID, prefixed `plan_`.\n\n</details>\n<details>\n<summary>disputes (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/disputes`.\n\n- `created_after` `string` \u2014 Only disputes opened after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only disputes opened before this ISO 8601 timestamp.\n- `currency` `string` \u2014 Only disputes in this three-letter ISO currency.\n- `status` `string[]` \u2014 Only disputes in these statuses. Repeat the parameter to pass several \u2014 one paginated list covers all of them. Inquiries match only the `warning_` statuses. A `needs_response` dispute whose evidence deadline has passed reports and filters as `under_review` instead.\n\n</details>\n<details>\n<summary>events (14)</summary>\n\nMirrors the filtering query params of `GET /api/v1/events`.\n\n- `attribution_model` `string` \u2014 Attribution model for the source filter (defaults to last_touch). One of `last_touch`, `first_touch`.\n- `browser` `string` \u2014 Browser families to filter by, comma-separated (e.g. Chrome, Mobile Safari).\n- `city` `string` \u2014 Cities to filter by, comma-separated.\n- `country` `string` \u2014 Country codes to filter by, comma-separated.\n- `device` `string` \u2014 Device families to filter by, comma-separated (e.g. iPhone, Mac).\n- `event` `string` \u2014 Full event names to filter by, comma-separated (payment.completed, pixel.lead, pixel.page, pixel.custom:<name>) \u2014 the same vocabulary the events / people metrics use.\n- `from` `string` \u2014 Start of the time range as an ISO 8601 timestamp. Required when identifier is omitted.\n- `hostname` `string` \u2014 Page hostnames to filter by, comma-separated.\n- `identifier` `string` \u2014 Any hard identifier of the person: a person ID (prsn_*), user ID, email, phone number, or a tracking cookie value (wuid, anonymous ID, fbp/fbc/ttp/ga). Omit to list recent events for the account.\n- `os` `string` \u2014 Operating system families to filter by, comma-separated (e.g. iOS, Windows).\n- `page` `string` \u2014 Page paths to filter by, comma-separated.\n- `source` `string` \u2014 Canonical source path, exact or with a trailing :* prefix (whop:<campaign>:*, ext:meta:*, referrer:<domain>, direct, unknown). Selects conversions credited to this source.\n- `to` `string` \u2014 End of the time range as an ISO 8601 timestamp. Required when identifier is omitted; otherwise defaults to now.\n- `utm_source` `string` \u2014 utm_source values to filter by, comma-separated.\n\n</details>\n<details>\n<summary>financial-activity (14)</summary>\n\nMirrors the filtering query params of `GET /api/v1/financial_activity`.\n\n- `activity_id` `string` \u2014 Optional ledger activity ID (for example `line_3`). Returns at most that one activity.\n- `available_after` `string` \u2014 Only include balance credits and debits available on or after this `YYYY-MM-DD` date (UTC), distinct from posted_at. Requires currency.\n- `available_before` `string` \u2014 Only include balance credits and debits available on or before this `YYYY-MM-DD` date (UTC). Set equal to available_after for a single day. Requires currency.\n- `balance_type` `string` \u2014 Which balance the activity changes. `total` includes available, pending, and reserved funds. `available` includes only movements into or out of available funds, including reservations, releases, and fees. Movements within the selected balance are omitted. Omit to preserve the existing activity feed. Requires account_id or user_id; cannot be combined with available_after or available_before. One of `total`, `available`.\n- `currency` `string` \u2014 Optional currency code filter, for example `usd`.\n- `exclude_internal_movements` `boolean` \u2014 Whether to exclude balance reservations and balanced movements between the account's own balances.\n- `include_owned_accounts` `boolean` \u2014 When true, aggregates the authenticated user's personal ledger with the businesses they own (owner role with balance read) into one feed. Requires user_id to be the authenticated user; cannot be combined with account_id or the settlement-date filters. Each returned row includes the owning `account`.\n- `include_resource` `boolean` \u2014 Whether to include the `resource` field in the response or not. Consider passing `false` if you need a fast response without as many rich details.\n- `line_types` `string[]` \u2014 Optional ledger line categories to include. Some categories (for example `onchain_deposit`, which covers inbound crypto deposits such as MoonPay onramps) are only returned when explicitly requested here.\n- `posted_after` `string` \u2014 Only include rows posted after this ISO 8601 timestamp.\n- `posted_before` `string` \u2014 Only include rows posted before this ISO 8601 timestamp.\n- `resource_id` `string` \u2014 Optional prefixed resource ID. Returns activity associated with that resource.\n- `user_id` `string` \u2014 The owning user ID (a user_ identifier). Provide this or account_id.\n- `withdrawal_id` `string` \u2014 Withdrawal ID (wdrl_). With balance_type=available, selects the same period as its statement, after the previous withdrawal and through this withdrawal, excluding this withdrawal and its fee. Requires a single account. Overrides currency and posted-date filters.\n\n</details>\n<details>\n<summary>members (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/members`.\n\n- `access_level` `string` \u2014 Filter by what the member can reach on the account. One of `no_access`, `admin`, `customer`.\n- `created_after` `string` \u2014 Only members who joined after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only members who joined before this ISO 8601 timestamp.\n- `query` `string` \u2014 Search members by name or username. An exact email address also matches when the credential holds the member:email:read scope.\n- `status` `string` \u2014 Filter by whether the member is still part of the account. One of `joined`, `left`.\n- `user_ids` `string[]` \u2014 Only return members whose users match these `user_` identifiers.\n\n</details>\n<details>\n<summary>memberships (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/memberships`.\n\n- `created_after` `string` \u2014 Only memberships created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only memberships created before this ISO 8601 timestamp.\n- `plan_id` `string` \u2014 Filter to memberships of this variant (`plan_` tag). Repeat as plan_ids[] for several.\n- `product_id` `string` \u2014 Filter to memberships of this product (`prod_` tag). Repeat as product_ids[] for several.\n- `status` `string` \u2014 Filter by billing state. `canceling` matches active memberships set to cancel at period end; `paused` matches memberships with payment collection paused. One of `active`, `trialing`, `past_due`, `completed`, `canceled`, `expired`, `canceling`, `paused`.\n- `user_id` `string` \u2014 Narrow to one user's memberships (`user_` tag, or `me` for the caller). A user outside the caller's visible set returns an empty list.\n\n</details>\n<details>\n<summary>payouts (7)</summary>\n\nMirrors the filtering query params of `GET /api/v1/payouts`.\n\n- `created_after` `string` \u2014 Only payouts created at or after this ISO 8601 time (inclusive).\n- `created_before` `string` \u2014 Only payouts created before this ISO 8601 time (exclusive).\n- `currency` `string` \u2014 Optional currency code filter, for example `usd`.\n- `payout_method_id` `string` \u2014 Filter to payouts sent to one saved payout method (a pytk_ identifier). An unknown id matches nothing.\n- `source` `string` \u2014 Filter by how the payout was created. Payouts created before source tracking or through internal tooling carry no source and never match. One of `api`, `dashboard`, `automatic`.\n- `status` `string` \u2014 Filter to payouts whose `status` reads this word, matching exactly what this version displays \u2014 `reversed` finds settled payouts the bank later returned. Requires Api-Version-Date 2026-08-21 or later. One of `requested`, `in_review`, `processing`, `completed`, `reversed`, `canceled`, `failed`, `denied`.\n- `user_id` `string` \u2014 The owning user ID (a user_ identifier). Provide this or account_id.\n\n</details>\n<details>\n<summary>people (39)</summary>\n\nMirrors the filtering query params of `GET /api/v1/people`.\n\n- `aov_gt` `number` \u2014 Select people whose lifetime aov is greater than this value. LTV and AOV are in USD.\n- `aov_gte` `number` \u2014 Select people whose lifetime aov is at least this value. LTV and AOV are in USD.\n- `aov_lt` `number` \u2014 Select people whose lifetime aov is less than this value. LTV and AOV are in USD.\n- `aov_lte` `number` \u2014 Select people whose lifetime aov is at most this value. LTV and AOV are in USD.\n- `attribution_model` `string` \u2014 Attribution model the source filter matches against (defaults to last_touch). One of `last_touch`, `first_touch`.\n- `audience_id` `string` \u2014 Only include people in this audience. An audience that keeps itself up to date resolves to the People filters that define it, so this always reflects who matches now; uploaded lists and point-in-time snapshots match their recorded members.\n- `contactable` `boolean` \u2014 true for people who have an email address or phone number \u2014 the ones an ad platform can match.\n- `country` `string` \u2014 Only include people with activity from this ISO 3166-1 alpha-2 country code.\n- `custom_event` `string` \u2014 Only include people who fired this custom pixel event.\n- `email` `string` \u2014 Only include the person linked to this email address.\n- `event_count_gt` `number` \u2014 Select people whose lifetime event_count is greater than this value. LTV and AOV are in USD.\n- `event_count_gte` `number` \u2014 Select people whose lifetime event_count is at least this value. LTV and AOV are in USD.\n- `event_count_lt` `number` \u2014 Select people whose lifetime event_count is less than this value. LTV and AOV are in USD.\n- `event_count_lte` `number` \u2014 Select people whose lifetime event_count is at most this value. LTV and AOV are in USD.\n- `event_from` `string` \u2014 The inclusive start of the matching activity window.\n- `event_name` `string[]` \u2014 Only include people who fired any of these events, e.g. payment.completed or page.checkout.view.\n- `event_to` `string` \u2014 The inclusive end of the matching activity window, for both stats drilldowns and saved audiences.\n- `event_within_days` `integer` \u2014 Match activity within a rolling number of days. Cannot be combined with event_from/event_to.\n- `first_seen_after` `string` \u2014 Only include people first seen at or after this ISO 8601 timestamp.\n- `first_seen_before` `string` \u2014 Only include people first seen before this ISO 8601 timestamp.\n- `first_seen_within_days` `integer` \u2014 Only include people first seen within this many days, as a rolling window.\n- `from` `string` \u2014 Inclusive activity-window start. Alias for event_from.\n- `has_purchased` `boolean` \u2014 true for customers only, false for people who have never purchased.\n- `last_seen_after` `string` \u2014 Only include people last seen at or after this ISO 8601 timestamp.\n- `last_seen_before` `string` \u2014 Only include people last seen before this ISO 8601 timestamp.\n- `last_seen_within_days` `integer` \u2014 Only include people last seen within this many days, as a rolling window.\n- `ltv_gt` `number` \u2014 Select people whose lifetime ltv is greater than this value. LTV and AOV are in USD.\n- `ltv_gte` `number` \u2014 Select people whose lifetime ltv is at least this value. LTV and AOV are in USD.\n- `ltv_lt` `number` \u2014 Select people whose lifetime ltv is less than this value. LTV and AOV are in USD.\n- `ltv_lte` `number` \u2014 Select people whose lifetime ltv is at most this value. LTV and AOV are in USD.\n- `phone` `string` \u2014 Only include the person linked to this phone number.\n- `purchase_count_gt` `number` \u2014 Select people whose lifetime purchase_count is greater than this value. LTV and AOV are in USD.\n- `purchase_count_gte` `number` \u2014 Select people whose lifetime purchase_count is at least this value. LTV and AOV are in USD.\n- `purchase_count_lt` `number` \u2014 Select people whose lifetime purchase_count is less than this value. LTV and AOV are in USD.\n- `purchase_count_lte` `number` \u2014 Select people whose lifetime purchase_count is at most this value. LTV and AOV are in USD.\n- `query` `string` \u2014 Search people by name, email, phone, or whop user ID (case-insensitive substring match).\n- `source` `string[]` \u2014 Only include people acquired from any of these sources \u2014 canonical paths (whop:<campaign>:<group>:<ad>, ext:<platform>:..., referrer:<domain>, direct, other), exact or with a trailing :* prefix. The same vocabulary the events / people metrics use.\n- `to` `string` \u2014 Inclusive activity-window end. Alias for event_to.\n- `user_id` `string` \u2014 Only include the person linked to this whop user ID.\n\n</details>\n<details>\n<summary>plans (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/plans`.\n\n- `created_after` `string`\n- `created_before` `string`\n- `plan_types` `string[]`\n- `product_ids` `string[]`\n- `release_methods` `string[]`\n- `visibilities` `string[]`\n\n</details>\n<details>\n<summary>products (10)</summary>\n\nMirrors the filtering query params of `GET /api/v1/products`.\n\n- `access_pass_types` `string[]` \u2014 Filter to only products matching these types.\n- `created_after` `string` \u2014 Only return products created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only return products created before this ISO 8601 timestamp.\n- `labels` `string[]` \u2014 Filter to only products carrying all of these labels. Labels are matched lowercased.\n- `marketplace_category_route` `string` \u2014 Only return marketplace products assigned to this category route, such as `trading`.\n- `plan_types` `string[]` \u2014 Filter to products with a buyable variant of these billing models, such as `one_time` or `renewal`.\n- `price_maximum` `number` \u2014 Only return products whose advertised buyable variant has a displayed price of at most this amount. Recurring variants use renewal price.\n- `price_minimum` `number` \u2014 Only return products whose advertised buyable variant has a displayed price of at least this amount. Recurring variants use renewal price.\n- `query` `string` \u2014 Ranked search against product title and headline. Omit to browse by recency.\n- `visibilities` `string[]` \u2014 Filter to only products matching these visibility states. Ignored on the public marketplace list, which only returns visible products.\n\n</details>\n<details>\n<summary>promo_codes (5)</summary>\n\nMirrors the filtering query params of `GET /api/v1/promo_codes`.\n\n- `created_after` `string` \u2014 Only promo codes created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only promo codes created before this ISO 8601 timestamp.\n- `plan_ids` `string[]` \u2014 Only promo codes scoped to these variant IDs.\n- `product_ids` `string[]` \u2014 Only promo codes scoped to these product IDs.\n- `status` `string` \u2014 Promo-code status. `expired` groups inactive and archived codes. One of `active`, `inactive`, `archived`, `expired`.\n\n</details>\n<details>\n<summary>resolution_center_cases (6)</summary>\n\nMirrors the filtering query params of `GET /api/v1/resolution_center_cases`.\n\n- `created_after` `string` \u2014 Only cases created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only cases created before this ISO 8601 timestamp.\n- `outcome` `string[]` \u2014 Only closed cases that ended these ways. Repeat the parameter to pass several.\n- `reason` `string[]` \u2014 Only cases opened for these reasons. Repeat the parameter to pass several.\n- `status` `string[]` \u2014 Only cases in these statuses. Repeat the parameter to pass several \u2014 one paginated list covers all of them.\n- `user_id` `string` \u2014 Only cases opened by this customer \u2014 a `user_` tag, or `me` for the calling user. It narrows what you can already read, so `me` lists the cases you opened without the ones on accounts you are a team member of.\n\n</details>\n<details>\n<summary>shipments (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/shipments`.\n\n- `created_after` `string` \u2014 Return shipments created after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Return shipments created before this ISO 8601 timestamp.\n- `payment_id` `string[]` \u2014 Only shipments fulfilling these payments, each prefixed `pay_`. Repeat the parameter to pass several, up to 100 per request \u2014 one paginated list covers all of them.\n- `status` `string` \u2014 Filter to shipments with this delivery status. One of `unknown`, `pre_transit`, `in_transit`, `out_for_delivery`, `delivered`, `available_for_pickup`, `return_to_sender`, `failure`, `cancelled`, `error`.\n\n</details>\n<details>\n<summary>social_accounts (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/social_accounts`.\n\n- `platform` `string` \u2014 Only return social accounts for the platform that is specified. One of `x`, `instagram`, `youtube`, `tiktok`, `facebook`, `discord`, `telegram`, `linkedin`, `snapchat`.\n- `scopes` `string[]` \u2014 Only return social accounts that have these scopes.\n- `user_id` `string` \u2014 The User that the social accounts are connected to. Provide either this or account_id.\n- `verified` `boolean` \u2014 Only return social accounts that are verified on the platform.\n\n</details>\n<details>\n<summary>team_members (5)</summary>\n\nMirrors the filtering query params of `GET /api/v1/team_members`.\n\n- `created_after` `string` \u2014 Only return members added after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only return members added before this ISO 8601 timestamp.\n- `role` `string` \u2014 Only return members with this role. `custom` matches members on a dashboard-managed custom role. One of `owner`, `admin`, `partner`, `sales_manager`, `moderator`, `advertiser`, `app_manager`, `support`, `manager`, `workforce`, `custom`.\n- `status` `string` \u2014 Only return members with this status: `joined` (accepted members) or `pending` (pending invites). Both are returned by default. One of `joined`, `pending`.\n- `user_id` `string` \u2014 Only return the membership for this user ID, prefixed `user_`.\n\n</details>\n<details>\n<summary>transfers (4)</summary>\n\nMirrors the filtering query params of `GET /api/v1/transfers`.\n\n- `created_after` `string` \u2014 Only transfers created strictly after this ISO 8601 timestamp.\n- `created_before` `string` \u2014 Only transfers created strictly before this ISO 8601 timestamp.\n- `destination_id` `string` \u2014 Filter to transfers received by this account. Provide this or origin_id.\n- `origin_id` `string` \u2014 Filter to transfers sent from this account. Provide this or destination_id.\n\n</details>\n<details>\n<summary>webhooks (3)</summary>\n\nMirrors the filtering query params of `GET /api/v1/webhooks`.\n\n- `app_id` `string` \u2014 Only return webhooks attached to this app. Omit to list the account's own webhooks.\n- `has_failures` `boolean` \u2014 Only return webhooks whose endpoint is currently failing \u2014 every delivery since the current failure streak began has been rejected. Clears as soon as a delivery succeeds.\n- `include_app_webhooks` `boolean` \u2014 Also return webhooks attached to the account's apps, not just the account's own. Cannot be combined with `app_id`.\n\n</details>\n</details>",
35747
35822
  example: {
35748
35823
  include_resource: false,
35749
35824
  posted_after: "2026-01-01T12:00:00.000Z",
@@ -36721,6 +36796,25 @@ var native_spec_default = {
36721
36796
  type: "boolean"
36722
36797
  }
36723
36798
  },
36799
+ {
36800
+ description: "Which balance the activity changes. `total` includes available, pending, and reserved funds. `available` includes only movements into or out of available funds, including reservations, releases, and fees. Movements within the selected balance are omitted. Omit to preserve the existing activity feed. Requires account_id or user_id; cannot be combined with available_after or available_before.",
36801
+ in: "query",
36802
+ name: "balance_type",
36803
+ required: false,
36804
+ schema: {
36805
+ enum: ["total", "available"],
36806
+ type: "string"
36807
+ }
36808
+ },
36809
+ {
36810
+ description: "Withdrawal ID (wdrl_). With balance_type=available, selects the same period as its statement, after the previous withdrawal and through this withdrawal, excluding this withdrawal and its fee. Requires a single account. Overrides currency and posted-date filters.",
36811
+ in: "query",
36812
+ name: "withdrawal_id",
36813
+ required: false,
36814
+ schema: {
36815
+ type: "string"
36816
+ }
36817
+ },
36724
36818
  {
36725
36819
  description: "Optional currency code filter, for example `usd`.",
36726
36820
  in: "query",
@@ -38973,7 +39067,7 @@ var native_spec_default = {
38973
39067
  ]
38974
39068
  },
38975
39069
  patch: {
38976
- description: "Updates a membership: merge metadata key-value pairs, toggle `cancel_at_period_end` \u2014 `true` schedules the cancellation for the end of the current billing period, `false` reverses a pending one \u2014 or move future renewals to another of the customer's saved payment methods with `payment_method_id`.",
39070
+ description: "Updates a membership: merge metadata key-value pairs, toggle `cancel_at_period_end` \u2014 `true` schedules the cancellation for the end of the current billing period, `false` reverses a pending one \u2014 or move future renewals to another of the customer's saved payment methods with `payment_method_id`, or set `billing_period_days` to change renewal cadence for an active, trialing, or past-due membership billed automatically by Whop. The current period end moves to the current period start plus the requested number of days, and future renewals use the same cadence. Invoice, externally billed, and canceling memberships are not supported.",
38977
39071
  operationId: "update",
38978
39072
  parameters: [
38979
39073
  {
@@ -38992,8 +39086,43 @@ var native_spec_default = {
38992
39086
  requestBody: {
38993
39087
  content: {
38994
39088
  "application/json": {
39089
+ examples: {
39090
+ billing_period_days: {
39091
+ summary: "Update Membership",
39092
+ value: {
39093
+ billing_period_days: 45
39094
+ }
39095
+ }
39096
+ },
38995
39097
  schema: {
39098
+ example: {
39099
+ billing_period_days: 45
39100
+ },
39101
+ minProperties: 1,
39102
+ not: {
39103
+ anyOf: [
39104
+ {
39105
+ required: [
39106
+ "billing_period_days",
39107
+ "cancel_at_period_end"
39108
+ ]
39109
+ },
39110
+ {
39111
+ required: ["billing_period_days", "metadata"]
39112
+ },
39113
+ {
39114
+ required: ["billing_period_days", "payment_method_id"]
39115
+ }
39116
+ ]
39117
+ },
38996
39118
  properties: {
39119
+ billing_period_days: {
39120
+ description: "Number of days between recurring charges. Sets the current period end to the current period start plus this value and applies to every recurring variant. The new period end must remain in the future. Existing non-daily memberships cannot be changed to daily billing.",
39121
+ example: 45,
39122
+ maximum: 365,
39123
+ minimum: 1,
39124
+ type: "integer"
39125
+ },
38997
39126
  cancel_at_period_end: {
38998
39127
  description: "`true` cancels at the end of the current billing period (the customer keeps access until then); `false` reverses a pending cancellation.",
38999
39128
  example: true,
@@ -42517,9 +42646,91 @@ var native_spec_default = {
42517
42646
  "user"
42518
42647
  ],
42519
42648
  type: ["object", "null"]
42649
+ },
42650
+ nearby: {
42651
+ description: "The referrers ranked within five places of the caller, including the caller, best first. Empty when the caller has no referral earnings or is anonymous.",
42652
+ items: {
42653
+ properties: {
42654
+ first_referral_started_at: {
42655
+ description: "When the referrer's earliest partner business became active.",
42656
+ example: "2026-01-01T12:00:00.000Z",
42657
+ format: "date-time",
42658
+ type: "string"
42659
+ },
42660
+ rank: {
42661
+ description: "1-based leaderboard position.",
42662
+ example: 1,
42663
+ type: "integer"
42664
+ },
42665
+ total_earnings_usd: {
42666
+ description: "The referrer's pending + completed earnings across all referred businesses, in USD.",
42667
+ example: "100.00",
42668
+ type: "string"
42669
+ },
42670
+ total_volume_usd: {
42671
+ description: "Credited GMV across all the referrer's referred businesses, in USD.",
42672
+ example: "0.00",
42673
+ type: "string"
42674
+ },
42675
+ user: {
42676
+ description: "The ranked referrer. Identity fields (id, name, username, profile_picture) are returned only on the caller's own entry; other referrers expose coarse location only.",
42677
+ properties: {
42678
+ city: {
42679
+ description: "The city where the referrer is located, derived from their IP address. Null if location sharing is disabled.",
42680
+ example: "Austin",
42681
+ type: ["string", "null"]
42682
+ },
42683
+ country: {
42684
+ description: "The country where the referrer is located, derived from their IP address. Null if location sharing is disabled.",
42685
+ example: "US",
42686
+ type: ["string", "null"]
42687
+ },
42688
+ id: {
42689
+ description: "User ID, prefixed `user_`. Present only on the caller's own entry.",
42690
+ example: "user_xxxxxxxxxxxxxx",
42691
+ type: "string"
42692
+ },
42693
+ name: {
42694
+ description: "The user's display name. Present only on the caller's own entry.",
42695
+ example: "Marcus Webb",
42696
+ type: ["string", "null"]
42697
+ },
42698
+ profile_picture: {
42699
+ description: "The user's profile picture. Present only on the caller's own entry.",
42700
+ properties: {
42701
+ url: {
42702
+ description: "The user's profile picture URL.",
42703
+ example: "https://ui-avatars.com/api/",
42704
+ type: "string"
42705
+ }
42706
+ },
42707
+ required: ["url"],
42708
+ type: "object"
42709
+ },
42710
+ username: {
42711
+ description: "The user's unique username. Present only on the caller's own entry.",
42712
+ example: "marcuswebb",
42713
+ type: "string"
42714
+ }
42715
+ },
42716
+ required: ["country", "city"],
42717
+ type: ["object", "null"]
42718
+ }
42719
+ },
42720
+ required: [
42721
+ "rank",
42722
+ "total_earnings_usd",
42723
+ "total_volume_usd",
42724
+ "first_referral_started_at",
42725
+ "user"
42726
+ ],
42727
+ type: "object"
42728
+ },
42729
+ maxItems: 11,
42730
+ type: "array"
42520
42731
  }
42521
42732
  },
42522
- required: ["leaders", "me"],
42733
+ required: ["leaders", "me", "nearby"],
42523
42734
  type: "object"
42524
42735
  }
42525
42736
  }
@@ -42549,14 +42760,42 @@ var native_spec_default = {
42549
42760
  },
42550
42761
  "/partners/referred_users": {
42551
42762
  get: {
42552
- description: "Lists the users the caller referred onto Whop (newest first), each with the second-tier earnings the caller has made from that user's businesses.",
42763
+ description: "Lists the users the caller referred onto Whop, newest first by default, each with the caller's total affiliate earnings from that user across all tiers. Earnings sorting uses cached totals. Authorized staff can set user_id=global to list referrals across partners, with earnings for each user's current primary referrer.",
42553
42764
  operationId: "referred_users",
42554
42765
  parameters: [
42555
42766
  {
42556
42767
  $ref: "#/components/parameters/ApiVersionDate"
42557
42768
  },
42558
42769
  {
42559
- description: "Search referred users by name or username.",
42770
+ description: "Set to global to view referred users across partners with each primary referrer's cached total earnings. Requires an admin or partner manager session; OAuth tokens and company API keys cannot use global mode. Optionally narrow to one earning_partner_id or earning_partner_username.",
42771
+ in: "query",
42772
+ name: "user_id",
42773
+ required: false,
42774
+ schema: {
42775
+ enum: ["global"],
42776
+ type: "string"
42777
+ }
42778
+ },
42779
+ {
42780
+ description: "The selected referring partner's user_ ID. Requires user_id=global; cannot be combined with earning_partner_username.",
42781
+ in: "query",
42782
+ name: "earning_partner_id",
42783
+ required: false,
42784
+ schema: {
42785
+ type: "string"
42786
+ }
42787
+ },
42788
+ {
42789
+ description: "The selected referring partner's exact username. Requires user_id=global; cannot be combined with earning_partner_id.",
42790
+ in: "query",
42791
+ name: "earning_partner_username",
42792
+ required: false,
42793
+ schema: {
42794
+ type: "string"
42795
+ }
42796
+ },
42797
+ {
42798
+ description: "Search referred users by name or username. In global mode, matches the beginning of usernames only.",
42560
42799
  in: "query",
42561
42800
  name: "query",
42562
42801
  required: false,
@@ -42582,6 +42821,28 @@ var native_spec_default = {
42582
42821
  type: "boolean"
42583
42822
  }
42584
42823
  },
42824
+ {
42825
+ description: "The field to sort by. created_at uses the user's signup date; earnings_usd uses the current primary referrer's cached total affiliate earnings from that user.",
42826
+ in: "query",
42827
+ name: "order",
42828
+ required: false,
42829
+ schema: {
42830
+ default: "created_at",
42831
+ enum: ["created_at", "earnings_usd"],
42832
+ type: "string"
42833
+ }
42834
+ },
42835
+ {
42836
+ description: "The direction to sort results.",
42837
+ in: "query",
42838
+ name: "direction",
42839
+ required: false,
42840
+ schema: {
42841
+ default: "desc",
42842
+ enum: ["asc", "desc"],
42843
+ type: "string"
42844
+ }
42845
+ },
42585
42846
  {
42586
42847
  description: "Number of results to return from the start of the range.",
42587
42848
  in: "query",
@@ -42632,13 +42893,13 @@ var native_spec_default = {
42632
42893
  items: {
42633
42894
  properties: {
42634
42895
  business_count: {
42635
- description: "Number of active businesses this user referred that credit the caller as a second-tier partner. Excludes deleted businesses.",
42896
+ description: "Number of active businesses this user referred that credit the caller as a second-tier partner, or any earning partner in global mode. An earning-partner filter narrows the count to that partner. Excludes deleted businesses.",
42636
42897
  example: 1,
42637
42898
  type: "integer"
42638
42899
  },
42639
42900
  earnings: {
42640
42901
  $ref: "#/components/schemas/Money",
42641
- description: "The caller's total earnings across the business referrals included in business_count, in USD."
42902
+ description: "Total pending and completed affiliate earnings from this user for their current primary referrer, across all tiers, in USD. Includes historical earnings from removed referrals and deleted businesses."
42642
42903
  },
42643
42904
  joined_at: {
42644
42905
  description: "When the referred user joined Whop, as an ISO 8601 timestamp.",
@@ -42747,9 +43008,21 @@ var native_spec_default = {
42747
43008
  },
42748
43009
  description: "referred users listed"
42749
43010
  },
43011
+ "400": {
43012
+ $ref: "#/components/responses/InvalidParameters",
43013
+ description: "invalid sort field"
43014
+ },
42750
43015
  "401": {
42751
43016
  $ref: "#/components/responses/Unauthorized",
42752
43017
  description: "missing or invalid authentication"
43018
+ },
43019
+ "403": {
43020
+ $ref: "#/components/responses/Forbidden",
43021
+ description: "partner selection is not authorized"
43022
+ },
43023
+ "404": {
43024
+ $ref: "#/components/responses/NotFound",
43025
+ description: "selected partner not found"
42753
43026
  }
42754
43027
  },
42755
43028
  security: [
@@ -44081,12 +44354,23 @@ var native_spec_default = {
44081
44354
  },
44082
44355
  "/payments": {
44083
44356
  get: {
44084
- description: "Lists payments, newest first. Without filters this is every payment the caller can read: a company credential's own account, or for a user every account they can read payments for. Filters narrow by account, buyer, product, plan, membership, status, billing reason, currency, and creation window. Filtering by `billing_reason=subscription_cycle` also matches renewals recorded as `subscription_update`. `settlement_time_at` is null on list rows \u2014 retrieve the payment for it.",
44357
+ description: "Lists payments, newest first. By default, returns account sales: a company credential's own account, or for a user every account they can read payments for. Set `mode=user_sales` to list only the sales received by the signed-in user's primary ledger account, without a company. This mode requires the user's own Whop login session and cannot be combined with `account_id`. Filters narrow by account, buyer, product, plan, membership, status, billing reason, currency, and creation window. Filtering by `billing_reason=subscription_cycle` also matches renewals recorded as `subscription_update`. `settlement_time_at` is null on list rows \u2014 retrieve the payment for it.",
44085
44358
  operationId: "list",
44086
44359
  parameters: [
44087
44360
  {
44088
44361
  $ref: "#/components/parameters/ApiVersionDate"
44089
44362
  },
44363
+ {
44364
+ description: "Which sales to list. `account_sales` returns sales for the accounts the caller can read. `user_sales` returns only sales received by the signed-in user's primary ledger account, without a company; requires their own Whop login session and cannot be combined with `account_id`.",
44365
+ in: "query",
44366
+ name: "mode",
44367
+ required: false,
44368
+ schema: {
44369
+ default: "account_sales",
44370
+ enum: ["account_sales", "user_sales"],
44371
+ type: "string"
44372
+ }
44373
+ },
44090
44374
  {
44091
44375
  description: "Only payments charged by this account, prefixed `biz_`.",
44092
44376
  in: "query",
@@ -44141,7 +44425,7 @@ var native_spec_default = {
44141
44425
  }
44142
44426
  },
44143
44427
  {
44144
- description: "Only payments made by this buyer, prefixed `user_`. Payments are listed for the accounts the caller manages, so `me` is not accepted; list the caller's own purchases with `GET /memberships?user_id=me`.",
44428
+ description: "Only payments made by this buyer, prefixed `user_`. This filters sales the caller can read, so `me` is not accepted; list the caller's own purchases with `GET /memberships?user_id=me`.",
44145
44429
  in: "query",
44146
44430
  name: "user_id",
44147
44431
  required: false,
@@ -44441,7 +44725,7 @@ var native_spec_default = {
44441
44725
  description: "Find or create a variant for this payment through the compatibility input `plan`. Mutually exclusive with `plan_id` and `line_items`. Creating a variant requires `plan:create`; creating or updating a product requires the corresponding product permission.",
44442
44726
  properties: {
44443
44727
  application_fee_amount: {
44444
- description: "Application fee collected by the platform in the variant currency (5.00 means $5.00 for USD). Must be positive and below the initial price for one-time variants or renewal price for recurring variants. Paid to the parent account alongside other processing fees; collection is capped to remaining proceeds. Applies to subsequent payments on recurring variants. Only valid for connected accounts with a parent account.",
44728
+ description: "Application fee the platform collects per unit, in the variant currency (5.00 means $5.00 for USD). Must be positive and below the initial price for one-time variants or renewal price for recurring variants. Paid to the parent account alongside other processing fees; collection is capped to remaining proceeds. Applies to subsequent payments on recurring variants. Only valid for connected accounts with a parent account.",
44445
44729
  example: 2,
44446
44730
  type: ["number", "null"]
44447
44731
  },
@@ -44845,7 +45129,7 @@ var native_spec_default = {
44845
45129
  $ref: "#/components/parameters/ApiVersionDate"
44846
45130
  },
44847
45131
  {
44848
- description: "The payment to retrieve, prefixed `pay_`.",
45132
+ description: "The payment, prefixed `pay_`.",
44849
45133
  in: "path",
44850
45134
  name: "id",
44851
45135
  required: true,
@@ -44854,6 +45138,129 @@ var native_spec_default = {
44854
45138
  }
44855
45139
  }
44856
45140
  ]
45141
+ },
45142
+ patch: {
45143
+ description: "Updates a payment's `shipping_address` or `return_url`. Send the complete `shipping_address`, because it replaces the existing address and any field you leave out is cleared.",
45144
+ operationId: "update",
45145
+ parameters: [
45146
+ {
45147
+ $ref: "#/components/parameters/ApiVersionDate"
45148
+ },
45149
+ {
45150
+ description: "The payment, prefixed `pay_`.",
45151
+ in: "path",
45152
+ name: "id",
45153
+ required: true,
45154
+ schema: {
45155
+ type: "string"
45156
+ }
45157
+ }
45158
+ ],
45159
+ requestBody: {
45160
+ content: {
45161
+ "application/json": {
45162
+ schema: {
45163
+ properties: {
45164
+ return_url: {
45165
+ description: "Where the buyer continues after completing an off-site step. An absolute https URL without credentials, at most 2,048 characters. Only for payments created with a `confirmation_token`, and only until the buyer has returned. Omit it to leave it unchanged.",
45166
+ example: "https://shinetime.example/checkout/thanks",
45167
+ type: "string"
45168
+ },
45169
+ shipping_address: {
45170
+ description: "The complete new shipping address. It replaces the current address as a whole and is never merged with it, so send every field the address should have, including the ones that are not changing. Any field you leave out is cleared: sending only `city` leaves an address with nothing but a city. Pass null to remove the address, or omit `shipping_address` to leave it unchanged. It cannot change once a shipment exists for the payment.",
45171
+ properties: {
45172
+ city: {
45173
+ description: "City name.",
45174
+ example: "Austin",
45175
+ type: ["string", "null"]
45176
+ },
45177
+ country: {
45178
+ description: "ISO 3166-1 alpha-2 country code, such as `US`.",
45179
+ example: "US",
45180
+ type: ["string", "null"]
45181
+ },
45182
+ line1: {
45183
+ description: "First line of the street address.",
45184
+ example: "1114 Bouldin Ave",
45185
+ type: ["string", "null"]
45186
+ },
45187
+ line2: {
45188
+ description: "Second line of the street address.",
45189
+ example: "Unit B",
45190
+ type: ["string", "null"]
45191
+ },
45192
+ name: {
45193
+ description: "The recipient's full name, as it should appear on the shipping label.",
45194
+ example: "Dana Whitfield",
45195
+ type: ["string", "null"]
45196
+ },
45197
+ postal_code: {
45198
+ description: "Postal or ZIP code.",
45199
+ example: "78704",
45200
+ type: ["string", "null"]
45201
+ },
45202
+ state: {
45203
+ description: "State, province, or region code, such as `CA`.",
45204
+ example: "TX",
45205
+ type: ["string", "null"]
45206
+ }
45207
+ },
45208
+ type: ["object", "null"]
45209
+ }
45210
+ },
45211
+ required: [],
45212
+ type: "object"
45213
+ }
45214
+ }
45215
+ },
45216
+ required: true
45217
+ },
45218
+ responses: {
45219
+ "200": {
45220
+ content: {
45221
+ "application/json": {
45222
+ schema: {
45223
+ $ref: "#/components/schemas/Payment"
45224
+ }
45225
+ }
45226
+ },
45227
+ description: "shipping address replaced"
45228
+ },
45229
+ "400": {
45230
+ content: {
45231
+ "application/json": {
45232
+ schema: {
45233
+ $ref: "#/components/schemas/V1ErrorResponse"
45234
+ }
45235
+ }
45236
+ },
45237
+ description: "shipping_address is not an object"
45238
+ },
45239
+ "401": {
45240
+ $ref: "#/components/responses/Unauthorized",
45241
+ description: "unauthenticated"
45242
+ },
45243
+ "403": {
45244
+ $ref: "#/components/responses/Forbidden",
45245
+ description: "credential without payment:manage"
45246
+ },
45247
+ "404": {
45248
+ $ref: "#/components/responses/NotFound",
45249
+ description: "payment not found"
45250
+ }
45251
+ },
45252
+ security: [
45253
+ {
45254
+ bearerAuth: ["payment:manage"]
45255
+ }
45256
+ ],
45257
+ summary: "Update Payment",
45258
+ tags: ["Payments"],
45259
+ "x-mint": {
45260
+ metadata: {
45261
+ sidebarTitle: "Update"
45262
+ }
45263
+ }
44857
45264
  }
44858
45265
  },
44859
45266
  "/payments/{id}/capture": {
@@ -48168,6 +48575,11 @@ var native_spec_default = {
48168
48575
  example: "usd",
48169
48576
  type: "string"
48170
48577
  },
48578
+ delayed: {
48579
+ description: "Whether an in-transit withdrawal is past its settlement window.",
48580
+ example: false,
48581
+ type: "boolean"
48582
+ },
48171
48583
  destination_amount: {
48172
48584
  description: "The amount delivered in the destination currency, as a decimal string. Assigned when the payout is processed, so it is `null` before then and on payouts without a recorded conversion.",
48173
48585
  example: "461.7",
@@ -48185,6 +48597,12 @@ var native_spec_default = {
48185
48597
  format: "date-time",
48186
48598
  type: ["string", "null"]
48187
48599
  },
48600
+ estimated_arrival_end: {
48601
+ description: "End of the expected bank settlement window.",
48602
+ example: null,
48603
+ format: "date-time",
48604
+ type: ["string", "null"]
48605
+ },
48188
48606
  exchange_rate: {
48189
48607
  description: "Exchange rate from the payout currency to the destination currency. Assigned when the payout is processed, so it is `null` before then and on payouts without a recorded rate.",
48190
48608
  example: 0.9234,
@@ -48360,6 +48778,55 @@ var native_spec_default = {
48360
48778
  example: "awaiting_provider_acceptance",
48361
48779
  type: "string"
48362
48780
  },
48781
+ timeline: {
48782
+ description: "Completed lifecycle events in chronological order. Present when retrieving a withdrawal ID.",
48783
+ items: {
48784
+ properties: {
48785
+ error_message: {
48786
+ description: "Failure message, only with payout:destination:read.",
48787
+ example: null,
48788
+ type: ["string", "null"]
48789
+ },
48790
+ estimated_arrival: {
48791
+ example: null,
48792
+ format: "date-time",
48793
+ type: ["string", "null"]
48794
+ },
48795
+ status: {
48796
+ enum: [
48797
+ "requested",
48798
+ "awaiting_payment",
48799
+ "in_transit",
48800
+ "completed",
48801
+ "failed",
48802
+ "canceled",
48803
+ "denied"
48804
+ ],
48805
+ example: "requested",
48806
+ type: "string"
48807
+ },
48808
+ status_detail: {
48809
+ description: "Informational event detail; security_review identifies manual review.",
48810
+ example: null,
48811
+ type: ["string", "null"]
48812
+ },
48813
+ timestamp: {
48814
+ example: "2026-01-01T12:00:00.000Z",
48815
+ format: "date-time",
48816
+ type: ["string", "null"]
48817
+ }
48818
+ },
48819
+ required: [
48820
+ "status",
48821
+ "status_detail",
48822
+ "timestamp",
48823
+ "estimated_arrival",
48824
+ "error_message"
48825
+ ],
48826
+ type: "object"
48827
+ },
48828
+ type: "array"
48829
+ },
48363
48830
  trace_code: {
48364
48831
  description: "ACH trace number the recipient's bank can use to locate this payout. Assigned when the payout is submitted to the bank, so it is `null` before then and on payouts not sent over ACH.",
48365
48832
  example: "021000021234567",
@@ -54541,7 +55008,7 @@ var native_spec_default = {
54541
55008
  },
54542
55009
  purpose: {
54543
55010
  description: "What the saved payment method will pay for. Set to `ads_billing` when saving a card to pay for Whop Ads on `account_id`: the card is verified by Whop Ads, the merchant that charges it, which helps minimize security declines on ad payments, and it requires `ad_campaign:create` on `account_id`. Omit it for any other payment method.",
54544
- enum: ["ads_billing"],
55011
+ enum: ["ads_billing", null],
54545
55012
  example: "ads_billing",
54546
55013
  type: ["string", "null"]
54547
55014
  },
@@ -54549,6 +55016,17 @@ var native_spec_default = {
54549
55016
  description: "Where the buyer continues after completing an off-site step. An absolute https URL without credentials, at most 2,048 characters.",
54550
55017
  example: "https://shinetime.example/billing/saved",
54551
55018
  type: ["string", "null"]
55019
+ },
55020
+ three_ds_level: {
55021
+ description: "3D Secure behavior for supported on-session card payments. `mandate_challenge` requires a 3DS challenge before payment processing; `mandate_if_required` mandates a challenge only when the payment processor requires it; `frictionless_if_required` uses the regular frictionless 3DS flow. Payments of $1,000 or more use `mandate_if_required` unless `mandate_challenge` is selected. Risk and authentication recovery requirements can override the preference. Applies to this setup only, and only while the buyer is present: ignored with `payment_method_id`, which re-verifies off session. Not available with `purpose: ads_billing`. Defaults to `frictionless_if_required`.",
55022
+ enum: [
55023
+ "mandate_challenge",
55024
+ "mandate_if_required",
55025
+ "frictionless_if_required",
55026
+ null
55027
+ ],
55028
+ example: "mandate_challenge",
55029
+ type: ["string", "null"]
54552
55030
  }
54553
55031
  },
54554
55032
  required: ["account_id"],
@@ -55751,6 +56229,343 @@ var native_spec_default = {
55751
56229
  }
55752
56230
  }
55753
56231
  },
56232
+ "/social_accounts/{id}/partners": {
56233
+ get: {
56234
+ description: "Lists the creators an Instagram account runs partnership ads with, and where each creator's permission stands.",
56235
+ operationId: "partners",
56236
+ parameters: [
56237
+ {
56238
+ $ref: "#/components/parameters/ApiVersionDate"
56239
+ },
56240
+ {
56241
+ description: "The Instagram account (a sacc_ identifier) the partners run partnership ads with.",
56242
+ in: "path",
56243
+ name: "id",
56244
+ required: true,
56245
+ schema: {
56246
+ type: "string"
56247
+ }
56248
+ },
56249
+ {
56250
+ description: "The Account (biz_ identifier) that advertises as the Instagram account. An account-scoped API key may omit this to default to its own account.",
56251
+ in: "query",
56252
+ name: "account_id",
56253
+ required: false,
56254
+ schema: {
56255
+ type: "string"
56256
+ }
56257
+ },
56258
+ {
56259
+ description: "Number of results to return from the start of the range.",
56260
+ in: "query",
56261
+ name: "first",
56262
+ required: false,
56263
+ schema: {
56264
+ default: 20,
56265
+ maximum: 100,
56266
+ type: "integer"
56267
+ }
56268
+ },
56269
+ {
56270
+ description: "Return results after this cursor. Use `page_info.end_cursor` from the previous response to fetch the next page.",
56271
+ in: "query",
56272
+ name: "after",
56273
+ required: false,
56274
+ schema: {
56275
+ type: "string"
56276
+ }
56277
+ }
56278
+ ],
56279
+ responses: {
56280
+ "200": {
56281
+ content: {
56282
+ "application/json": {
56283
+ examples: {
56284
+ partners: {
56285
+ value: {
56286
+ data: [
56287
+ {
56288
+ error: null,
56289
+ external_id: null,
56290
+ id: "sacc_xxxxxxxxxxxxxx",
56291
+ name: "Luvera",
56292
+ parent_social_account: null,
56293
+ partnership_status: "pending",
56294
+ platform: "instagram",
56295
+ profile_picture_url: "https://img.whop.com/sacc_xxxxxxxxxxxxxx.png",
56296
+ scopes: ["partner"],
56297
+ url: "https://instagram.com/luverahealth",
56298
+ username: "luverahealth",
56299
+ verified: false
56300
+ }
56301
+ ],
56302
+ page_info: {
56303
+ end_cursor: null,
56304
+ has_next_page: false,
56305
+ has_previous_page: false,
56306
+ start_cursor: null
56307
+ }
56308
+ }
56309
+ }
56310
+ },
56311
+ schema: {
56312
+ properties: {
56313
+ data: {
56314
+ items: {
56315
+ $ref: "#/components/schemas/SocialAccount"
56316
+ },
56317
+ type: "array"
56318
+ },
56319
+ page_info: {
56320
+ properties: {
56321
+ end_cursor: {
56322
+ example: null,
56323
+ nullable: true,
56324
+ type: "string"
56325
+ },
56326
+ has_next_page: {
56327
+ example: false,
56328
+ type: "boolean"
56329
+ },
56330
+ has_previous_page: {
56331
+ example: false,
56332
+ type: "boolean"
56333
+ },
56334
+ start_cursor: {
56335
+ example: "WyJjdXJzb3IiLDFd",
56336
+ nullable: true,
56337
+ type: "string"
56338
+ }
56339
+ },
56340
+ required: [
56341
+ "has_next_page",
56342
+ "end_cursor",
56343
+ "has_previous_page",
56344
+ "start_cursor"
56345
+ ],
56346
+ type: "object"
56347
+ }
56348
+ },
56349
+ required: ["data", "page_info"],
56350
+ type: "object"
56351
+ }
56352
+ }
56353
+ },
56354
+ description: "partners listed"
56355
+ },
56356
+ "401": {
56357
+ $ref: "#/components/responses/Unauthorized",
56358
+ description: "missing or invalid authentication"
56359
+ },
56360
+ "403": {
56361
+ $ref: "#/components/responses/Forbidden",
56362
+ description: "caller can't read the account's social accounts"
56363
+ },
56364
+ "404": {
56365
+ $ref: "#/components/responses/NotFound",
56366
+ description: "the account doesn't advertise as the Instagram account"
56367
+ }
56368
+ },
56369
+ security: [
56370
+ {
56371
+ bearerAuth: ["social_account:read"]
56372
+ }
56373
+ ],
56374
+ summary: "List Social Account Partners",
56375
+ tags: ["Social Accounts"],
56376
+ "x-mint": {
56377
+ metadata: {
56378
+ sidebarTitle: "List Partners"
56379
+ }
56380
+ }
56381
+ },
56382
+ post: {
56383
+ description: "Invites an Instagram creator to run partnership ads with an Instagram account. The creator approves the invitation in the Instagram app, and `partnership_status` stays `pending` until they do; [refresh](/api-reference/beta/social-accounts/refresh) the partner to pick up their answer.",
56384
+ operationId: "add-partner",
56385
+ parameters: [
56386
+ {
56387
+ $ref: "#/components/parameters/ApiVersionDate"
56388
+ },
56389
+ {
56390
+ description: "The Instagram account (a sacc_ identifier) the partners run partnership ads with.",
56391
+ in: "path",
56392
+ name: "id",
56393
+ required: true,
56394
+ schema: {
56395
+ type: "string"
56396
+ }
56397
+ },
56398
+ {
56399
+ $ref: "#/components/parameters/IdempotencyKey"
56400
+ }
56401
+ ],
56402
+ requestBody: {
56403
+ content: {
56404
+ "application/json": {
56405
+ schema: {
56406
+ properties: {
56407
+ account_id: {
56408
+ description: "The Account (biz_ identifier) that advertises as the Instagram account. An account-scoped API key may omit this to default to its own account.",
56409
+ example: "biz_xxxxxxxxxxxxxx",
56410
+ type: "string"
56411
+ },
56412
+ username: {
56413
+ description: "The creator's Instagram username, with or without the leading `@`. The creator needs a professional (Business or Creator) Instagram account.",
56414
+ example: "@luverahealth",
56415
+ type: "string"
56416
+ }
56417
+ },
56418
+ required: ["username"],
56419
+ type: "object"
56420
+ }
56421
+ }
56422
+ },
56423
+ required: true
56424
+ },
56425
+ responses: {
56426
+ "200": {
56427
+ content: {
56428
+ "application/json": {
56429
+ examples: {
56430
+ partner: {
56431
+ value: {
56432
+ error: null,
56433
+ external_id: null,
56434
+ id: "sacc_xxxxxxxxxxxxxx",
56435
+ name: "Luvera",
56436
+ parent_social_account: null,
56437
+ partnership_status: "pending",
56438
+ platform: "instagram",
56439
+ profile_picture_url: "https://img.whop.com/sacc_xxxxxxxxxxxxxx.png",
56440
+ scopes: ["partner"],
56441
+ url: "https://instagram.com/luverahealth",
56442
+ username: "luverahealth",
56443
+ verified: false
56444
+ }
56445
+ }
56446
+ },
56447
+ schema: {
56448
+ $ref: "#/components/schemas/SocialAccount"
56449
+ }
56450
+ }
56451
+ },
56452
+ description: "creator invited"
56453
+ },
56454
+ "400": {
56455
+ $ref: "#/components/responses/InvalidParameters",
56456
+ description: "the creator has no professional Instagram account"
56457
+ },
56458
+ "401": {
56459
+ $ref: "#/components/responses/Unauthorized",
56460
+ description: "missing or invalid authentication"
56461
+ },
56462
+ "403": {
56463
+ $ref: "#/components/responses/Forbidden",
56464
+ description: "caller lacks permission to add social accounts"
56465
+ },
56466
+ "404": {
56467
+ $ref: "#/components/responses/NotFound",
56468
+ description: "the account doesn't advertise as the Instagram account"
56469
+ },
56470
+ "409": {
56471
+ $ref: "#/components/responses/Conflict"
56472
+ },
56473
+ "429": {
56474
+ $ref: "#/components/responses/TooManyRequests",
56475
+ description: "the Instagram account has sent too many invitations"
56476
+ }
56477
+ },
56478
+ security: [
56479
+ {
56480
+ bearerAuth: ["social_account:create"]
56481
+ }
56482
+ ],
56483
+ summary: "Add Partner",
56484
+ tags: ["Social Accounts"]
56485
+ }
56486
+ },
56487
+ "/social_accounts/{id}/partners/{partner_id}": {
56488
+ delete: {
56489
+ description: "Revokes a creator's permission to run partnership ads with an Instagram account. Every account that advertises as the Instagram account loses the partner, since the permission belongs to the Instagram account.",
56490
+ operationId: "remove-partner",
56491
+ parameters: [
56492
+ {
56493
+ $ref: "#/components/parameters/ApiVersionDate"
56494
+ },
56495
+ {
56496
+ description: "The Instagram account (a sacc_ identifier) the partner runs partnership ads with.",
56497
+ in: "path",
56498
+ name: "id",
56499
+ required: true,
56500
+ schema: {
56501
+ type: "string"
56502
+ }
56503
+ },
56504
+ {
56505
+ description: "The partner creator's social account (a sacc_ identifier).",
56506
+ in: "path",
56507
+ name: "partner_id",
56508
+ required: true,
56509
+ schema: {
56510
+ type: "string"
56511
+ }
56512
+ },
56513
+ {
56514
+ description: "The Account (biz_ identifier) that advertises as the Instagram account. An account-scoped API key may omit this to default to its own account.",
56515
+ in: "query",
56516
+ name: "account_id",
56517
+ required: false,
56518
+ schema: {
56519
+ type: "string"
56520
+ }
56521
+ }
56522
+ ],
56523
+ responses: {
56524
+ "200": {
56525
+ content: {
56526
+ "application/json": {
56527
+ schema: {
56528
+ properties: {
56529
+ deleted: {
56530
+ description: "Always true.",
56531
+ example: true,
56532
+ type: "boolean"
56533
+ },
56534
+ id: {
56535
+ description: "ID of the removed partner's social account.",
56536
+ example: "sacc_xxxxxxxxxxxxxx",
56537
+ type: "string"
56538
+ }
56539
+ },
56540
+ required: ["id", "deleted"],
56541
+ type: "object"
56542
+ }
56543
+ }
56544
+ },
56545
+ description: "partner removed"
56546
+ },
56547
+ "401": {
56548
+ $ref: "#/components/responses/Unauthorized",
56549
+ description: "missing or invalid authentication"
56550
+ },
56551
+ "403": {
56552
+ $ref: "#/components/responses/Forbidden",
56553
+ description: "caller lacks permission to delete social accounts"
56554
+ },
56555
+ "404": {
56556
+ $ref: "#/components/responses/NotFound",
56557
+ description: "the creator isn't a partner of the Instagram account"
56558
+ }
56559
+ },
56560
+ security: [
56561
+ {
56562
+ bearerAuth: ["social_account:delete"]
56563
+ }
56564
+ ],
56565
+ summary: "Remove Partner",
56566
+ tags: ["Social Accounts"]
56567
+ }
56568
+ },
55754
56569
  "/social_accounts/{id}/posts": {
55755
56570
  get: {
55756
56571
  description: "Lists the existing posts of a connected Facebook page, Instagram account, or TikTok account.",
@@ -60383,7 +61198,7 @@ var native_spec_default = {
60383
61198
  "x-whop-docs-subgroup": "OAuth Grants"
60384
61199
  },
60385
61200
  post: {
60386
- description: "Completes the OAuth authorization step for the authenticated user: records their consent for the scopes an app asked for and mints the authorization code to hand back to it. Returns the grant, plus a `redirect_url` carrying that code \u2014 the one and only time it is returned. Exchange the code at `POST /oauth/token` with the verifier for `code_challenge`. Requires a user session, because consent has to come from the account holder: an API key or an OAuth token is refused, so an app can never authorize itself. Send an `Idempotency-Key` to make a retry safe \u2014 a replay returns the original `redirect_url` and its code rather than issuing a second one.",
61201
+ description: "Completes the OAuth authorization step for the authenticated user: records their consent for the scopes an app asked for and mints the authorization code to hand back to it. Returns the grant, plus a `redirect_url` carrying that code \u2014 the one and only time it is returned. Exchange the code at `POST /oauth/token` with the verifier for `code_challenge`, or with the app's secret when a confidential app sent none. Requires a user session, because consent has to come from the account holder: an API key or an OAuth token is refused, so an app can never authorize itself. Send an `Idempotency-Key` to make a retry safe \u2014 a replay returns the original `redirect_url` and its code rather than issuing a second one.",
60387
61202
  operationId: "authorize-app",
60388
61203
  parameters: [
60389
61204
  {
@@ -60409,19 +61224,19 @@ var native_spec_default = {
60409
61224
  type: "string"
60410
61225
  },
60411
61226
  code_challenge: {
60412
- description: "The PKCE code challenge: the base64url-encoded SHA-256 of your code verifier, without padding.",
61227
+ description: "The PKCE code challenge: the base64url-encoded SHA-256 of your code verifier, without padding. Required unless the app is confidential; a confidential app that leaves it out redeems the code with its secret instead of a verifier.",
60413
61228
  example: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
60414
61229
  type: "string"
60415
61230
  },
60416
61231
  code_challenge_method: {
60417
- description: "How `code_challenge` was derived. Only `S256` is accepted.",
61232
+ description: "How `code_challenge` was derived. Only `S256` is accepted. Required with `code_challenge`.",
60418
61233
  enum: ["S256"],
60419
61234
  example: "S256",
60420
61235
  type: "string"
60421
61236
  },
60422
61237
  consent_shown: {
60423
61238
  default: true,
60424
- description: "Whether the consent UI listed these scopes for the user. Sending `false` succeeds only when the user has already granted every scope requested.",
61239
+ description: "Whether the consent UI listed these scopes for the user. Sending `false` succeeds only when the user has already granted every scope requested, or when the app is one of Whop's own with the consent skip switched on and asks for `openid` alone.",
60425
61240
  example: true,
60426
61241
  type: "boolean"
60427
61242
  },
@@ -60455,13 +61270,7 @@ var native_spec_default = {
60455
61270
  type: "string"
60456
61271
  }
60457
61272
  },
60458
- required: [
60459
- "client_id",
60460
- "redirect_uri",
60461
- "requested_scopes",
60462
- "code_challenge",
60463
- "code_challenge_method"
60464
- ],
61273
+ required: ["client_id", "redirect_uri", "requested_scopes"],
60465
61274
  type: "object"
60466
61275
  }
60467
61276
  }
@@ -67099,8 +67908,9 @@ var native_spec_default = {
67099
67908
  example: {
67100
67909
  account_id: "biz_xxxxxxxxxxxxxx",
67101
67910
  api_version: "v1",
67102
- api_version_date: "2026-09-25",
67911
+ api_version_date: "2026-09-29",
67103
67912
  data: {
67913
+ ads_spend_usd: null,
67104
67914
  balances: [],
67105
67915
  banner_image_url: null,
67106
67916
  business_address: null,
@@ -67188,6 +67998,7 @@ var native_spec_default = {
67188
67998
  next_payout_date: null
67189
67999
  }
67190
68000
  },
68001
+ platform_credits: [],
67191
68002
  privacy_policy: null,
67192
68003
  product_tax_code: null,
67193
68004
  recommended_actions: null,
@@ -67416,8 +68227,9 @@ var native_spec_default = {
67416
68227
  example: {
67417
68228
  account_id: "biz_xxxxxxxxxxxxxx",
67418
68229
  api_version: "v1",
67419
- api_version_date: "2026-09-25",
68230
+ api_version_date: "2026-09-29",
67420
68231
  data: {
68232
+ ads_spend_usd: null,
67421
68233
  balances: [],
67422
68234
  banner_image_url: null,
67423
68235
  business_address: null,
@@ -67505,6 +68317,7 @@ var native_spec_default = {
67505
68317
  next_payout_date: null
67506
68318
  }
67507
68319
  },
68320
+ platform_credits: [],
67508
68321
  privacy_policy: null,
67509
68322
  product_tax_code: null,
67510
68323
  recommended_actions: null,
@@ -67733,8 +68546,9 @@ var native_spec_default = {
67733
68546
  example: {
67734
68547
  account_id: "biz_xxxxxxxxxxxxxx",
67735
68548
  api_version: "v1",
67736
- api_version_date: "2026-09-25",
68549
+ api_version_date: "2026-09-29",
67737
68550
  data: {
68551
+ ads_spend_usd: null,
67738
68552
  balances: [],
67739
68553
  banner_image_url: null,
67740
68554
  business_address: null,
@@ -67822,6 +68636,7 @@ var native_spec_default = {
67822
68636
  next_payout_date: null
67823
68637
  }
67824
68638
  },
68639
+ platform_credits: [],
67825
68640
  privacy_policy: null,
67826
68641
  product_tax_code: null,
67827
68642
  recommended_actions: null,
@@ -68050,7 +68865,7 @@ var native_spec_default = {
68050
68865
  example: {
68051
68866
  account_id: "biz_xxxxxxxxxxxxxx",
68052
68867
  api_version: "v1",
68053
- api_version_date: "2026-09-25",
68868
+ api_version_date: "2026-09-29",
68054
68869
  data: {
68055
68870
  ad_campaign: {
68056
68871
  id: "adcamp_xxxxxxxxxxxxxx"
@@ -68452,7 +69267,7 @@ var native_spec_default = {
68452
69267
  example: {
68453
69268
  account_id: "biz_xxxxxxxxxxxxxx",
68454
69269
  api_version: "v1",
68455
- api_version_date: "2026-09-25",
69270
+ api_version_date: "2026-09-29",
68456
69271
  data: {
68457
69272
  bid_type: null,
68458
69273
  budget_amount: 50,
@@ -68762,7 +69577,7 @@ var native_spec_default = {
68762
69577
  example: {
68763
69578
  account_id: "biz_xxxxxxxxxxxxxx",
68764
69579
  api_version: "v1",
68765
- api_version_date: "2026-09-25",
69580
+ api_version_date: "2026-09-29",
68766
69581
  data: {
68767
69582
  bid_type: null,
68768
69583
  budget_amount: 50,
@@ -69072,7 +69887,7 @@ var native_spec_default = {
69072
69887
  example: {
69073
69888
  account_id: "biz_xxxxxxxxxxxxxx",
69074
69889
  api_version: "v1",
69075
- api_version_date: "2026-09-25",
69890
+ api_version_date: "2026-09-29",
69076
69891
  data: {
69077
69892
  billing: null,
69078
69893
  canceled_at: null,
@@ -69388,7 +70203,7 @@ var native_spec_default = {
69388
70203
  example: {
69389
70204
  account_id: "biz_xxxxxxxxxxxxxx",
69390
70205
  api_version: "v1",
69391
- api_version_date: "2026-09-25",
70206
+ api_version_date: "2026-09-29",
69392
70207
  data: {
69393
70208
  billing: null,
69394
70209
  canceled_at: null,
@@ -69704,7 +70519,7 @@ var native_spec_default = {
69704
70519
  example: {
69705
70520
  account_id: "biz_xxxxxxxxxxxxxx",
69706
70521
  api_version: "v1",
69707
- api_version_date: "2026-09-25",
70522
+ api_version_date: "2026-09-29",
69708
70523
  data: {
69709
70524
  billing: null,
69710
70525
  canceled_at: null,
@@ -70020,7 +70835,7 @@ var native_spec_default = {
70020
70835
  example: {
70021
70836
  account_id: "biz_xxxxxxxxxxxxxx",
70022
70837
  api_version: "v1",
70023
- api_version_date: "2026-09-25",
70838
+ api_version_date: "2026-09-29",
70024
70839
  data: {
70025
70840
  billing: null,
70026
70841
  canceled_at: null,
@@ -70336,7 +71151,7 @@ var native_spec_default = {
70336
71151
  example: {
70337
71152
  account_id: "biz_xxxxxxxxxxxxxx",
70338
71153
  api_version: "v1",
70339
- api_version_date: "2026-09-25",
71154
+ api_version_date: "2026-09-29",
70340
71155
  data: {
70341
71156
  hosted_url: null,
70342
71157
  id: "ciac_xxxxxxxxxxxxxx",
@@ -70486,7 +71301,7 @@ var native_spec_default = {
70486
71301
  example: {
70487
71302
  account_id: "biz_xxxxxxxxxxxxxx",
70488
71303
  api_version: "v1",
70489
- api_version_date: "2026-09-25",
71304
+ api_version_date: "2026-09-29",
70490
71305
  data: {
70491
71306
  hosted_url: null,
70492
71307
  id: "ciac_xxxxxxxxxxxxxx",
@@ -70636,7 +71451,7 @@ var native_spec_default = {
70636
71451
  example: {
70637
71452
  account_id: "biz_xxxxxxxxxxxxxx",
70638
71453
  api_version: "v1",
70639
- api_version_date: "2026-09-25",
71454
+ api_version_date: "2026-09-29",
70640
71455
  data: {
70641
71456
  hosted_url: null,
70642
71457
  id: "ciac_xxxxxxxxxxxxxx",
@@ -70786,7 +71601,7 @@ var native_spec_default = {
70786
71601
  example: {
70787
71602
  account_id: "biz_xxxxxxxxxxxxxx",
70788
71603
  api_version: "v1",
70789
- api_version_date: "2026-09-25",
71604
+ api_version_date: "2026-09-29",
70790
71605
  data: {
70791
71606
  hosted_url: null,
70792
71607
  id: "ciac_xxxxxxxxxxxxxx",
@@ -70936,7 +71751,7 @@ var native_spec_default = {
70936
71751
  example: {
70937
71752
  account_id: "biz_xxxxxxxxxxxxxx",
70938
71753
  api_version: "v1",
70939
- api_version_date: "2026-09-25",
71754
+ api_version_date: "2026-09-29",
70940
71755
  data: {
70941
71756
  card_id: "icrd_xxxxxxxxxxxxxx",
70942
71757
  cardholder_id: null,
@@ -71067,7 +71882,7 @@ var native_spec_default = {
71067
71882
  example: {
71068
71883
  account_id: "biz_xxxxxxxxxxxxxx",
71069
71884
  api_version: "v1",
71070
- api_version_date: "2026-09-25",
71885
+ api_version_date: "2026-09-29",
71071
71886
  data: {
71072
71887
  card_id: "icrd_xxxxxxxxxxxxxx",
71073
71888
  cardholder_id: null,
@@ -71198,7 +72013,7 @@ var native_spec_default = {
71198
72013
  example: {
71199
72014
  account_id: "biz_xxxxxxxxxxxxxx",
71200
72015
  api_version: "v1",
71201
- api_version_date: "2026-09-25",
72016
+ api_version_date: "2026-09-29",
71202
72017
  data: {
71203
72018
  card_id: "icrd_xxxxxxxxxxxxxx",
71204
72019
  cardholder_id: null,
@@ -71329,7 +72144,7 @@ var native_spec_default = {
71329
72144
  example: {
71330
72145
  account_id: "biz_xxxxxxxxxxxxxx",
71331
72146
  api_version: "v1",
71332
- api_version_date: "2026-09-25",
72147
+ api_version_date: "2026-09-29",
71333
72148
  data: {
71334
72149
  card_id: "icrd_xxxxxxxxxxxxxx",
71335
72150
  cardholder_id: null,
@@ -71460,7 +72275,7 @@ var native_spec_default = {
71460
72275
  example: {
71461
72276
  account_id: "biz_xxxxxxxxxxxxxx",
71462
72277
  api_version: "v1",
71463
- api_version_date: "2026-09-25",
72278
+ api_version_date: "2026-09-29",
71464
72279
  data: {
71465
72280
  card_id: "icrd_xxxxxxxxxxxxxx",
71466
72281
  cardholder_id: null,
@@ -71591,7 +72406,7 @@ var native_spec_default = {
71591
72406
  example: {
71592
72407
  account_id: "biz_xxxxxxxxxxxxxx",
71593
72408
  api_version: "v1",
71594
- api_version_date: "2026-09-25",
72409
+ api_version_date: "2026-09-29",
71595
72410
  data: {
71596
72411
  amount: "75000000000",
71597
72412
  available_at: null,
@@ -71723,7 +72538,7 @@ var native_spec_default = {
71723
72538
  example: {
71724
72539
  account_id: "biz_xxxxxxxxxxxxxx",
71725
72540
  api_version: "v1",
71726
- api_version_date: "2026-09-25",
72541
+ api_version_date: "2026-09-29",
71727
72542
  data: {
71728
72543
  account_id: "biz_xxxxxxxxxxxxxx",
71729
72544
  amount: 150,
@@ -71769,6 +72584,7 @@ var native_spec_default = {
71769
72584
  product_id: "prod_xxxxxxxxxxxxxx",
71770
72585
  product_title: "Ceramic Coating Package",
71771
72586
  quantity: 1,
72587
+ sku: null,
71772
72588
  subtotal: null
71773
72589
  }
71774
72590
  ],
@@ -71901,7 +72717,7 @@ var native_spec_default = {
71901
72717
  example: {
71902
72718
  account_id: "biz_xxxxxxxxxxxxxx",
71903
72719
  api_version: "v1",
71904
- api_version_date: "2026-09-25",
72720
+ api_version_date: "2026-09-29",
71905
72721
  data: {
71906
72722
  account_id: "biz_xxxxxxxxxxxxxx",
71907
72723
  amount: 150,
@@ -71947,6 +72763,7 @@ var native_spec_default = {
71947
72763
  product_id: "prod_xxxxxxxxxxxxxx",
71948
72764
  product_title: "Ceramic Coating Package",
71949
72765
  quantity: 1,
72766
+ sku: null,
71950
72767
  subtotal: null
71951
72768
  }
71952
72769
  ],
@@ -72079,7 +72896,7 @@ var native_spec_default = {
72079
72896
  example: {
72080
72897
  account_id: "biz_xxxxxxxxxxxxxx",
72081
72898
  api_version: "v1",
72082
- api_version_date: "2026-09-25",
72899
+ api_version_date: "2026-09-29",
72083
72900
  data: {
72084
72901
  account_id: null,
72085
72902
  amount: 25,
@@ -72208,7 +73025,7 @@ var native_spec_default = {
72208
73025
  example: {
72209
73026
  account_id: "biz_xxxxxxxxxxxxxx",
72210
73027
  api_version: "v1",
72211
- api_version_date: "2026-09-25",
73028
+ api_version_date: "2026-09-29",
72212
73029
  data: {
72213
73030
  created_at: "2026-01-01T12:00:00.000Z",
72214
73031
  download_url: "https://s3.amazonaws.com/uploads/exports/members-export.csv",
@@ -72329,7 +73146,7 @@ var native_spec_default = {
72329
73146
  example: {
72330
73147
  account_id: "biz_xxxxxxxxxxxxxx",
72331
73148
  api_version: "v1",
72332
- api_version_date: "2026-09-25",
73149
+ api_version_date: "2026-09-29",
72333
73150
  data: {
72334
73151
  created_at: "2026-01-01T12:00:00.000Z",
72335
73152
  download_url: null,
@@ -72450,7 +73267,7 @@ var native_spec_default = {
72450
73267
  example: {
72451
73268
  account_id: "biz_xxxxxxxxxxxxxx",
72452
73269
  api_version: "v1",
72453
- api_version_date: "2026-09-25",
73270
+ api_version_date: "2026-09-29",
72454
73271
  data: {
72455
73272
  amount: "512345000000",
72456
73273
  available_at: "2026-01-01T12:00:00.000Z",
@@ -72587,7 +73404,7 @@ var native_spec_default = {
72587
73404
  example: {
72588
73405
  account_id: "biz_xxxxxxxxxxxxxx",
72589
73406
  api_version: "v1",
72590
- api_version_date: "2026-09-25",
73407
+ api_version_date: "2026-09-29",
72591
73408
  data: {
72592
73409
  id: "idpf_xxxxxxxxxxxxxx"
72593
73410
  },
@@ -72709,7 +73526,7 @@ var native_spec_default = {
72709
73526
  example: {
72710
73527
  account_id: "biz_xxxxxxxxxxxxxx",
72711
73528
  api_version: "v1",
72712
- api_version_date: "2026-09-25",
73529
+ api_version_date: "2026-09-29",
72713
73530
  data: {
72714
73531
  access_level: "customer",
72715
73532
  account_id: "biz_xxxxxxxxxxxxxx",
@@ -72840,7 +73657,7 @@ var native_spec_default = {
72840
73657
  example: {
72841
73658
  account_id: "biz_xxxxxxxxxxxxxx",
72842
73659
  api_version: "v1",
72843
- api_version_date: "2026-09-25",
73660
+ api_version_date: "2026-09-29",
72844
73661
  data: {
72845
73662
  access_level: "customer",
72846
73663
  account_id: "biz_xxxxxxxxxxxxxx",
@@ -72971,7 +73788,7 @@ var native_spec_default = {
72971
73788
  example: {
72972
73789
  account_id: "biz_xxxxxxxxxxxxxx",
72973
73790
  api_version: "v1",
72974
- api_version_date: "2026-09-25",
73791
+ api_version_date: "2026-09-29",
72975
73792
  data: {
72976
73793
  account: {
72977
73794
  id: "biz_xxxxxxxxxxxxxx",
@@ -72979,6 +73796,7 @@ var native_spec_default = {
72979
73796
  route: "biz_xxxxxxxxxxxxxx",
72980
73797
  title: "Shine Time Auto Detailing"
72981
73798
  },
73799
+ billing_period_days: 30,
72982
73800
  cancel_at_period_end: false,
72983
73801
  canceled_at: null,
72984
73802
  cancellation_reason: null,
@@ -72994,6 +73812,7 @@ var native_spec_default = {
72994
73812
  plan_id: "plan_xxxxxxxxxxxxxx",
72995
73813
  product_id: "prod_xxxxxxxxxxxxxx",
72996
73814
  status: "active",
73815
+ updated_at: "2026-01-01T12:00:00.000Z",
72997
73816
  user_id: "user_xxxxxxxxxxxxxx"
72998
73817
  },
72999
73818
  id: "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
@@ -73107,7 +73926,7 @@ var native_spec_default = {
73107
73926
  example: {
73108
73927
  account_id: "biz_xxxxxxxxxxxxxx",
73109
73928
  api_version: "v1",
73110
- api_version_date: "2026-09-25",
73929
+ api_version_date: "2026-09-29",
73111
73930
  data: {
73112
73931
  account: {
73113
73932
  id: "biz_xxxxxxxxxxxxxx",
@@ -73115,6 +73934,7 @@ var native_spec_default = {
73115
73934
  route: "biz_xxxxxxxxxxxxxx",
73116
73935
  title: "Shine Time Auto Detailing"
73117
73936
  },
73937
+ billing_period_days: 30,
73118
73938
  cancel_at_period_end: true,
73119
73939
  canceled_at: "2026-01-01T12:00:00.000Z",
73120
73940
  cancellation_reason: "The monthly wash club is more than I can spend right now.",
@@ -73130,6 +73950,7 @@ var native_spec_default = {
73130
73950
  plan_id: "plan_xxxxxxxxxxxxxx",
73131
73951
  product_id: "prod_xxxxxxxxxxxxxx",
73132
73952
  status: "active",
73953
+ updated_at: "2026-01-01T12:00:00.000Z",
73133
73954
  user_id: "user_xxxxxxxxxxxxxx"
73134
73955
  },
73135
73956
  id: "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
@@ -73249,7 +74070,7 @@ var native_spec_default = {
73249
74070
  example: {
73250
74071
  account_id: "biz_xxxxxxxxxxxxxx",
73251
74072
  api_version: "v1",
73252
- api_version_date: "2026-09-25",
74073
+ api_version_date: "2026-09-29",
73253
74074
  data: {
73254
74075
  account: {
73255
74076
  id: "biz_xxxxxxxxxxxxxx",
@@ -73257,6 +74078,7 @@ var native_spec_default = {
73257
74078
  route: "biz_xxxxxxxxxxxxxx",
73258
74079
  title: "Shine Time Auto Detailing"
73259
74080
  },
74081
+ billing_period_days: 30,
73260
74082
  cancel_at_period_end: false,
73261
74083
  canceled_at: "2026-01-01T12:00:00.000Z",
73262
74084
  cancellation_reason: "Moving out of Austin \u2014 no mobile detailing at the new place.",
@@ -73272,6 +74094,7 @@ var native_spec_default = {
73272
74094
  plan_id: "plan_xxxxxxxxxxxxxx",
73273
74095
  product_id: "prod_xxxxxxxxxxxxxx",
73274
74096
  status: "canceled",
74097
+ updated_at: "2026-01-01T12:00:00.000Z",
73275
74098
  user_id: "user_xxxxxxxxxxxxxx"
73276
74099
  },
73277
74100
  id: "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
@@ -73385,7 +74208,7 @@ var native_spec_default = {
73385
74208
  example: {
73386
74209
  account_id: "biz_xxxxxxxxxxxxxx",
73387
74210
  api_version: "v1",
73388
- api_version_date: "2026-09-25",
74211
+ api_version_date: "2026-09-29",
73389
74212
  data: {
73390
74213
  account: {
73391
74214
  id: "biz_xxxxxxxxxxxxxx",
@@ -73393,6 +74216,7 @@ var native_spec_default = {
73393
74216
  route: "biz_xxxxxxxxxxxxxx",
73394
74217
  title: "Shine Time Auto Detailing"
73395
74218
  },
74219
+ billing_period_days: 30,
73396
74220
  cancel_at_period_end: false,
73397
74221
  canceled_at: null,
73398
74222
  cancellation_reason: null,
@@ -73408,6 +74232,7 @@ var native_spec_default = {
73408
74232
  plan_id: "plan_xxxxxxxxxxxxxx",
73409
74233
  product_id: "prod_xxxxxxxxxxxxxx",
73410
74234
  status: "trialing",
74235
+ updated_at: "2026-01-01T12:00:00.000Z",
73411
74236
  user_id: "user_xxxxxxxxxxxxxx"
73412
74237
  },
73413
74238
  id: "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
@@ -73527,7 +74352,7 @@ var native_spec_default = {
73527
74352
  example: {
73528
74353
  account_id: "biz_xxxxxxxxxxxxxx",
73529
74354
  api_version: "v1",
73530
- api_version_date: "2026-09-25",
74355
+ api_version_date: "2026-09-29",
73531
74356
  data: {
73532
74357
  account_id: "biz_xxxxxxxxxxxxxx",
73533
74358
  amount_after_fees: {
@@ -73561,6 +74386,7 @@ var native_spec_default = {
73561
74386
  product_id: "prod_xxxxxxxxxxxxxx",
73562
74387
  product_title: "Ceramic Coating Package",
73563
74388
  quantity: 1,
74389
+ sku: "CERAMIC-COAT-3YR",
73564
74390
  subtotal: {
73565
74391
  amount: "50.00",
73566
74392
  currency: "usd",
@@ -73797,7 +74623,7 @@ var native_spec_default = {
73797
74623
  example: {
73798
74624
  account_id: "biz_xxxxxxxxxxxxxx",
73799
74625
  api_version: "v1",
73800
- api_version_date: "2026-09-25",
74626
+ api_version_date: "2026-09-29",
73801
74627
  data: {
73802
74628
  account_id: "biz_xxxxxxxxxxxxxx",
73803
74629
  amount_after_fees: {
@@ -73831,6 +74657,7 @@ var native_spec_default = {
73831
74657
  product_id: "prod_xxxxxxxxxxxxxx",
73832
74658
  product_title: "Ceramic Coating Package",
73833
74659
  quantity: 1,
74660
+ sku: "CERAMIC-COAT-3YR",
73834
74661
  subtotal: {
73835
74662
  amount: "50.00",
73836
74663
  currency: "usd",
@@ -74067,7 +74894,7 @@ var native_spec_default = {
74067
74894
  example: {
74068
74895
  account_id: "biz_xxxxxxxxxxxxxx",
74069
74896
  api_version: "v1",
74070
- api_version_date: "2026-09-25",
74897
+ api_version_date: "2026-09-29",
74071
74898
  data: {
74072
74899
  account_id: "biz_xxxxxxxxxxxxxx",
74073
74900
  amount_after_fees: {
@@ -74101,6 +74928,7 @@ var native_spec_default = {
74101
74928
  product_id: "prod_xxxxxxxxxxxxxx",
74102
74929
  product_title: "Ceramic Coating Package",
74103
74930
  quantity: 1,
74931
+ sku: "CERAMIC-COAT-3YR",
74104
74932
  subtotal: {
74105
74933
  amount: "50.00",
74106
74934
  currency: "usd",
@@ -74337,7 +75165,7 @@ var native_spec_default = {
74337
75165
  example: {
74338
75166
  account_id: "biz_xxxxxxxxxxxxxx",
74339
75167
  api_version: "v1",
74340
- api_version_date: "2026-09-25",
75168
+ api_version_date: "2026-09-29",
74341
75169
  data: {
74342
75170
  account_id: "biz_xxxxxxxxxxxxxx",
74343
75171
  amount_after_fees: {
@@ -74371,6 +75199,7 @@ var native_spec_default = {
74371
75199
  product_id: "prod_xxxxxxxxxxxxxx",
74372
75200
  product_title: "Ceramic Coating Package",
74373
75201
  quantity: 1,
75202
+ sku: "CERAMIC-COAT-3YR",
74374
75203
  subtotal: {
74375
75204
  amount: "50.00",
74376
75205
  currency: "usd",
@@ -74607,7 +75436,7 @@ var native_spec_default = {
74607
75436
  example: {
74608
75437
  account_id: "biz_xxxxxxxxxxxxxx",
74609
75438
  api_version: "v1",
74610
- api_version_date: "2026-09-25",
75439
+ api_version_date: "2026-09-29",
74611
75440
  data: {
74612
75441
  account_id: "biz_xxxxxxxxxxxxxx",
74613
75442
  amount_after_fees: {
@@ -74641,6 +75470,7 @@ var native_spec_default = {
74641
75470
  product_id: "prod_xxxxxxxxxxxxxx",
74642
75471
  product_title: "Ceramic Coating Package",
74643
75472
  quantity: 1,
75473
+ sku: "CERAMIC-COAT-3YR",
74644
75474
  subtotal: {
74645
75475
  amount: "50.00",
74646
75476
  currency: "usd",
@@ -74871,7 +75701,7 @@ var native_spec_default = {
74871
75701
  example: {
74872
75702
  account_id: "biz_xxxxxxxxxxxxxx",
74873
75703
  api_version: "v1",
74874
- api_version_date: "2026-09-25",
75704
+ api_version_date: "2026-09-29",
74875
75705
  data: {
74876
75706
  account_id: "biz_xxxxxxxxxxxxxx",
74877
75707
  amount_after_fees: {
@@ -74905,6 +75735,7 @@ var native_spec_default = {
74905
75735
  product_id: "prod_xxxxxxxxxxxxxx",
74906
75736
  product_title: "Ceramic Coating Package",
74907
75737
  quantity: 1,
75738
+ sku: "CERAMIC-COAT-3YR",
74908
75739
  subtotal: {
74909
75740
  amount: "50.00",
74910
75741
  currency: "usd",
@@ -75147,7 +75978,7 @@ var native_spec_default = {
75147
75978
  example: {
75148
75979
  account_id: "biz_xxxxxxxxxxxxxx",
75149
75980
  api_version: "v1",
75150
- api_version_date: "2026-09-25",
75981
+ api_version_date: "2026-09-29",
75151
75982
  data: {
75152
75983
  account_id: "biz_xxxxxxxxxxxxxx",
75153
75984
  amount_after_fees: {
@@ -75181,6 +76012,7 @@ var native_spec_default = {
75181
76012
  product_id: "prod_xxxxxxxxxxxxxx",
75182
76013
  product_title: "Ceramic Coating Package",
75183
76014
  quantity: 1,
76015
+ sku: "CERAMIC-COAT-3YR",
75184
76016
  subtotal: {
75185
76017
  amount: "50.00",
75186
76018
  currency: "usd",
@@ -75417,7 +76249,7 @@ var native_spec_default = {
75417
76249
  example: {
75418
76250
  account_id: "biz_xxxxxxxxxxxxxx",
75419
76251
  api_version: "v1",
75420
- api_version_date: "2026-09-25",
76252
+ api_version_date: "2026-09-29",
75421
76253
  data: {
75422
76254
  amount: "10.0",
75423
76255
  created_at: "2026-01-01T12:00:00.000Z",
@@ -75805,7 +76637,7 @@ var native_spec_default = {
75805
76637
  example: {
75806
76638
  account_id: "biz_xxxxxxxxxxxxxx",
75807
76639
  api_version: "v1",
75808
- api_version_date: "2026-09-25",
76640
+ api_version_date: "2026-09-29",
75809
76641
  data: {
75810
76642
  amount: "10.0",
75811
76643
  created_at: "2026-01-01T12:00:00.000Z",
@@ -76190,7 +77022,7 @@ var native_spec_default = {
76190
77022
  example: {
76191
77023
  account_id: "biz_xxxxxxxxxxxxxx",
76192
77024
  api_version: "v1",
76193
- api_version_date: "2026-09-25",
77025
+ api_version_date: "2026-09-29",
76194
77026
  data: {
76195
77027
  amount: "10.0",
76196
77028
  created_at: "2026-01-01T12:00:00.000Z",
@@ -76571,7 +77403,7 @@ var native_spec_default = {
76571
77403
  example: {
76572
77404
  account_id: "biz_xxxxxxxxxxxxxx",
76573
77405
  api_version: "v1",
76574
- api_version_date: "2026-09-25",
77406
+ api_version_date: "2026-09-29",
76575
77407
  data: {
76576
77408
  account_reference: "4483",
76577
77409
  bank_verification_state: "no_data",
@@ -77027,7 +77859,7 @@ var native_spec_default = {
77027
77859
  example: {
77028
77860
  account_id: "biz_xxxxxxxxxxxxxx",
77029
77861
  api_version: "v1",
77030
- api_version_date: "2026-09-25",
77862
+ api_version_date: "2026-09-29",
77031
77863
  data: {
77032
77864
  account: {
77033
77865
  id: "biz_xxxxxxxxxxxxxx",
@@ -77324,7 +78156,7 @@ var native_spec_default = {
77324
78156
  example: {
77325
78157
  account_id: "biz_xxxxxxxxxxxxxx",
77326
78158
  api_version: "v1",
77327
- api_version_date: "2026-09-25",
78159
+ api_version_date: "2026-09-29",
77328
78160
  data: {
77329
78161
  account: {
77330
78162
  id: "biz_xxxxxxxxxxxxxx",
@@ -77621,7 +78453,7 @@ var native_spec_default = {
77621
78453
  example: {
77622
78454
  account_id: "biz_xxxxxxxxxxxxxx",
77623
78455
  api_version: "v1",
77624
- api_version_date: "2026-09-25",
78456
+ api_version_date: "2026-09-29",
77625
78457
  data: {
77626
78458
  account: {
77627
78459
  id: "biz_xxxxxxxxxxxxxx",
@@ -77918,7 +78750,7 @@ var native_spec_default = {
77918
78750
  example: {
77919
78751
  account_id: "biz_xxxxxxxxxxxxxx",
77920
78752
  api_version: "v1",
77921
- api_version_date: "2026-09-25",
78753
+ api_version_date: "2026-09-29",
77922
78754
  data: {
77923
78755
  account: {
77924
78756
  id: "biz_xxxxxxxxxxxxxx",
@@ -78070,7 +78902,7 @@ var native_spec_default = {
78070
78902
  example: {
78071
78903
  account_id: "biz_xxxxxxxxxxxxxx",
78072
78904
  api_version: "v1",
78073
- api_version_date: "2026-09-25",
78905
+ api_version_date: "2026-09-29",
78074
78906
  data: {
78075
78907
  account: {
78076
78908
  id: "biz_xxxxxxxxxxxxxx",
@@ -78222,7 +79054,7 @@ var native_spec_default = {
78222
79054
  example: {
78223
79055
  account_id: "biz_xxxxxxxxxxxxxx",
78224
79056
  api_version: "v1",
78225
- api_version_date: "2026-09-25",
79057
+ api_version_date: "2026-09-29",
78226
79058
  data: {
78227
79059
  account: {
78228
79060
  id: "biz_xxxxxxxxxxxxxx",
@@ -78374,7 +79206,7 @@ var native_spec_default = {
78374
79206
  example: {
78375
79207
  account_id: "biz_xxxxxxxxxxxxxx",
78376
79208
  api_version: "v1",
78377
- api_version_date: "2026-09-25",
79209
+ api_version_date: "2026-09-29",
78378
79210
  data: {
78379
79211
  account: {
78380
79212
  id: "biz_xxxxxxxxxxxxxx",
@@ -78526,7 +79358,7 @@ var native_spec_default = {
78526
79358
  example: {
78527
79359
  account_id: "biz_xxxxxxxxxxxxxx",
78528
79360
  api_version: "v1",
78529
- api_version_date: "2026-09-25",
79361
+ api_version_date: "2026-09-29",
78530
79362
  data: {
78531
79363
  account: {
78532
79364
  id: "biz_xxxxxxxxxxxxxx",
@@ -78678,7 +79510,7 @@ var native_spec_default = {
78678
79510
  example: {
78679
79511
  account_id: "biz_xxxxxxxxxxxxxx",
78680
79512
  api_version: "v1",
78681
- api_version_date: "2026-09-25",
79513
+ api_version_date: "2026-09-29",
78682
79514
  data: {
78683
79515
  account: {
78684
79516
  id: "biz_xxxxxxxxxxxxxx",
@@ -78707,6 +79539,7 @@ var native_spec_default = {
78707
79539
  product_id: "prod_xxxxxxxxxxxxxx",
78708
79540
  product_title: "Ceramic Coating Package",
78709
79541
  quantity: 1,
79542
+ sku: null,
78710
79543
  subtotal: null
78711
79544
  }
78712
79545
  ],
@@ -78837,7 +79670,7 @@ var native_spec_default = {
78837
79670
  example: {
78838
79671
  account_id: "biz_xxxxxxxxxxxxxx",
78839
79672
  api_version: "v1",
78840
- api_version_date: "2026-09-25",
79673
+ api_version_date: "2026-09-29",
78841
79674
  data: {
78842
79675
  account: {
78843
79676
  id: "biz_xxxxxxxxxxxxxx",
@@ -78866,6 +79699,7 @@ var native_spec_default = {
78866
79699
  product_id: "prod_xxxxxxxxxxxxxx",
78867
79700
  product_title: "Ceramic Coating Package",
78868
79701
  quantity: 1,
79702
+ sku: null,
78869
79703
  subtotal: null
78870
79704
  }
78871
79705
  ],
@@ -78996,7 +79830,7 @@ var native_spec_default = {
78996
79830
  example: {
78997
79831
  account_id: "biz_xxxxxxxxxxxxxx",
78998
79832
  api_version: "v1",
78999
- api_version_date: "2026-09-25",
79833
+ api_version_date: "2026-09-29",
79000
79834
  data: {
79001
79835
  account: {
79002
79836
  id: "biz_xxxxxxxxxxxxxx",
@@ -79025,6 +79859,7 @@ var native_spec_default = {
79025
79859
  product_id: "prod_xxxxxxxxxxxxxx",
79026
79860
  product_title: "Ceramic Coating Package",
79027
79861
  quantity: 1,
79862
+ sku: null,
79028
79863
  subtotal: null
79029
79864
  }
79030
79865
  ],
@@ -79155,7 +79990,7 @@ var native_spec_default = {
79155
79990
  example: {
79156
79991
  account_id: "biz_xxxxxxxxxxxxxx",
79157
79992
  api_version: "v1",
79158
- api_version_date: "2026-09-25",
79993
+ api_version_date: "2026-09-29",
79159
79994
  data: {
79160
79995
  account_id: "biz_xxxxxxxxxxxxxx",
79161
79996
  checkout_configuration_id: null,
@@ -79173,6 +80008,7 @@ var native_spec_default = {
79173
80008
  payment_method_type: "card",
79174
80009
  return_url: null,
79175
80010
  status: "canceled",
80011
+ three_ds_level: null,
79176
80012
  three_ds_verified: false,
79177
80013
  updated_at: "2026-01-01T12:00:00.000Z",
79178
80014
  user: {
@@ -79295,7 +80131,7 @@ var native_spec_default = {
79295
80131
  example: {
79296
80132
  account_id: "biz_xxxxxxxxxxxxxx",
79297
80133
  api_version: "v1",
79298
- api_version_date: "2026-09-25",
80134
+ api_version_date: "2026-09-29",
79299
80135
  data: {
79300
80136
  account_id: "biz_xxxxxxxxxxxxxx",
79301
80137
  checkout_configuration_id: null,
@@ -79310,6 +80146,7 @@ var native_spec_default = {
79310
80146
  payment_method_type: "card",
79311
80147
  return_url: null,
79312
80148
  status: "requires_action",
80149
+ three_ds_level: null,
79313
80150
  three_ds_verified: false,
79314
80151
  updated_at: "2026-01-01T12:00:00.000Z",
79315
80152
  user: {
@@ -79438,7 +80275,7 @@ var native_spec_default = {
79438
80275
  example: {
79439
80276
  account_id: "biz_xxxxxxxxxxxxxx",
79440
80277
  api_version: "v1",
79441
- api_version_date: "2026-09-25",
80278
+ api_version_date: "2026-09-29",
79442
80279
  data: {
79443
80280
  account_id: "biz_xxxxxxxxxxxxxx",
79444
80281
  checkout_configuration_id: null,
@@ -79494,6 +80331,7 @@ var native_spec_default = {
79494
80331
  payment_method_type: "card",
79495
80332
  return_url: null,
79496
80333
  status: "succeeded",
80334
+ three_ds_level: null,
79497
80335
  three_ds_verified: false,
79498
80336
  updated_at: "2026-01-01T12:00:00.000Z",
79499
80337
  user: {
@@ -79616,7 +80454,7 @@ var native_spec_default = {
79616
80454
  example: {
79617
80455
  account_id: "biz_xxxxxxxxxxxxxx",
79618
80456
  api_version: "v1",
79619
- api_version_date: "2026-09-25",
80457
+ api_version_date: "2026-09-29",
79620
80458
  data: {
79621
80459
  account_id: "biz_xxxxxxxxxxxxxx",
79622
80460
  carrier: "ups",
@@ -79740,7 +80578,7 @@ var native_spec_default = {
79740
80578
  example: {
79741
80579
  account_id: "biz_xxxxxxxxxxxxxx",
79742
80580
  api_version: "v1",
79743
- api_version_date: "2026-09-25",
80581
+ api_version_date: "2026-09-29",
79744
80582
  data: {
79745
80583
  account_id: "biz_xxxxxxxxxxxxxx",
79746
80584
  carrier: "ups",
@@ -79864,7 +80702,7 @@ var native_spec_default = {
79864
80702
  example: {
79865
80703
  account_id: "biz_xxxxxxxxxxxxxx",
79866
80704
  api_version: "v1",
79867
- api_version_date: "2026-09-25",
80705
+ api_version_date: "2026-09-29",
79868
80706
  data: {
79869
80707
  account: {
79870
80708
  id: "biz_xxxxxxxxxxxxxx",
@@ -79885,7 +80723,7 @@ var native_spec_default = {
79885
80723
  object: "ledger_activity",
79886
80724
  payment: {
79887
80725
  amount: {
79888
- amount: "-2.50",
80726
+ amount: "-1234.56",
79889
80727
  currency: "usd",
79890
80728
  decimals: 2,
79891
80729
  display_decimals: 2
@@ -79930,8 +80768,23 @@ var native_spec_default = {
79930
80768
  chain: "plasma",
79931
80769
  claim_url: "https://whop.com/claim",
79932
80770
  created_at: "2026-01-01T12:00:00.000Z",
80771
+ created_by_user: {
80772
+ id: "user_xxxxxxxxxxxxxx",
80773
+ name: "Dana Whitfield",
80774
+ profile_picture: {
80775
+ url: "https://ui-avatars.com/api/"
80776
+ },
80777
+ username: "danawhitfield"
80778
+ },
79933
80779
  estimated_arrival: "2026-01-01T12:00:00.000Z",
80780
+ fee_amount: {
80781
+ amount: "-1234.56",
80782
+ currency: "usd",
80783
+ decimals: 2,
80784
+ display_decimals: 2
80785
+ },
79934
80786
  fee_kind: "swap",
80787
+ fee_type: "exclusive",
79935
80788
  from_amount: "502.51",
79936
80789
  from_currency: "usdt",
79937
80790
  id: "airdrp_xxxxxxxxxxxxxx",
@@ -79939,13 +80792,19 @@ var native_spec_default = {
79939
80792
  object: "airdrop_link",
79940
80793
  payer_name: "MassPay",
79941
80794
  payment_amount: {
79942
- amount: "-2.50",
80795
+ amount: "-1234.56",
79943
80796
  currency: "usd",
79944
80797
  decimals: 2,
79945
80798
  display_decimals: 2
79946
80799
  },
79947
80800
  payment_method_type: "some_string",
79948
80801
  payment_processor: "some_string",
80802
+ payout_amount: {
80803
+ amount: "-1234.56",
80804
+ currency: "usd",
80805
+ decimals: 2,
80806
+ display_decimals: 2
80807
+ },
79949
80808
  payout_destination: {
79950
80809
  icon_url: "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/ach-activity-icon",
79951
80810
  payer_name: "ACH Bank Deposit"
@@ -79957,6 +80816,7 @@ var native_spec_default = {
79957
80816
  status: "fully_claimed",
79958
80817
  to_amount: "500.0",
79959
80818
  to_currency: "usd",
80819
+ trace_code: null,
79960
80820
  tx_hash: "0x5d84a1c7e2f9b036d48c5a7e1b9f2d6c3a8e0b4f7c1d9e5a2b6f8c0d3e7a1b52"
79961
80821
  },
79962
80822
  usd_amount: "23.75",
@@ -80074,7 +80934,7 @@ var native_spec_default = {
80074
80934
  example: {
80075
80935
  account_id: "biz_xxxxxxxxxxxxxx",
80076
80936
  api_version: "v1",
80077
- api_version_date: "2026-09-25",
80937
+ api_version_date: "2026-09-29",
80078
80938
  data: {
80079
80939
  amount: 250,
80080
80940
  created_at: "2026-01-01T12:00:00.000Z",
@@ -80461,7 +81321,7 @@ var native_spec_default = {
80461
81321
  example: {
80462
81322
  account_id: "biz_xxxxxxxxxxxxxx",
80463
81323
  api_version: "v1",
80464
- api_version_date: "2026-09-25",
81324
+ api_version_date: "2026-09-29",
80465
81325
  data: {
80466
81326
  amount: 250,
80467
81327
  created_at: "2026-01-01T12:00:00.000Z",
@@ -80848,7 +81708,7 @@ var native_spec_default = {
80848
81708
  example: {
80849
81709
  account_id: "biz_xxxxxxxxxxxxxx",
80850
81710
  api_version: "v1",
80851
- api_version_date: "2026-09-25",
81711
+ api_version_date: "2026-09-29",
80852
81712
  data: {
80853
81713
  amount: 10,
80854
81714
  created_at: "2026-01-01T12:00:00.000Z",
@@ -81201,7 +82061,7 @@ var native_spec_default = {
81201
82061
  name: "Api-Version-Date",
81202
82062
  required: false,
81203
82063
  schema: {
81204
- example: "2026-09-25",
82064
+ example: "2026-09-29",
81205
82065
  type: "string"
81206
82066
  }
81207
82067
  },
@@ -81292,6 +82152,11 @@ var native_spec_default = {
81292
82152
  schemas: {
81293
82153
  Account: {
81294
82154
  properties: {
82155
+ ads_spend_usd: {
82156
+ description: "Lifetime charged ad spend for the account, in USD. Computed only on `list` for callers with `stats:read` on the account; `null` otherwise.",
82157
+ example: 0,
82158
+ type: ["number", "null"]
82159
+ },
81295
82160
  balances: {
81296
82161
  items: {
81297
82162
  $ref: "#/components/schemas/AccountBalanceToken",
@@ -81529,6 +82394,13 @@ var native_spec_default = {
81529
82394
  }
81530
82395
  ]
81531
82396
  },
82397
+ platform_credits: {
82398
+ items: {
82399
+ $ref: "#/components/schemas/Money",
82400
+ description: "Whop-issued platform credits per currency, read from the balance cache. Credits can only be spent on eligible Whop products such as Whop Ads, can never be withdrawn, and are not included in `balances` or `total_usd`. Empty when the account holds none or `total_usd` is `null`."
82401
+ },
82402
+ type: "array"
82403
+ },
81532
82404
  privacy_policy: {
81533
82405
  description: "The account's privacy policy document, or `null` if they have not published one.",
81534
82406
  oneOf: [
@@ -81642,8 +82514,8 @@ var native_spec_default = {
81642
82514
  type: ["string", "null"]
81643
82515
  },
81644
82516
  status_reason: {
81645
- description: "Why the account was suspended, as the label shown to the account owner, such as `Suspended - Fraudulent payment activity`. Computed on `retrieve`, `me`, and `suspend`; `null` otherwise, when `status` is not `suspended`, and when the suspension was recorded without a reason.",
81646
- example: "Suspended - Fraudulent payment activity",
82517
+ description: "Why the account was suspended, as the label shown to the account owner, such as `Suspended - Fraudulent activity`. Computed on `retrieve`, `me`, and `suspend`; `null` otherwise, when `status` is not `suspended`, and when the suspension was recorded without a reason.",
82518
+ example: "Suspended - Fraudulent activity",
81647
82519
  type: ["string", "null"]
81648
82520
  },
81649
82521
  store_page_config: {
@@ -81809,6 +82681,7 @@ var native_spec_default = {
81809
82681
  "status",
81810
82682
  "status_reason",
81811
82683
  "volume_usd",
82684
+ "ads_spend_usd",
81812
82685
  "capabilities",
81813
82686
  "payment_controls",
81814
82687
  "cards",
@@ -81823,6 +82696,7 @@ var native_spec_default = {
81823
82696
  "tax_collection_enabled_states",
81824
82697
  "total_usd",
81825
82698
  "balances",
82699
+ "platform_credits",
81826
82700
  "stablecoin_rails",
81827
82701
  "economic_intelligence",
81828
82702
  "can_transfer_pending_balance_to_children",
@@ -83634,6 +84508,42 @@ var native_spec_default = {
83634
84508
  source: "default",
83635
84509
  unadjustable_reason: "not_permitted"
83636
84510
  },
84511
+ boleto: {
84512
+ adjustable: false,
84513
+ category: "payments",
84514
+ default: {
84515
+ fixed: {
84516
+ amount: "0.30",
84517
+ currency: "usd",
84518
+ decimals: 2,
84519
+ display_decimals: 2
84520
+ },
84521
+ percentage: 3.9
84522
+ },
84523
+ ends_at: null,
84524
+ fixed: {
84525
+ amount: "0.30",
84526
+ currency: "usd",
84527
+ decimals: 2,
84528
+ display_decimals: 2
84529
+ },
84530
+ maximum: null,
84531
+ minimum: null,
84532
+ percentage: 3.9,
84533
+ region: "br",
84534
+ regions: {},
84535
+ reset: {
84536
+ fixed: {
84537
+ amount: "0.30",
84538
+ currency: "usd",
84539
+ decimals: 2,
84540
+ display_decimals: 2
84541
+ },
84542
+ percentage: 3.9
84543
+ },
84544
+ source: "default",
84545
+ unadjustable_reason: "not_permitted"
84546
+ },
83637
84547
  bre_b: {
83638
84548
  adjustable: false,
83639
84549
  category: "payments",
@@ -85192,7 +86102,7 @@ var native_spec_default = {
85192
86102
  },
85193
86103
  reward_amount: {
85194
86104
  $ref: "#/components/schemas/Money",
85195
- description: "USD balance credit for this reward. Uses the saved grant amount once fulfillment has started."
86105
+ description: "USD amount credited for this reward. Uses the saved grant amount once fulfillment has started."
85196
86106
  },
85197
86107
  status: {
85198
86108
  description: "This account's reward state. Credited requires a posted ledger entry; processing includes a met requirement awaiting fulfillment. Reversing and reversed reflect a subsequent reward reversal.",
@@ -88846,9 +89756,11 @@ var native_spec_default = {
88846
89756
  "2026-09-23",
88847
89757
  "2026-09-24",
88848
89758
  "2026-09-24-1",
88849
- "2026-09-25"
89759
+ "2026-09-25",
89760
+ "2026-09-28",
89761
+ "2026-09-29"
88850
89762
  ],
88851
- example: "2026-09-25",
89763
+ example: "2026-09-29",
88852
89764
  type: "string"
88853
89765
  },
88854
89766
  created_at: {
@@ -92081,7 +92993,7 @@ var native_spec_default = {
92081
92993
  type: ["string", "null"]
92082
92994
  },
92083
92995
  status: {
92084
- description: "Where the dispute stands. `needs_response` is awaiting evidence, `under_review` is with the processor, `won` returned the funds to the seller, `lost` returned them to the customer, and `closed` ended without a ruling. The `warning_` statuses are the same stages for an inquiry, which moves no funds. A dispute past its `evidence_due_at` reports `under_review` \u2014 the window to respond has closed.",
92996
+ description: "Where the dispute stands. `needs_response` is awaiting evidence, `under_review` is with the processor, `won` returned the funds to the seller, `lost` returned them to the customer, and `prevented` means the customer was refunded before any ruling, so it settles like `lost`. The `warning_` statuses are the same stages for an inquiry, which moves no funds. A dispute past its `evidence_due_at` reports `under_review` \u2014 the window to respond has closed.",
92085
92997
  enum: [
92086
92998
  "needs_response",
92087
92999
  "warning_needs_response",
@@ -92089,7 +93001,7 @@ var native_spec_default = {
92089
93001
  "warning_under_review",
92090
93002
  "won",
92091
93003
  "lost",
92092
- "closed",
93004
+ "prevented",
92093
93005
  "warning_closed"
92094
93006
  ],
92095
93007
  example: "under_review",
@@ -92776,14 +93688,19 @@ var native_spec_default = {
92776
93688
  example: "biz_xxxxxxxxxxxxxx",
92777
93689
  type: ["string", "null"]
92778
93690
  },
93691
+ acknowledged_at: {
93692
+ description: "When the executed run was first marked as seen, as an ISO 8601 timestamp, or `null` if it has not been.",
93693
+ example: "2026-01-01T12:00:00.000Z",
93694
+ type: ["string", "null"]
93695
+ },
92779
93696
  action_type: {
92780
93697
  description: "Type of action recommended, or `null` when no type is assigned. New values may be added; handle unknown types gracefully.",
92781
93698
  example: "scale_winning_ads",
92782
93699
  type: ["string", "null"]
92783
93700
  },
92784
93701
  ai_chat_id: {
92785
- description: "The chat to resume after its initial message is accepted, or null before a chat is ready.",
92786
- example: null,
93702
+ description: "The chat that ran the recommendation, shown only to the user who ran it, or `null` otherwise.",
93703
+ example: "aich_xxxxxxxxxxxxxx",
92787
93704
  type: ["string", "null"]
92788
93705
  },
92789
93706
  created_at: {
@@ -92792,7 +93709,7 @@ var native_spec_default = {
92792
93709
  type: ["string", "null"]
92793
93710
  },
92794
93711
  executed_at: {
92795
- description: "When the recommendation was approved, as an ISO 8601 timestamp, or `null` if it has not been approved.",
93712
+ description: "When the recommendation was carried out, as an ISO 8601 timestamp, or `null` if it has not been.",
92796
93713
  example: "2026-01-01T12:00:00.000Z",
92797
93714
  type: ["string", "null"]
92798
93715
  },
@@ -92813,6 +93730,13 @@ var native_spec_default = {
92813
93730
  example: "more sales from ads",
92814
93731
  type: ["string", "null"]
92815
93732
  },
93733
+ inputs: {
93734
+ items: {
93735
+ $ref: "#/components/schemas/EconomicIntelligenceInput",
93736
+ description: "Decisions this recommendation leaves to you. Pick one option or write your own for each before it runs; empty when there is nothing to decide."
93737
+ },
93738
+ type: "array"
93739
+ },
92816
93740
  prompt: {
92817
93741
  description: "Step-by-step instructions for Whop AI, or `null` when no instructions are available.",
92818
93742
  example: "Create a 20% off promo code for my members.",
@@ -92823,6 +93747,26 @@ var native_spec_default = {
92823
93747
  example: "Capped 9 of 14 days.",
92824
93748
  type: ["string", "null"]
92825
93749
  },
93750
+ result_url: {
93751
+ description: "Where to view what the run produced, such as the published website or created product, or `null` when the result is only in the chat.",
93752
+ example: "https://atlas.whop.site/",
93753
+ type: ["string", "null"]
93754
+ },
93755
+ run_by_user_id: {
93756
+ description: "The user who started the run, prefixed `user_`, or `null` if it has not run or was started without a user, such as with an API key.",
93757
+ example: "user_xxxxxxxxxxxxxx",
93758
+ type: ["string", "null"]
93759
+ },
93760
+ run_ended_at: {
93761
+ description: "When Whop AI's run ended, whether executed or incomplete, as an ISO 8601 timestamp, or `null` if it has not ended.",
93762
+ example: "2026-01-01T12:00:00.000Z",
93763
+ type: ["string", "null"]
93764
+ },
93765
+ run_started_at: {
93766
+ description: "When Whop AI started carrying out the recommendation, as an ISO 8601 timestamp, or `null` if it has not run.",
93767
+ example: "2026-01-01T12:00:00.000Z",
93768
+ type: ["string", "null"]
93769
+ },
92826
93770
  sentiment: {
92827
93771
  description: "How the user rated this recommendation, or `null` if they have not rated it",
92828
93772
  enum: ["positive", "negative", null],
@@ -92830,9 +93774,17 @@ var native_spec_default = {
92830
93774
  type: ["string", "null"]
92831
93775
  },
92832
93776
  status: {
92833
- description: "`queued` when awaiting generation; `pending` while generating; `ready` when available for approval; `executed` when approved; `superseded` when rejected or replaced.",
92834
- enum: ["queued", "pending", "ready", "executed", "superseded"],
92835
- example: "ready",
93777
+ description: "`queued` when awaiting generation; `pending` while generating; `ready` when available to run; `running` while Whop AI carries it out; `executed` when carried out; `incomplete` when Whop AI's run ended without carrying it out; `superseded` when rejected or replaced.",
93778
+ enum: [
93779
+ "queued",
93780
+ "pending",
93781
+ "ready",
93782
+ "running",
93783
+ "executed",
93784
+ "incomplete",
93785
+ "superseded"
93786
+ ],
93787
+ example: "executed",
92836
93788
  type: "string"
92837
93789
  },
92838
93790
  superseded_at: {
@@ -92864,17 +93816,57 @@ var native_spec_default = {
92864
93816
  "prompt",
92865
93817
  "reasoning",
92866
93818
  "expected_tool_calls",
93819
+ "inputs",
92867
93820
  "input",
92868
93821
  "status",
92869
93822
  "executed_at",
92870
93823
  "superseded_at",
93824
+ "run_started_at",
93825
+ "run_ended_at",
93826
+ "run_by_user_id",
93827
+ "result_url",
92871
93828
  "ai_chat_id",
92872
93829
  "created_at",
92873
93830
  "sentiment",
92874
- "user_feedback"
93831
+ "user_feedback",
93832
+ "acknowledged_at"
92875
93833
  ],
92876
93834
  type: "object"
92877
93835
  },
93836
+ EconomicIntelligenceInput: {
93837
+ properties: {
93838
+ answer: {
93839
+ description: "What Whop AI ran with: one of the options or your own text. `null` until a run starts.",
93840
+ example: null,
93841
+ type: ["string", "null"]
93842
+ },
93843
+ id: {
93844
+ description: "Identifies the input when you answer it.",
93845
+ example: "audience",
93846
+ type: "string"
93847
+ },
93848
+ label: {
93849
+ description: "What you are choosing, such as the daily ad budget.",
93850
+ example: "Guide audience",
93851
+ type: "string"
93852
+ },
93853
+ options: {
93854
+ items: {
93855
+ description: "Three suggested values, strongest first. You can answer with one of them or your own text.",
93856
+ example: "Daily drivers",
93857
+ type: "string"
93858
+ },
93859
+ type: "array"
93860
+ },
93861
+ template: {
93862
+ description: "A plan sentence with one {answer} blank to fill with the selected answer.",
93863
+ example: "Guide audience: {answer}",
93864
+ type: "string"
93865
+ }
93866
+ },
93867
+ required: ["id", "label", "template", "options", "answer"],
93868
+ type: "object"
93869
+ },
92878
93870
  EconomicIntelligenceOperation: {
92879
93871
  properties: {
92880
93872
  description: {
@@ -93743,144 +94735,302 @@ var native_spec_default = {
93743
94735
  line_type: {
93744
94736
  description: "The ledger line category this activity was posted under.",
93745
94737
  enum: [
93746
- "account_settlement",
93747
- "ad_budget_release",
93748
- "ad_campaign_budget",
93749
- "ad_publisher_payout",
93750
- "ad_publisher_payout_received",
93751
- "ad_spend_charge",
93752
- "affiliate_fee",
93753
- "airdrop",
93754
- "airdrop_link_created",
93755
- "airdrop_link_redeemed",
93756
- "airdrop_link_returned",
93757
- "airdrop_reversal",
93758
- "application_fee",
93759
- "application_fee_payout",
93760
- "balance_reservation",
93761
- "balance_reservation_reversal",
93762
- "bank_transfer",
94738
+ "psp_payment_receivable",
94739
+ "payment_gross",
94740
+ "topup",
94741
+ "topup_fee",
94742
+ "payment_gross_reversal",
94743
+ "topup_reversal",
94744
+ "payment_refund",
94745
+ "payment_refund_reversal",
94746
+ "platform_balance_payment",
94747
+ "platform_balance_payment_refund",
94748
+ "ad_spend_purchase",
94749
+ "psp_refund_payable",
94750
+ "passthrough_gmv",
94751
+ "passthrough_gmv_offset",
94752
+ "installment_default",
94753
+ "aggregated_fee",
94754
+ "payment_processing_fixed_fee",
94755
+ "payment_processing_percentage_fee",
93763
94756
  "billing_percentage_fee",
93764
- "buyer_fee",
93765
- "card_interchange",
93766
- "card_load_deposit",
93767
- "card_load_transfer",
93768
- "card_spend_authorization",
93769
- "card_spend_authorization_void",
93770
- "card_spend_refund",
93771
- "card_unload_deposit",
93772
- "card_unload_transfer",
93773
- "cashback",
93774
- "cashback_funding",
93775
- "company_referral",
93776
- "connected_account_negative_balance",
93777
94757
  "cross_border_percentage_fee",
93778
- "currency_conversion_incoming",
93779
- "currency_conversion_outgoing",
93780
- "dispute_alert_fee",
93781
- "dispute_hold_adjustment",
93782
- "dispute_representment_fee",
93783
- "economic_intelligence_percentage_fee",
93784
- "external_card_load_deposit",
93785
- "fraud_prevention_fee",
93786
94758
  "fx_percentage_fee",
94759
+ "orchestration_percentage_fee",
94760
+ "revshare_percentage_fee",
94761
+ "stripe_domestic_processing_fee",
94762
+ "stripe_international_processing_fee",
94763
+ "three_ds_fixed_fee",
94764
+ "whop_processing_fee",
94765
+ "economic_intelligence_percentage_fee",
93787
94766
  "high_risk_merchant_fee",
93788
- "installment_default",
93789
- "internal_balance_transfer_incoming",
93790
- "internal_balance_transfer_outgoing",
94767
+ "fraud_prevention_fee",
94768
+ "buyer_fee",
94769
+ "sales_tax_fee",
94770
+ "payout_fee",
94771
+ "affiliate_fee",
94772
+ "marketplace_affiliate_fee",
94773
+ "application_fee",
94774
+ "platform_markup_fee",
94775
+ "platform_markup_fee_payout",
94776
+ "sales_tax_remittance",
94777
+ "sales_tax_remittance_reversal",
94778
+ "sales_tax_collected",
94779
+ "sales_tax_collected_reversal",
94780
+ "sales_tax_remitted",
94781
+ "payment_dispute",
94782
+ "payment_dispute_adjustment",
94783
+ "payment_dispute_fee",
94784
+ "payment_dispute_reversal",
94785
+ "platform_covered_dispute",
94786
+ "dispute_alert_fee",
94787
+ "dispute_representment_fee",
94788
+ "dispute_hold_adjustment",
94789
+ "dispute_hold_blocked",
94790
+ "psp_dispute_payable",
94791
+ "withdrawal",
94792
+ "withdrawal_payable",
94793
+ "withdrawal_payable_reversal",
94794
+ "withdrawal_fee",
94795
+ "withdrawal_fee_reversal",
94796
+ "withdrawal_markup_fee",
94797
+ "withdrawal_markup_fee_reversal",
94798
+ "withdrawal_markup_fee_payout",
94799
+ "withdrawal_markup_fee_payout_reversal",
94800
+ "withdrawal_reversal",
94801
+ "withdrawal_clawback",
94802
+ "withdrawal_clawback_reversal",
94803
+ "payout_receivable",
94804
+ "withdrawal_reclassification",
94805
+ "clawback_receivable",
94806
+ "clawback_receivable_reversal",
94807
+ "treasury_payin",
94808
+ "treasury_payin_receivable",
94809
+ "onchain_deposit",
94810
+ "onchain_deposit_offset",
94811
+ "onchain_withdrawal",
94812
+ "onchain_withdrawal_offset",
94813
+ "trading_account_withdrawal",
94814
+ "trading_account_withdrawal_offset",
94815
+ "trading_account_deposit",
94816
+ "trading_account_deposit_offset",
94817
+ "onchain_wallet_transfer_outgoing",
94818
+ "onchain_wallet_transfer_incoming",
94819
+ "onchain_swap_source",
94820
+ "onchain_swap_target",
94821
+ "onchain_swap_offset",
94822
+ "whop_swap_fee_received",
94823
+ "swap_fee",
93791
94824
  "internal_withdrawal",
93792
- "internal_withdrawal_complete",
94825
+ "internal_withdrawal_reversal",
94826
+ "internal_withdrawal_payable",
94827
+ "internal_withdrawal_payable_reversal",
93793
94828
  "internal_withdrawal_fee",
93794
94829
  "internal_withdrawal_fee_reversal",
93795
- "internal_withdrawal_in_transit",
93796
- "internal_withdrawal_in_transit_reversal",
93797
94830
  "internal_withdrawal_markup_fee",
94831
+ "internal_withdrawal_markup_fee_reversal",
93798
94832
  "internal_withdrawal_markup_fee_payout",
93799
94833
  "internal_withdrawal_markup_fee_payout_reversal",
93800
- "internal_withdrawal_markup_fee_reversal",
93801
- "internal_withdrawal_reversal",
93802
- "legacy_crypto_payment",
93803
- "legacy_payment",
93804
- "legacy_payment_refund",
93805
- "license_sale",
93806
- "license_sale_commission",
93807
- "license_sale_revenue",
93808
- "marketplace_affiliate_fee",
93809
- "misc_purchase",
93810
- "misc_refund",
93811
- "misc_reversal",
94834
+ "internal_withdrawal_in_transit",
94835
+ "internal_withdrawal_complete",
94836
+ "internal_withdrawal_in_transit_reversal",
94837
+ "card_load_transfer",
94838
+ "card_load_deposit",
94839
+ "card_unload_transfer",
94840
+ "card_unload_deposit",
94841
+ "external_card_load_deposit",
94842
+ "external_card_load_offset",
94843
+ "card_spend_authorization",
94844
+ "card_spend_authorization_hold",
94845
+ "card_spend_capture",
94846
+ "card_spend_capture_offset",
94847
+ "card_spend_authorization_void",
94848
+ "card_spend_authorization_void_release",
94849
+ "card_spend_refund",
94850
+ "card_spend_refund_offset",
94851
+ "cashback",
94852
+ "cashback_expense",
94853
+ "cashback_funding",
94854
+ "card_interchange_receivable",
94855
+ "card_interchange",
94856
+ "account_settlement",
94857
+ "currency_conversion_outgoing",
94858
+ "currency_conversion_incoming",
94859
+ "balance_reservation",
94860
+ "balance_reservation_hold",
94861
+ "balance_reservation_reversal",
94862
+ "balance_reservation_release",
94863
+ "bad_debt_offset",
94864
+ "bad_debt_expense",
94865
+ "platform_credits_payment",
94866
+ "platform_credits_payment_refund",
94867
+ "platform_credits_granted",
94868
+ "platform_balance_transfer_outgoing",
94869
+ "platform_balance_transfer_incoming",
94870
+ "internal_balance_transfer_outgoing",
94871
+ "internal_balance_transfer_incoming",
94872
+ "platform_balance_transfer_fee",
94873
+ "connected_account_clawback",
94874
+ "connected_account_negative_balance",
94875
+ "ad_publisher_payout",
94876
+ "ad_publisher_payout_received",
94877
+ "company_referral",
94878
+ "platform_affiliate_payment",
94879
+ "platform_affiliate_payment_reversal",
93812
94880
  "onboarding_reward",
93813
- "onchain_deposit",
93814
- "onchain_swap_source",
93815
- "onchain_swap_target",
93816
- "onchain_wallet_transfer_incoming",
93817
- "onchain_wallet_transfer_outgoing",
93818
- "onchain_withdrawal",
93819
- "orchestration_percentage_fee",
93820
94881
  "partner_grant_reward",
93821
- "passthrough_gmv",
93822
- "payment_dispute",
93823
- "payment_dispute_adjustment",
93824
- "payment_dispute_fee",
93825
- "payment_dispute_reversal",
93826
- "payment_gross",
93827
- "payment_gross_reversal",
93828
- "payment_processing_fixed_fee",
93829
- "payment_processing_percentage_fee",
93830
- "payment_referral",
93831
- "payment_referral_refund",
93832
- "payment_referral_reversal",
93833
- "payment_refund",
93834
- "payment_refund_reversal",
93835
94882
  "payment_revshare",
93836
94883
  "payment_revshare_payout",
93837
- "payment_revshare_refund",
93838
94884
  "payment_revshare_reversal",
93839
- "payout_fee",
93840
- "platform_affiliate_payment",
93841
- "platform_affiliate_payment_reversal",
93842
- "platform_balance_payment",
93843
- "platform_balance_payment_refund",
93844
- "platform_balance_transfer_fee",
93845
- "platform_balance_transfer_incoming",
93846
- "platform_balance_transfer_outgoing",
93847
- "platform_covered_dispute",
93848
- "platform_credits_granted",
93849
- "platform_credits_payment",
93850
- "platform_credits_payment_refund",
94885
+ "payment_revshare_refund",
94886
+ "payment_referral",
94887
+ "payment_referral_payable",
94888
+ "payment_referral_reversal",
94889
+ "payment_referral_refund",
94890
+ "application_fee_payable",
94891
+ "application_fee_payout",
93851
94892
  "platform_earning",
93852
- "platform_markup_fee",
93853
- "platform_markup_fee_payout",
93854
- "promo_reversal",
93855
- "referral_bonus",
94893
+ "airdrop",
94894
+ "airdrop_reversal",
94895
+ "airdrop_expense",
94896
+ "airdrop_expense_reversal",
94897
+ "airdrop_link_funded",
94898
+ "airdrop_link_canceled",
94899
+ "airdrop_link_returned",
94900
+ "airdrop_link_claimed",
94901
+ "airdrop_link_redeemed",
94902
+ "airdrop_link_created",
93856
94903
  "resolution_center_refund",
93857
- "revshare_percentage_fee",
93858
- "sales_tax_fee",
93859
- "sales_tax_remittance",
93860
- "sales_tax_remittance_reversal",
94904
+ "ad_funding_disbursement",
94905
+ "ad_campaign_budget",
94906
+ "ads_card_spread",
94907
+ "ad_spend_charge",
94908
+ "ad_network_cost",
94909
+ "ad_spend_margin",
94910
+ "ad_income_expense",
94911
+ "ad_income_receipt",
94912
+ "ad_budget_release",
94913
+ "ad_network_settlement",
94914
+ "ad_balance_funding_receipt",
94915
+ "misc_reversal",
94916
+ "fx_gain_loss",
94917
+ "fx_markup",
94918
+ "legacy_crypto_payment",
94919
+ "legacy_payment",
94920
+ "legacy_payment_refund",
94921
+ "license_sale",
94922
+ "license_sale_commission",
94923
+ "license_sale_revenue",
93861
94924
  "software_rental_revshare",
93862
94925
  "software_rental_transaction",
93863
- "stripe_domestic_processing_fee",
93864
- "stripe_international_processing_fee",
93865
- "swap_fee",
93866
- "three_ds_fixed_fee",
93867
- "topup",
93868
- "topup_fee",
93869
- "topup_reversal",
93870
- "treasury_payin",
93871
- "whop_processing_fee",
93872
- "withdrawal",
93873
- "withdrawal_clawback",
93874
- "withdrawal_clawback_reversal",
93875
- "withdrawal_fee",
93876
- "withdrawal_fee_reversal",
93877
- "withdrawal_markup_fee",
93878
- "withdrawal_markup_fee_payout",
93879
- "withdrawal_markup_fee_payout_reversal",
93880
- "withdrawal_markup_fee_reversal",
93881
- "withdrawal_reclassification",
93882
- "withdrawal_reversal",
94926
+ "misc_purchase",
94927
+ "misc_refund",
94928
+ "referral_bonus",
94929
+ "promo_reversal",
94930
+ "payment_receivable_settlement",
94931
+ "platform_earning_settlement",
94932
+ "platform_earning_unreconciled_clearing",
94933
+ "payment_receivable_clearing",
94934
+ "payment_receivable_reversal",
94935
+ "payment_unreconciled_clearing",
94936
+ "payment_unreconciled_reversal",
94937
+ "settlement_shortfall_loss",
94938
+ "fx_settlement_gain_loss",
94939
+ "settlement_rounding_variance",
94940
+ "psp_payout_settlement",
94941
+ "psp_payout_deposit",
94942
+ "psp_payout_receivable",
94943
+ "psp_payout_receivable_clearing",
94944
+ "payout_unreconciled_clearing",
94945
+ "psp_currency_conversion_outgoing",
94946
+ "psp_currency_conversion_incoming",
94947
+ "psp_currency_conversion_receivable",
94948
+ "psp_currency_conversion_receivable_clearing",
94949
+ "psp_fx_adjustment",
94950
+ "refund_settlement",
94951
+ "refund_settlement_reversal",
94952
+ "refund_payable_clearing",
94953
+ "refund_payable_reversal",
94954
+ "refund_unreconciled_clearing",
94955
+ "refund_unreconciled_reversal",
94956
+ "psp_account_debit",
94957
+ "payment_refund_fee",
94958
+ "dispute_settlement",
94959
+ "dispute_settlement_reversal",
94960
+ "dispute_payable_clearing",
94961
+ "dispute_payable_reversal",
94962
+ "dispute_unreconciled_clearing",
94963
+ "dispute_unreconciled_reversal",
94964
+ "psp_reserve_hold",
94965
+ "psp_reserve_release",
94966
+ "psp_dispute_fee",
94967
+ "psp_dispute_alert_fee",
94968
+ "psp_refund_fee",
94969
+ "psp_account_updater_fee",
94970
+ "psp_adjusted_processing_fee",
94971
+ "psp_authentication_fee",
94972
+ "psp_commission_fee",
94973
+ "psp_fixed_fee",
94974
+ "psp_gateway_fee",
94975
+ "psp_interchange_fee",
94976
+ "psp_invoice_tax_fee",
94977
+ "psp_markup_fee",
94978
+ "psp_network_token_fee",
94979
+ "psp_optimization_fee",
94980
+ "psp_payment_method_fee",
94981
+ "psp_payout_fee",
94982
+ "psp_processing_fee",
94983
+ "psp_risk_fee",
94984
+ "psp_scheme_fee",
94985
+ "psp_variable_fee",
94986
+ "psp_billing_fee",
94987
+ "psp_tax_service_fee",
94988
+ "psp_connect_fee",
94989
+ "external_account_connection_fee",
94990
+ "psp_external_account_connection_fee",
94991
+ "psp_invoicing_fee",
94992
+ "psp_terminal_fee",
94993
+ "treasury_fee",
94994
+ "psp_treasury_fee",
94995
+ "accelerated_settlement_fee",
94996
+ "psp_accelerated_settlement_fee",
94997
+ "psp_receivable_pooled",
94998
+ "psp_pool_settlement",
94999
+ "psp_pool_clearing",
95000
+ "psp_pool_refund_settlement",
95001
+ "psp_pool_refund_clearing",
95002
+ "psp_correction",
95003
+ "psp_payin_settlement",
95004
+ "psp_payin_clearing",
95005
+ "psp_bank_pull_settlement",
95006
+ "psp_bank_pull_clearing",
95007
+ "psp_pool_dispute_settlement",
95008
+ "psp_payout_consolidation",
95009
+ "psp_withholding_tax",
95010
+ "psp_payout_settlement_reversal",
95011
+ "psp_transfer_settlement",
95012
+ "psp_transfer_settlement_reversal",
95013
+ "psp_collection_settlement",
95014
+ "payout_subsidy",
93883
95015
  "withdrawal_topup_adjustment",
95016
+ "withdrawal_payable_clearing",
95017
+ "withdrawal_payable_clearing_reversal",
95018
+ "identity_verification_fee",
95019
+ "psp_identity_verification_fee",
95020
+ "tax_filing_fee",
95021
+ "psp_tax_filing_fee",
95022
+ "psp_service_fee",
95023
+ "recipient_wallet_load",
95024
+ "psp_recipient_wallet_load",
95025
+ "dispute_management_fee",
95026
+ "psp_dispute_management_fee",
95027
+ "psp_clawback_settlement",
95028
+ "psp_clawback_settlement_reversal",
95029
+ "clawback_receivable_settlement",
95030
+ "clawback_receivable_settlement_reversal",
95031
+ "clawback_fee",
95032
+ "psp_clawback_fee",
95033
+ "bank_transfer",
93884
95034
  "deposit",
93885
95035
  "wallet_transfer_incoming",
93886
95036
  "wallet_transfer_outgoing",
@@ -94503,12 +95653,34 @@ var native_spec_default = {
94503
95653
  format: "date-time",
94504
95654
  type: ["string", "null"]
94505
95655
  },
95656
+ created_by_user: {
95657
+ description: "User who requested the withdrawal. Null for system-generated withdrawals or without payout:withdrawal:read.",
95658
+ oneOf: [
95659
+ {
95660
+ $ref: "#/components/schemas/UserSummary"
95661
+ },
95662
+ {
95663
+ type: "null"
95664
+ }
95665
+ ]
95666
+ },
94506
95667
  estimated_arrival: {
94507
95668
  description: "Estimated arrival as an ISO 8601 timestamp (payout sources only; requires payout:withdrawal:read).",
94508
95669
  example: "2026-01-01T12:00:00.000Z",
94509
95670
  format: "date-time",
94510
95671
  type: ["string", "null"]
94511
95672
  },
95673
+ fee_amount: {
95674
+ description: "Total withdrawal fees, including markup fees. Requires payout:withdrawal:read.",
95675
+ oneOf: [
95676
+ {
95677
+ $ref: "#/components/schemas/Money"
95678
+ },
95679
+ {
95680
+ type: "null"
95681
+ }
95682
+ ]
95683
+ },
94512
95684
  fee_kind: {
94513
95685
  description: "Action that generated a platform markup fee: deposit, swap, transfer, card_spend, or payout. Present for platform_markup_fee and platform_markup_fee_payout, including when include_resource is false. Null when the originating action is unavailable; omitted on other source types.",
94514
95686
  enum: [
@@ -94522,6 +95694,12 @@ var native_spec_default = {
94522
95694
  example: "swap",
94523
95695
  type: ["string", "null"]
94524
95696
  },
95697
+ fee_type: {
95698
+ description: "Whether withdrawal fees are inclusive or exclusive. Requires payout:withdrawal:read.",
95699
+ enum: ["exclusive", "inclusive", null],
95700
+ example: "exclusive",
95701
+ type: ["string", "null"]
95702
+ },
94525
95703
  from_amount: {
94526
95704
  description: "Amount converted out of from_currency as a decimal string (swap sources only).",
94527
95705
  example: "502.51",
@@ -94569,6 +95747,17 @@ var native_spec_default = {
94569
95747
  description: "Processor used by the payment source.",
94570
95748
  type: ["string", "null"]
94571
95749
  },
95750
+ payout_amount: {
95751
+ description: "Withdrawal principal sent to the destination, excluding fees, in the withdrawal currency. Requires payout:withdrawal:read.",
95752
+ oneOf: [
95753
+ {
95754
+ $ref: "#/components/schemas/Money"
95755
+ },
95756
+ {
95757
+ type: "null"
95758
+ }
95759
+ ]
95760
+ },
94572
95761
  payout_destination: {
94573
95762
  description: "Payout destination display info (payout sources only).",
94574
95763
  properties: {
@@ -94618,6 +95807,11 @@ var native_spec_default = {
94618
95807
  example: "usd",
94619
95808
  type: ["string", "null"]
94620
95809
  },
95810
+ trace_code: {
95811
+ description: "Bank trace reference for the withdrawal. Requires payout:withdrawal:read.",
95812
+ example: null,
95813
+ type: ["string", "null"]
95814
+ },
94621
95815
  tx_hash: {
94622
95816
  description: "On-chain transaction hash (onchain_transaction and swap sources only).",
94623
95817
  example: "0x5d84a1c7e2f9b036d48c5a7e1b9f2d6c3a8e0b4f7c1d9e5a2b6f8c0d3e7a1b52",
@@ -94940,6 +96134,11 @@ var native_spec_default = {
94940
96134
  $ref: "#/components/schemas/StorefrontAccount",
94941
96135
  description: "The account (seller) this membership belongs to."
94942
96136
  },
96137
+ billing_period_days: {
96138
+ description: "Number of days between recurring charges. `null` for non-renewing memberships or memberships with multiple renewal schedules.",
96139
+ example: 30,
96140
+ type: ["integer", "null"]
96141
+ },
94943
96142
  cancel_at_period_end: {
94944
96143
  description: "Whether the membership is set to cancel when the current billing period ends. Only meaningful for recurring variants.",
94945
96144
  example: true,
@@ -95030,6 +96229,11 @@ var native_spec_default = {
95030
96229
  example: "active",
95031
96230
  type: "string"
95032
96231
  },
96232
+ updated_at: {
96233
+ description: "When the membership was last changed, as an ISO 8601 timestamp. Reflects the most recent change to the membership itself, so you can reconcile against webhook retries, replays, and backfills.",
96234
+ example: "2026-01-01T12:00:00.000Z",
96235
+ type: "string"
96236
+ },
95033
96237
  user_id: {
95034
96238
  description: "The buyer, prefixed `user_`. `null` when the buyer is another business or the membership is unclaimed.",
95035
96239
  example: "user_xxxxxxxxxxxxxx",
@@ -95042,6 +96246,7 @@ var native_spec_default = {
95042
96246
  "user_id",
95043
96247
  "product_id",
95044
96248
  "plan_id",
96249
+ "billing_period_days",
95045
96250
  "license_key",
95046
96251
  "phone_number",
95047
96252
  "cancel_at_period_end",
@@ -95052,6 +96257,7 @@ var native_spec_default = {
95052
96257
  "manage_url",
95053
96258
  "metadata",
95054
96259
  "created_at",
96260
+ "updated_at",
95055
96261
  "member",
95056
96262
  "account"
95057
96263
  ],
@@ -95083,7 +96289,7 @@ var native_spec_default = {
95083
96289
  properties: {
95084
96290
  amount: {
95085
96291
  description: 'The amount in major units, as an exact decimal string \u2014 `"10.00"` is ten dollars. A string so no float rounds it in transit.',
95086
- example: "-2.50",
96292
+ example: "-1234.56",
95087
96293
  type: "string"
95088
96294
  },
95089
96295
  currency: {
@@ -96473,6 +97679,7 @@ var native_spec_default = {
96473
97679
  "restricted_card",
96474
97680
  "card_velocity_exceeded",
96475
97681
  "contact_issuer",
97682
+ "card_declined_by_issuer",
96476
97683
  "bank_declined",
96477
97684
  "regulatory_blocked",
96478
97685
  "transaction_not_permitted",
@@ -96793,6 +98000,7 @@ var native_spec_default = {
96793
98000
  "restricted_card",
96794
98001
  "card_velocity_exceeded",
96795
98002
  "contact_issuer",
98003
+ "card_declined_by_issuer",
96796
98004
  "bank_declined",
96797
98005
  "regulatory_blocked",
96798
98006
  "transaction_not_permitted",
@@ -100288,6 +101496,11 @@ var native_spec_default = {
100288
101496
  example: 1,
100289
101497
  type: "number"
100290
101498
  },
101499
+ sku: {
101500
+ description: "The variant's stock keeping unit, free text set by the seller (e.g. `TSHIRT-LARGE-BLUE`). Accounts with billing-reason SKU suffixes enabled receive it stamped with why the charge happened: `-S` for a first subscription charge, `-R` for a renewal, `-C` for a one-time purchase, `-U` when the payment's own metadata carries `upsell: true`, `-F` when nothing was charged. Other billing reasons carry the bare SKU. `null` when the variant has no SKU or has been deleted.",
101501
+ example: null,
101502
+ type: ["string", "null"]
101503
+ },
100291
101504
  subtotal: {
100292
101505
  description: "The recorded amount for this item's full quantity, before discounts, tax, and fees, in its purchase currency. Returns `null` when no item amount was recorded.",
100293
101506
  oneOf: [
@@ -100308,7 +101521,8 @@ var native_spec_default = {
100308
101521
  "product_title",
100309
101522
  "label",
100310
101523
  "quantity",
100311
- "subtotal"
101524
+ "subtotal",
101525
+ "sku"
100312
101526
  ],
100313
101527
  type: "object"
100314
101528
  },
@@ -100883,9 +102097,20 @@ var native_spec_default = {
100883
102097
  status: {
100884
102098
  description: "How far the setup has got. **A 201 or 200 means we answered, not that the method was saved \u2014 always branch on this.** `requires_action` \u2014 the buyer has a step outstanding; hand `client_secret` to the elements or poll Retrieve setup status. `processing` \u2014 the processor is deciding. `succeeded` \u2014 the method is saved, and only this one means saved. `canceled` \u2014 abandoned or refused; see `last_setup_error`.",
100885
102099
  enum: ["processing", "succeeded", "canceled", "requires_action"],
100886
- example: "succeeded",
102100
+ example: "requires_action",
100887
102101
  type: "string"
100888
102102
  },
102103
+ three_ds_level: {
102104
+ description: "3D Secure behavior for supported on-session card payments. `mandate_challenge` requires a 3DS challenge before payment processing; `mandate_if_required` mandates a challenge only when the payment processor requires it; `frictionless_if_required` uses the regular frictionless 3DS flow. Payments of $1,000 or more use `mandate_if_required` unless `mandate_challenge` is selected. Risk and authentication recovery requirements can override the preference. The setting requested for this setup, or `null` when unset.",
102105
+ enum: [
102106
+ "mandate_challenge",
102107
+ "mandate_if_required",
102108
+ "frictionless_if_required",
102109
+ null
102110
+ ],
102111
+ example: "frictionless_if_required",
102112
+ type: ["string", "null"]
102113
+ },
100889
102114
  three_ds_verified: {
100890
102115
  description: "True when the buyer completed 3D Secure while saving this payment method.",
100891
102116
  example: false,
@@ -100921,6 +102146,7 @@ var native_spec_default = {
100921
102146
  "return_url",
100922
102147
  "last_setup_error",
100923
102148
  "three_ds_verified",
102149
+ "three_ds_level",
100924
102150
  "metadata",
100925
102151
  "created_at",
100926
102152
  "updated_at",
@@ -101142,7 +102368,7 @@ var native_spec_default = {
101142
102368
  type: ["string", "null"]
101143
102369
  },
101144
102370
  parent_social_account: {
101145
- description: "The social account this one belongs to on the platform, such as the Facebook page that owns an Instagram account. Null when the social account stands on its own.",
102371
+ description: "The social account this one belongs to on the platform, such as the Facebook page that owns an Instagram account. Null when the social account stands on its own, or when it is a partner.",
101146
102372
  oneOf: [
101147
102373
  {
101148
102374
  $ref: "#/components/schemas/SocialAccountParent"
@@ -101152,6 +102378,12 @@ var native_spec_default = {
101152
102378
  }
101153
102379
  ]
101154
102380
  },
102381
+ partnership_status: {
102382
+ description: "Where a partner creator's permission to run partnership ads stands. `pending` until the creator approves it in the Instagram app, `approved` once they have, and `revoked` once it no longer holds. Null when the social account isn't a partner.",
102383
+ enum: [null, "pending", "approved", "revoked"],
102384
+ example: "pending",
102385
+ type: ["string", "null"]
102386
+ },
101155
102387
  platform: {
101156
102388
  description: "The platform the social account exists on.",
101157
102389
  enum: [
@@ -101207,6 +102439,7 @@ var native_spec_default = {
101207
102439
  "verified",
101208
102440
  "external_id",
101209
102441
  "scopes",
102442
+ "partnership_status",
101210
102443
  "error",
101211
102444
  "parent_social_account"
101212
102445
  ],
@@ -104613,7 +105846,7 @@ var apps_spec_default = {
104613
105846
  termsOfService: "https://whop.com/tos-developer-api/",
104614
105847
  title: "Whop API",
104615
105848
  version: "1.0.0",
104616
- "x-api-version-date": "2026-09-25"
105849
+ "x-api-version-date": "2026-09-29"
104617
105850
  },
104618
105851
  paths: {
104619
105852
  "/app_builds": {
@@ -106885,7 +108118,7 @@ var apps_spec_default = {
106885
108118
  name: "Api-Version-Date",
106886
108119
  required: false,
106887
108120
  schema: {
106888
- example: "2026-09-25",
108121
+ example: "2026-09-29",
106889
108122
  type: "string"
106890
108123
  }
106891
108124
  },
@@ -106964,7 +108197,7 @@ var files_spec_default = {
106964
108197
  termsOfService: "https://whop.com/tos-developer-api/",
106965
108198
  title: "Whop API",
106966
108199
  version: "1.0.0",
106967
- "x-api-version-date": "2026-09-25"
108200
+ "x-api-version-date": "2026-09-29"
106968
108201
  },
106969
108202
  paths: {
106970
108203
  "/files": {
@@ -107488,7 +108721,7 @@ var files_spec_default = {
107488
108721
  name: "Api-Version-Date",
107489
108722
  required: false,
107490
108723
  schema: {
107491
- example: "2026-09-25",
108724
+ example: "2026-09-29",
107492
108725
  type: "string"
107493
108726
  }
107494
108727
  },
@@ -107629,7 +108862,7 @@ async function announceActionUrl(url, {
107629
108862
  // package.json
107630
108863
  var package_default = {
107631
108864
  name: "@whop/cli",
107632
- version: "0.22.0",
108865
+ version: "0.23.0",
107633
108866
  description: "The Whop CLI \u2014 build and manage Whop apps from your terminal. Human and agent friendly.",
107634
108867
  keywords: [
107635
108868
  "agent",
@@ -107687,7 +108920,7 @@ var package_default = {
107687
108920
  },
107688
108921
  devDependencies: {
107689
108922
  "@types/node": "25.3.5",
107690
- fflate: "0.8.2",
108923
+ fflate: "0.8.3",
107691
108924
  incur: "github:whopio/incur#81953e8fc250ab30b32ff5e04c64a3613cb720e6",
107692
108925
  oxfmt: "0.42.0",
107693
108926
  tsup: "8.5.0",
@@ -110387,12 +111620,14 @@ import {
110387
111620
  } from "fs";
110388
111621
  import { dirname as dirname8, join as join8, resolve as resolve6, sep as sep2 } from "path";
110389
111622
 
110390
- // ../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.mjs
111623
+ // ../../node_modules/.pnpm/fflate@0.8.3/node_modules/fflate/esm/index.mjs
110391
111624
  import { createRequire as createRequire3 } from "module";
110392
111625
  var require2 = createRequire3("/");
111626
+ var _a;
110393
111627
  var Worker;
111628
+ var isMarkedAsUntransferable;
110394
111629
  try {
110395
- Worker = require2("worker_threads").Worker;
111630
+ _a = require2("worker_threads"), Worker = _a.Worker, isMarkedAsUntransferable = _a.isMarkedAsUntransferable;
110396
111631
  } catch (e) {
110397
111632
  }
110398
111633
  var u8 = Uint8Array;
@@ -110590,6 +111825,7 @@ var ec = [
110590
111825
  "stream finished",
110591
111826
  "no stream handler",
110592
111827
  ,
111828
+ // determined by compression function
110593
111829
  "no callback",
110594
111830
  "invalid UTF-8 data",
110595
111831
  "extra field too long",
@@ -111120,7 +112356,7 @@ var fltn = function(d, p2, t, o) {
111120
112356
  var val = d[k], n = p2 + k, op = o;
111121
112357
  if (Array.isArray(val))
111122
112358
  op = mrg(o, val[1]), val = val[0];
111123
- if (val instanceof u8)
112359
+ if (ArrayBuffer.isView(val))
111124
112360
  t[n] = [val, op];
111125
112361
  else {
111126
112362
  t[n += "/"] = [new u8(0), op];
@@ -111204,14 +112440,28 @@ var slzh = function(d, b) {
111204
112440
  return b + 30 + b2(d, b + 26) + b2(d, b + 28);
111205
112441
  };
111206
112442
  var zh = function(d, b, z) {
111207
- var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
111208
- var _a2 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a2[0], su = _a2[1], off = _a2[2];
111209
- return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
112443
+ var fnl = b2(d, b + 28), efl = b2(d, b + 30), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;
112444
+ var _a2 = z64hs(d, es, efl, z, b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)), sc = _a2[0], su = _a2[1], off = _a2[2];
112445
+ return [b2(d, b + 10), sc, su, fn, es + efl + b2(d, b + 32), off];
111210
112446
  };
111211
- var z64e = function(d, b) {
111212
- for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
111213
- ;
111214
- return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
112447
+ var z64hs = function(d, b, l, z, sc, su, off) {
112448
+ var nsc = sc == 4294967295, nsu = su == 4294967295, noff = off == 4294967295, e = b + l;
112449
+ var nf = nsc + nsu + noff;
112450
+ if (z && nf) {
112451
+ for (; b + 4 < e; b += 4 + b2(d, b + 2)) {
112452
+ if (b2(d, b) == 1) {
112453
+ return [
112454
+ nsc ? b8(d, b + 4 + 8 * nsu) : sc,
112455
+ nsu ? b8(d, b + 4) : su,
112456
+ noff ? b8(d, b + 4 + 8 * (nsu + nsc)) : off,
112457
+ 1
112458
+ ];
112459
+ }
112460
+ }
112461
+ if (z < 2)
112462
+ err(13);
112463
+ }
112464
+ return [sc, su, off, 0];
111215
112465
  };
111216
112466
  var exfl = function(ex) {
111217
112467
  var le = 0;
@@ -111326,7 +112576,7 @@ function unzipSync(data, opts) {
111326
112576
  if (!c2)
111327
112577
  return {};
111328
112578
  var o = b4(data, e + 16);
111329
- var z = o == 4294967295 || c2 == 65535;
112579
+ var z = b4(data, e - 20) == 117853008;
111330
112580
  if (z) {
111331
112581
  var ze = b4(data, e - 12);
111332
112582
  z = b4(data, ze) == 101075792;