Promo Codes

List Promo Codes

Changed on

Lists an account's promo codes.

get/promo_codes

Request

  • Base URL: https://api.whop.com/api/v1
  • URL: https://api.whop.com/api/v1/promo_codes
  • Auth: HTTP bearer

Query parameters

account_idstring required

Account whose promo codes are listed (biz_ tag).

status'active' | 'inactive' | 'archived' | 'expired'

Promo-code status. expired groups inactive and archived codes.

product_idsstring[]

Only promo codes scoped to these product IDs.

[
  "prod_xxxxxxxxxxxxxx"
]
plan_idsstring[]

Only promo codes scoped to these variant IDs.

[
  "plan_xxxxxxxxxxxxxx"
]
created_beforestring date-time

Only promo codes created before this ISO 8601 timestamp.

created_afterstring date-time

Only promo codes created after this ISO 8601 timestamp.

order'created_at'

Sort field.

direction'asc' | 'desc'

Sort direction.

firstinteger

Number of results to return from the start of the range.

afterstring

Return results after this cursor. Use page_info.end_cursor from the previous response to fetch the next page.

lastinteger

Number of results to return from the end of the range.

beforestring

Return results before this cursor. Use page_info.start_cursor from the previous response to fetch the previous page.

Response

promo codes listed

Example response

{
  "data": [
    {
      "amount_off": 0.1,
      "code": "welcome",
      "created_at": "2026-01-01T12:00:00.000Z",
      "currency": "usd",
      "duration": "repeating",
      "expires_at": "2026-01-01T12:00:00.000Z",
      "id": "promo_xxxxxxxxxxxxxx",
      "metadata": {},
      "new_users_only": true,
      "one_per_customer": true,
      "product": {
        "id": "prod_xxxxxxxxxxxxxx",
        "title": "Ceramic Coating Package"
      },
      "promo_duration_months": 1,
      "promo_type": "percentage",
      "status": "active",
      "stock": 25,
      "updated_at": "2026-01-01T12:00:00.000Z",
      "uses": 1
    }
  ],
  "page_info": {
    "start_cursor": "WyJjdXJzb3IiLDFd"
  }
}

Changes

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • breaking

      added the new required query request parameter account_id

    • breaking

      the query request parameter status was restricted to a list of enum values

    • breaking

      for the query request parameter first, default value 20 was added

    • breaking

      added subschema #2 to the // response property oneOf list for the response status

    • breaking

      the // response's property format changed from date-time to no format for status

    • breaking

      the // response's property type changed from no type to string for status

    • breaking

      the // response's property format changed from date-time to no format for status

    • breaking

      the // response's property type changed from object null to no type for status

    • breaking

      removed the required property /// from the response with the status

    • breaking

      removed the required property /// from the response with the status

    • warning

      for the query request parameter first, the max was set to 100.00

    • warning

      for the query request parameter last, the max was set to 100.00

    • warning

      deleted the query request parameter company_id

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      added the new forever enum value to the // response property for the response status

    • warning

      added the new once enum value to the // response property for the response status

    • warning

      added the new repeating enum value to the // response property for the response status

    • info

      api operation id listPromoCode removed and replaced with listPromoCodes

    • info

      the security scope access_pass:basic:read was removed from the endpoint's security scheme bearerAuth

    • info

      api tag Promo Codes added

    • info

      api tag Promo codes removed

    • info

      added the new optional header request parameter Api-Version-Date to all path's operations

    • info

      added the new optional query request parameter direction

    • info

      added the new optional query request parameter order

    • info

      added the new enum value active to the query request parameter status

    • info

      added the new enum value archived to the query request parameter status

    • info

      added the new enum value expired to the query request parameter status

    • info

      added the new enum value inactive to the query request parameter status

    • info

      for the query request parameter status, the type was generalized from no type to string

    • info

      removed the non-success response with the status

    • info

      removed the non-success response with the status

    • info

      removed the non-success response with the status

    • info

      removed the non-success response with the status

    • info

      removed subschema #2 from the // response property oneOf list for the response status

    • info

      added the required property // to the response with the status

    • info

      added the required property // to the response with the status