# Derived by API Evangelist from ThriveCart's first-party Postman collection. # Source: https://apidocs.thrivecart.com/ (collection 13408532-d1b367e5-6d66-4b28-871e-b33ece602ddc) # Fetched: 2026-08-12. ThriveCart publishes no OpenAPI of its own. openapi: 3.1.0 info: title: ThriveCart API version: '1' description: 'The ThriveCart API lets you read and manage the products, bumps, upsells, downsells, transactions, customers, subscriptions, affiliates and Learn students in a ThriveCart account, and to create targeted event subscriptions (webhooks). This OpenAPI document is DERIVED by API Evangelist from ThriveCart''s own published Postman collection (https://apidocs.thrivecart.com/). Every path, method, parameter, request field, description and example response body is carried over from that first-party source. ThriveCart does not publish an OpenAPI definition of its own.' termsOfService: https://thrivecart.com/legal/thrivecart/ contact: name: ThriveCart Developer Support url: https://developers.thrivecart.com/ email: support@thrivecart.com externalDocs: description: ThriveCart Developers url: https://developers.thrivecart.com/documentation/ servers: - url: https://thrivecart.com/api/external description: Production tags: - name: Account - name: Products - name: Bumps - name: Upsells - name: Downsells - name: Transactions - name: Customers - name: Subscriptions - name: Affiliates - name: Learn - name: Event subscriptions security: - bearerAuth: [] - oauth2: [] paths: /ping: get: operationId: ping summary: Ping description: Get information about the account that your API key or access token grants access to. No parameters are required for this endpoint. It's also useful to check the validity of your token. tags: - Account responses: '401': description: Invalid/expired credentials content: application/json: schema: type: object properties: error: type: string error_description: type: string examples: Invalid_expired_credentials: value: error: invalid_token error_description: The access token provided is invalid '200': description: Ping content: application/json: schema: type: object properties: account_name: type: string account_id: type: string account_version: type: string account_url: type: string user_id: type: string user_username: type: string user_name: type: string custom_domain_enabled: type: boolean custom_domain: {} examples: Ping: value: account_name: myaccount account_id: '1' account_version: pro account_url: https://myaccount.thrivecart.com/ user_id: '1' user_username: marc@thrivecart.com user_name: Marc Fowler custom_domain_enabled: false custom_domain: null headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /products: get: operationId: listProducts summary: List products tags: - Products responses: '200': description: List products content: application/json: schema: type: array items: type: object properties: product_id: type: string name: type: string label: type: string url: type: string embed_type: type: string status: type: string statusString: type: string type: type: string typeString: type: string examples: List_products: value: - product_id: '2' name: My Example Product label: Internal label for this product url: https://myaccount.thrivecart.com/my-example-product/ embed_type: standard status: '2' statusString: live type: '1' typeString: digital - product_id: '1' name: My First Product label: Optional internal label url: https://myaccount.thrivecart.com/my-first-product/ embed_type: standard status: '1' statusString: test type: '2' typeString: physical headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /bumps: get: operationId: listBumpOffers summary: List bump offers tags: - Bumps responses: '200': description: List bump offers content: application/json: schema: type: array items: type: object properties: product_id: type: string product_name: type: string product_label: type: string bump_id: type: string bump_name: type: string name: type: string id: type: string url: type: string embed_type: type: string status: type: string statusString: type: string type: type: string typeString: type: string payment_currency: type: string payment_amount: type: integer examples: List_bump_offers: value: - product_id: '4' product_name: My Product + Bump product_label: Internal product label bump_id: '4' bump_name: Special Bump Offer name: Special Bump Offer id: '4' url: https://myaccount.thrivecart.com/my-bump/ embed_type: standard status: '2' statusString: live type: '1' typeString: digital payment_currency: GBP payment_amount: 3200 - product_id: '1' product_name: Product with Bump product_label: Internal label for this product bump_id: '1' bump_name: Demo Bump name: Demo Bump id: '1' url: https://myaccount.thrivecart.com/product-with-bump/ embed_type: standard status: '2' statusString: live type: '1' typeString: digital payment_currency: USD payment_amount: 1200 headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /upsells: get: operationId: listUpsells summary: List upsells tags: - Upsells responses: '200': description: List upsells content: application/json: schema: type: array items: type: object properties: upsell_id: type: string name: type: string label: type: string type: type: string typeString: type: string examples: List_upsells: value: - upsell_id: '2' name: My Example Upsell label: Internal label for this upsell type: '1' typeString: digital - upsell_id: '1' name: My First Upsell label: Optional internal label type: '2' typeString: physical headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /downsells: get: operationId: listDownsells summary: List downsells tags: - Downsells responses: '200': description: List downsells content: application/json: schema: type: array items: type: object properties: downsell_id: type: string name: type: string label: type: string type: type: string typeString: type: string examples: List_downsells: value: - downsell_id: '2' name: My Demo Downsell label: Internal label for this downsell type: '1' typeString: digital - downsell_id: '1' name: My Example Downsell label: Optional internal label type: '1' typeString: digital headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /products/{product_id}: get: operationId: getProduct summary: Get product tags: - Products parameters: - name: product_id in: path required: true description: Product ID schema: type: string responses: '200': description: Product details content: application/json: schema: type: object properties: product_id: type: string name: type: string slug: type: string label: type: string status: type: string statusString: type: string type: type: string typeString: type: string payment_currency: type: string url: type: string embed_type: type: string examples: Product_details: value: product_id: '1' name: My Product slug: my-product label: Internal label for this product status: '2' statusString: live type: '1' typeString: digital payment_currency: USD url: https://myaccount.thrivecart.com/my-product/ embed_type: standard headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /products/{product_id}/pricing_options: get: operationId: getProductPriceDetails summary: Get product price details tags: - Products parameters: - name: product_id in: path required: true description: product_id path parameter. schema: type: string - name: affiliate_id in: query required: false description: (Optional) Provide an affiliate ID to query the commissions tailored to this specific affiliate schema: type: string responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /bumps/{bump_id}: get: operationId: getBump summary: Get bump tags: - Bumps parameters: - name: bump_id in: path required: true description: bump_id path parameter. schema: type: string responses: '404': description: No such bump content: application/json: schema: type: object properties: error: type: string reason: type: string examples: No_such_bump: value: error: method.exception reason: The requested bump cannot be identified. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '200': description: Bump offer details content: application/json: schema: type: object properties: product_id: type: string product_name: type: string bump_id: type: string name: type: string slug: type: string label: type: string status: type: string statusString: type: string type: type: string typeString: type: string payment_currency: type: string url: type: string embed_type: type: string examples: Bump_offer_details: value: product_id: '1' product_name: My Bump Product bump_id: '1' name: My Bump slug: my-bump-product label: '' status: '2' statusString: live type: '1' typeString: digital payment_currency: USD url: https://myaccount.thrivecart.com/my-bump-product/ embed_type: standard headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /bumps/{bump_id}/pricing_options: get: operationId: getBumpPriceDetails summary: Get bump price details tags: - Bumps parameters: - name: bump_id in: path required: true description: bump_id path parameter. schema: type: string responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /upsells/{upsell_id}: get: operationId: getUpsell summary: Get upsell tags: - Upsells parameters: - name: upsell_id in: path required: true description: Upsell ID schema: type: string responses: '200': description: Upsell details content: application/json: schema: type: object properties: upsell_id: type: string name: type: string label: type: string examples: Upsell_details: value: upsell_id: '1' name: 'Example Upsell #123' label: Internal label for this upsell headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /upsells/{upsell_id}/pricing_options: get: operationId: getUpsellPriceDetails summary: Get upsell price details tags: - Upsells parameters: - name: upsell_id in: path required: true description: upsell_id path parameter. schema: type: string responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /downsells/{downsell_id}: get: operationId: getDownsell summary: Get downsell tags: - Downsells parameters: - name: downsell_id in: path required: true description: Downsell ID schema: type: string responses: '200': description: Downsell details content: application/json: schema: type: object properties: downsell_id: type: string name: type: string label: type: string examples: Downsell_details: value: downsell_id: '1' name: My Demo Downsell label: Internal label for this downsell headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /downsells/{downsell_id}/pricing_options: get: operationId: getDownsellPriceDetails summary: Get downsell price details tags: - Downsells parameters: - name: downsell_id in: path required: true description: downsell_id path parameter. schema: type: string responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /transactions: get: operationId: searchTransactions summary: Search transactions description: 'Search through transaction events and return the info about activity within your account. Events such as charges, rebills, refunds and cancellations will be included under the transaction_type key.' tags: - Transactions parameters: - name: page in: query required: true description: Page number (1 through N) schema: type: string example: '1' - name: perPage in: query required: true description: Results per page (max of 100) schema: type: string example: '10' - name: query in: query required: true description: Search query (e.g. customer email, order ID, etc) schema: type: string - name: transactionType in: query required: true description: '''any'', ''charge'', ''rebill'', ''refund'', ''cancel''' schema: type: string example: any - name: currency in: query required: true description: '''usd'', ''gbp'', etc (optional; leave blank for all currencies)' schema: type: string responses: '200': description: Search transactions content: application/json: schema: type: object properties: transactions: type: array items: type: object properties: event_id: type: string base_product: type: string date: type: string time: type: string timestamp: type: integer transaction_type: type: string item_type: type: string item_id: type: integer amount: type: integer order_id: type: string invoice_id: type: string currency: type: string processor: type: string customer: type: object properties: name: type: string email: type: string reference: type: string meta: type: object properties: total: type: integer results: type: integer examples: Search_transactions: value: transactions: - event_id: '446660' base_product: '1' date: '2020-11-15' time: '2020-11-15 17:01:43' timestamp: 1605459703 transaction_type: rebill item_type: product item_id: 1 amount: 10000 order_id: '7700' invoice_id: '1467' currency: USD processor: paypal customer: name: Demo Customer email: demo@thrivecart.com reference: product-222-138 - event_id: '446642' base_product: '2' date: '2020-11-15' time: '2020-11-15 16:22:52' timestamp: 1605457372 transaction_type: rebill item_type: product item_id: 2 amount: 3300 order_id: '18584' invoice_id: '2563' currency: USD processor: paypal customer: name: Other Demo Customer email: demo-2@thrivecart.com meta: total: 8358 results: 25 headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /customer: post: operationId: readCustomerInformation summary: Read customer information description: Read the full history of an individual customer and all of their purchases and subscriptions. tags: - Customers requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: email: type: string description: Customer email address required: - email responses: '200': description: Example containing a subscription content: application/json: schema: type: object properties: customer: type: object properties: name: type: string email: type: string purchases: type: array items: {} subscriptions: type: array items: type: object properties: status: type: string order_id: type: string invoice_id: type: string subscription_id: type: string subscription_reference: type: string currency: type: string frequency: type: string amount: type: string payments: type: string payments_remaining: type: string total_paid: type: string last_payment: type: string date_started: type: string processor: type: string item_name: type: string item_type: type: string item_id: type: string next_payment: type: string events: type: array items: type: object properties: event_id: type: string event_type: type: string date: type: string amount: type: integer reference: type: string lifetime_value: type: object properties: USD: type: integer examples: Example_containing_a_subscription: value: customer: name: Katerine Patterson email: faux-customer-616855039-78@thrivecartfaux.com purchases: [] subscriptions: - status: active order_id: '851411' invoice_id: '147484955' subscription_id: '253' subscription_reference: product-373-12132 currency: USD frequency: month amount: '12500' payments: '1' payments_remaining: '4' total_paid: '12500' last_payment: '2020-10-01 05:18:42' date_started: '2020-10-01 05:18:42' processor: stripe item_name: Trial Funnel item_type: product item_id: '373' next_payment: '2020-10-08 05:18:39' events: - event_id: '62386787' event_type: charge date: '2020-09-26 14:00:00' amount: 12500 reference: product-373-12132 lifetime_value: USD: 12500 Example_containing_one_time_purchases: value: customer: name: Narcisa Joshua email: faux-customer-778560761-14@thrivecartfaux.com purchases: - status: paid order_id: '851362' invoice_id: '147484906' processor: stripe amount: 9500 net_amount: 9500 currency: USD item_name: My Example Product item_type: product item_id: '299' reference: product-299 subscriptions: [] lifetime_value: USD: 9500 headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '404': description: Customer does not exist content: application/json: schema: type: object properties: error: type: string examples: Customer_does_not_exist: value: error: There are no orders associated with this customer. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /cancelSubscription: post: operationId: cancelASubscription summary: Cancel a subscription description: Cancel a subscription using the order ID and subscription ID pulled from either a Transaction search or the full history of a customer. tags: - Subscriptions requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: order_id: type: string description: Order ID subscription_id: type: string description: Subscription ID required: - order_id - subscription_id responses: '400': description: Invalid parameters content: application/json: schema: type: object properties: error: type: string examples: Invalid_parameters: value: error: You do not have permission to access this subscription. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '200': description: Cancel a subscription content: application/json: schema: type: object properties: success: type: boolean message: type: string examples: Cancel_a_subscription: value: success: true message: This subscription has been successfully cancelled. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /refund: post: operationId: refundATransaction summary: Refund a transaction description: Refund a specific transaction using the order ID and purchase reference pulled from either a Transaction search or the full history of a customer. tags: - Subscriptions requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: order_id: type: string description: Order ID reference: type: string description: Item reference required: - order_id - reference responses: '200': description: Refund a transaction content: application/json: schema: type: object properties: success: type: boolean message: type: string examples: Refund_a_transaction: value: success: true message: This refund has been issued successfully. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '404': description: Invalid parameters content: application/json: schema: type: object properties: error: type: string examples: Invalid_parameters: value: error: The requested charge could not be identified. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /pauseSubscription: post: operationId: pauseASubscription summary: Pause a subscription description: 'Pause a subscription using the order ID and subscription ID pulled from either a Transaction search or the full history of a customer. Note that you can provide an optional timestamp to automatically resume the subscription on that date, or leave this blank to pause indefinitely.' tags: - Subscriptions requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: order_id: type: string description: Order ID subscription_id: type: string description: Subscription ID auto_resume: type: string description: (Optional) Unix timestamp to automatically resume this subscription - must be 24 hours in the future required: - order_id - subscription_id responses: '200': description: Pause a subscription content: application/json: schema: type: object properties: success: type: boolean customer_id: type: string frequency: type: string plan_id: type: string message: type: string examples: Pause_a_subscription: value: success: true customer_id: cus_I7ZKYD0DfM1vz0 frequency: month plan_id: thrivecart-1-product-1-12500-month-usd message: This subscription has been successfully paused. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '400': description: Invalid parameters content: application/json: schema: type: object properties: error: type: string examples: Invalid_parameters: value: error: You must provide a valid order ID. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /resumeSubscription: post: operationId: resumeASubscription summary: Resume a subscription description: Resume a subscription using the order ID and subscription ID pulled from either a Transaction search or the full history of a customer. tags: - Subscriptions requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: order_id: type: string description: Order ID subscription_id: type: string description: Subscription ID required: - order_id - subscription_id responses: '400': description: Invalid parameters content: application/json: schema: type: object properties: error: type: string examples: Invalid_parameters: value: error: You must provide a valid order ID. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '200': description: Resume a subscription content: application/json: schema: type: object properties: success: type: boolean subscription_id: type: string message: type: string examples: Resume_a_subscription: value: success: true subscription_id: sub_IMaXasOaNCuHqo message: This subscription has been successfully resumed. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /affiliates: get: operationId: searchAffiliates summary: Search affiliates description: Search for affiliates by the product ID they're approved for, or by their name, email, or affiliate ID. tags: - Affiliates parameters: - name: product_id in: query required: false description: (Optional) Product ID schema: type: string - name: query in: query required: false description: (Optional) Search by affiliate name, email, affiliate ID schema: type: string - name: page in: query required: true description: Page number (1 through N) schema: type: string example: '1' - name: perPage in: query required: true description: Results per page (max of 25) schema: type: string example: '5' responses: '200': description: Search affiliates content: application/json: schema: type: object properties: affiliates: type: array items: type: object properties: user_id: type: string email: type: string affiliate_id: type: string label: type: string name: type: string is_favourite: type: boolean products: type: array items: type: object properties: product_id: type: string product_name: type: string status_string: type: string status: type: string affiliate_link: type: string meta: type: object properties: total: type: integer results: type: integer examples: Search_affiliates: value: affiliates: - user_id: '649' email: alexis_fortier@thrivecart.com affiliate_id: alexis_fortier label: alexis_fortier (alexis_fortier@thrivecart.com) name: Alexis Fortier is_favourite: false products: - product_id: '250' product_name: My Demo Subscription status_string: active status: '2' affiliate_link: https://alexis_fortier--myaccount.thrivecart.com/my-demo-subscription/ - product_id: '296' product_name: Demo Product status_string: active status: '2' affiliate_link: https://alexis_fortier--myaccount.thrivecart.com/demo-product/ - user_id: '650' email: amy_greene_dittz@thrivecart.com affiliate_id: amy_greene_dittz label: amy_greene_dittz (amy_greene_dittz@thrivecart.com) name: Amy Greene-Dittz is_favourite: false products: - product_id: '250' product_name: My Demo Subscription status_string: active status: '2' affiliate_link: https://amy_greene_dittz--myaccount.thrivecart.com/my-demo-subscription/ - product_id: '296' product_name: Demo Product status_string: active status: '2' affiliate_link: https://amy_greene_dittz--myaccount.thrivecart.com/demo-product/ meta: total: 5672 results: 2 headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] post: operationId: createNewAffiliate summary: Create new affiliate description: 'Create a new affiliate in your account. You can optionally specify an affiliate_id key to set their preferred affiliate ID. Affiliate IDs are unique across the system, so this may be modified by the system to ensure uniqueness. If you do not specify any affiliate_id, we will generate one based on the user''s name or email address. If the user already exists in the system and has an affiliate ID set already, your parameter will be ignored and their affiliate ID will not be modified.' tags: - Affiliates requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: email: type: string description: Affiliate's email (used to sign in) name: type: string description: (Optional) Affiliate's name affiliate_id: type: string description: (Optional) Desired affiliate ID - may be updated by the system product_ids: type: string description: Array of at least one product ID to add them to auto_approve: type: string description: (Optional) Auto-approve the affiliate for these products? parent_affiliate: type: string description: (Optional) Mark this affiliate as having been referred by another? first_name: type: string description: (Optional) Affiliate's first name last_name: type: string description: (Optional) Affiliate's last name company: type: string description: (Optional) Affiliate's company/business name country: type: string description: (Optional) 2-digit country code for affiliate's country city: type: string description: (Optional) Affiliate's city state: type: string description: (Optional) Affiliate's state/region zip: type: string description: (Optional) Affiliate's ZIP/post code trigger_emails: type: string description: (Optional) Trigger email to affiliate and vendor? Defaults to true required: - email - product_ids responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /affiliate: post: operationId: readAffiliateInfo summary: Read affiliate info description: Return the information about a specific affiliate by their affiliate ID, their numeric user ID, or their email address. tags: - Affiliates requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: affiliate_id: type: string description: Affiliate user ID, affiliate id, or email required: - affiliate_id responses: '200': description: Read affiliate info content: application/json: schema: type: object properties: user_id: type: string email: type: string affiliate_id: type: string label: type: string name: type: string is_favourite: type: boolean products: type: array items: type: object properties: product_id: type: string product_name: type: string status_string: type: string status: type: string affiliate_link: type: string examples: Read_affiliate_info: value: user_id: '649' email: edwardmann@thrivecart.com affiliate_id: edward_mann label: alexis_fortier (demoaffiliate@thrivecart.com) name: Edward Mann is_favourite: false products: - product_id: '250' product_name: My Demo Subscription status_string: active status: '2' affiliate_link: https://edward_mann--myaccount.thrivecart.com/my-demo-subscription/ - product_id: '296' product_name: Demo Product status_string: active status: '2' affiliate_link: https://edward_mann--myaccount.thrivecart.com/demo-product/ headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /affiliates/{affiliate_id}/favorite: post: operationId: markAffiliateAsFavorite summary: Mark affiliate as favorite description: Mark an affiliate as a 'favorite' or VIP affiliate. tags: - Affiliates parameters: - name: affiliate_id in: path required: true description: Affiliate ID schema: type: string responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /affiliates/{affiliate_id}/unfavorite: post: operationId: unFavouriteAnAffiliate summary: Un-favourite an affiliate description: Remove the 'favorite' marker from an affiliate. tags: - Affiliates parameters: - name: affiliate_id in: path required: true description: Affiliate ID schema: type: string responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /affiliates/{affiliate_id}/register: post: operationId: registerAffiliateForAProduct summary: Register affiliate for a product description: Register an existing affiliate for a specific product or list of products. tags: - Affiliates parameters: - name: affiliate_id in: path required: true description: Affiliate ID schema: type: string requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: product_ids: type: string description: Array of at least one product ID to add them to auto_approve: type: string description: (Optional) Auto-approve the affiliate for these products? trigger_emails: type: string description: (Optional) Trigger email to affiliate and vendor? Defaults to true parent_affiliate: type: string description: (Optional) Mark this affiliate as having been referred by another? required: - product_ids responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /affiliates/{affiliate_id}/approve: post: operationId: approveAnAffiliateForAProduct summary: Approve an affiliate for a product description: Approve an affiliate for a pending application to a product or products. Note, if the application isn't already pending, no changes will be made. tags: - Affiliates parameters: - name: affiliate_id in: path required: true description: Affiliate ID schema: type: string requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: product_ids: type: string description: Array of at least one product ID to approve their application for trigger_emails: type: string description: (Optional) Trigger email to affiliate and vendor? Defaults to true required: - product_ids responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /affiliates/{affiliate_id}/reject: post: operationId: rejectAnAffiliateForAProduct summary: Reject an affiliate for a product description: Approve an affiliate for a pending application to a product or products. Note, if the application isn't already pending, no changes will be made. tags: - Affiliates parameters: - name: affiliate_id in: path required: true description: Affiliate ID schema: type: string requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: product_ids: type: string description: Array of at least one product ID to reject their application for trigger_emails: type: string description: (Optional) Trigger email to affiliate and vendor? Defaults to true required: - product_ids responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /affiliates/{affiliate_id}/custom_commissions: post: operationId: specifyCustomCommissions summary: Specify custom commissions description: 'Specify a block of custom commissions for a specific affiliate and product they are promoting. This enables you to override the affiliate much like affiliate rules, and change how much, when, and how they get paid. See our example SDK for further examples and insight.' tags: - Affiliates parameters: - name: affiliate_id in: path required: true description: Affiliate ID schema: type: string requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: product_id: type: string description: Product ID to apply custom commissions for commission_object: type: string description: Custom commissions object (or null to remove any custom commissions set for this product) required: - product_id - commission_object responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /affiliates/{affiliate_id}/delete: post: operationId: deleteAffiliateUser summary: Delete affiliate user description: Return the information about a specific affiliate by their affiliate ID, their numeric user ID, or their email address. tags: - Affiliates parameters: - name: affiliate_id in: path required: true description: Affiliate ID schema: type: string responses: '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /students: post: operationId: createNewStudent summary: Create new student description: 'Create a new student in your Learn account. Specify the student''s email address (which they will use to sign in), and the numeric course ID to add them to. You will receive a key auto_signin_url which will either take them to set up their password for the first time (if they aren''t a student of yours already), or to sign in to your course automatically. Students should be taken here immediately after creating their access. You may specify an array of tags to apply to them. You may also specify an order ID, purchase type and purchase ID to assign this relationship to a purchase of theirs. The system will then automatically cancel their membership if the corresponding subscription is cancelled (depending on your course settings).' tags: - Learn requestBody: required: true content: multipart/form-data: schema: type: object properties: email: type: string description: Student's email (used to sign in) name: type: string description: '(Optional) Student''s name (max length: 150 characters)' course_id: type: string description: Course ID to grant access to tags[]: type: string description: (Optional) Array of tags to apply to the student order_info[order_id]: type: string description: (Optional) Associate this with a ThriveCart order order_info[purchase_type]: type: string description: (Optional) If associating with a ThriveCart order, specify the type of purchase (product, bump, upsell, downsell) order_info[purchase_id]: type: string description: (Optional) If associating with a ThriveCart order, specify the numeric ID of the item purchased trigger_emails: type: string description: (Optional) Trigger email to student? Defaults to true required: - email - course_id responses: '200': description: Successful student addition (associated with order) content: application/json: schema: type: object properties: auto_signin_url: type: string signin_url: type: string student: type: object properties: id: type: string username: type: string name: type: string status: type: string date_created: type: string account_id: type: string examples: Successful_student_addition_associated_with_order: value: auto_signin_url: https://myaccount.thrivecart.com/signin/?username=c3R1ZGVudEB0aHJpdmVjYXJ0LmNvbQ%3D%3D signin_url: https://myaccount.thrivecart.com/l/my-course-name/ student: id: '1000002' username: student@thrivecart.com name: Jane Smith status: '1' date_created: '2022-03-10 21:25:38' account_id: '1' Successful_student_addition: value: auto_signin_url: https://myaccount.thrivecart.com/signin/?username=c3R1ZGVudEB0aHJpdmVjYXJ0LmNvbQ%3D%3D signin_url: https://myaccount.thrivecart.com/l/my-course-name/ student: id: '1000002' username: student@thrivecart.com name: Jane Smith status: '1' date_created: '2022-03-10 21:25:38' account_id: '1' Successful_student_creation: value: auto_signin_url: https://myaccount.thrivecart.com/signin/?access=NlY2TEQxRVVSWllaUzg3NURTR1ZNNkVXQjFHQk1SRzQ%3D&username=c3R1ZGVudEB0aHJpdmVjYXJ0LmNvbQ%3D%3D signin_url: https://myaccount.thrivecart.com/l/my-course-name/ student: id: '1000002' username: student@thrivecart.com name: Jane Smith status: '1' date_created: '2022-03-10 21:31:43' account_id: '1' Create_new_student: value: auto_signin_url: https://dfr.dev.thrivecart.com/signin/?access=NlY2TEQxRVVSWllaUzg3NURTR1ZNNkVXQjFHQk1SRzQ%3D&username=bWFyYythcGlzdHVkZW50N0BkZnIubWU%3D signin_url: https://dfr.dev.thrivecart.com/l/tiktok-for-boomers/ student: id: '90' username: marc+apistudent7@dfr.me name: API Made status: '1' date_created: '2022-03-10 21:31:43' account_id: '1' headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ X-ThriveCart-RequestID: description: X-ThriveCart-RequestID schema: type: string example: 123456-323032322d30332d31302032313a33313a3433-c8371f1a8cffc1b802bd4e6d40258b8e6b5eff '400': description: Invalid email provided content: application/json: schema: type: object properties: error: type: string examples: Invalid_email_provided: value: error: You must provide a valid student email address (you provided "invalid_email_here"). Invalid_order_details: value: error: To associate with an order, you must provide a valid order ID from your account. headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ X-ThriveCart-RequestID: description: X-ThriveCart-RequestID schema: type: string example: 123456-323032322d30332d31302032313a33353a3437-bdd89c52f2c91de9ee611784f79d3eaaac676c '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /subscribe: post: operationId: createEventSubscription summary: Create event subscription description: 'Subscribe an endpoint to receive custom webhook notifications. Accepts JSON containing event, target_url and trigger_fields. Target URL You must have registered the beginning of your target URL with your app. For example, to receive events at https://mysite.com/webhook, you must register at least https://mysite.com within your app''s URL settings or you will receive an error. Important: Unsubscribing is done by URL. As such, as highly recommend creating a unique URL for each subscription you create! Potential event values * (receives all events) order_payment_product (notified when a product is purchased) order_payment_bump (notified when a bump offer is purchased) order_payment_upsell (notified when an upsell is purchased) order_payment_downsell (notified when a downsell is purchased) order_payment_declined_product (notified when a purchase is declined) cart_abandoned (notified when a cart is abandoned) order_refund (notified when a refund is issused) order_rebill (notified on successful recurring payment) order_rebill_failed (notified when a recurring payment fails) order_rebill_cancelled (notified on subscription cancellation) order_rebill_completed (notified once all payments in a split pay have been completed) subscription_paused (notified when a subscription is paused) subscription_resumed (notified when a subscription is resumed) affiliate_created (notified when a new affiliate is created) affiliate_approved (notified when an affiliate is approved for a product) affiliate_rejected (notified when an affiliate is rejected from a product) affiliate_commission_earned (notified when an affiliate earns commission) affiliate_commission_payout (notified when an affiliate is paid some commission) affiliate_commission_refund (notified when an affiliate has commission clawed back) See the detailed documentation on our developer site to see examples and learn how to filter using trigger fields.' tags: - Event subscriptions requestBody: required: true content: application/json: schema: type: object properties: event: type: string target_url: type: string trigger_fields: type: object properties: mode_int: type: integer example: event: '*' target_url: https://webhook.site/7f5edced-00f7-43fb-833d-38e8cbdc6251 trigger_fields: mode_int: 2 responses: '201': description: Create event subscription content: application/json: schema: type: object properties: subscription_id: type: integer examples: Create_event_subscription: value: subscription_id: 253485285 headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /unsubscribe: post: operationId: unsubscribeFromAnEvent summary: Unsubscribe from an event description: 'Unsubscribe an endpoint and no longer receive notifications to it. Important: As noted when creating an event subscription, we highly recommend using random and unique URLs for each subscription so that they are easily removable.' tags: - Event subscriptions requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: url: type: string description: Your endpoint URL to remove required: - url responses: '200': description: Unsubscribe from an event content: application/json: schema: type: array items: {} examples: Unsubscribe_from_an_event: value: [] headers: X-ThriveCart-Account-Name: description: X-ThriveCart-Account-Name schema: type: string example: myaccount X-ThriveCart-Account-URL: description: X-ThriveCart-Account-URL schema: type: string example: https://myaccount.thrivecart.com/ '401': description: Unauthorized - the API key or access token is missing, invalid or expired. content: application/json: schema: $ref: '#/components/schemas/Error' examples: auth_missing: value: error: auth.missing invalid_token: value: error: invalid_token error_description: The access token provided is invalid '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] /customerEmailUpdate: post: operationId: updateCustomerEmailAddress summary: Update Customer Email Address description: Update a customer's email address in your ThriveCart account. This affects all their orders and customer hub access associated with the customer. When the new email matches an existing customer in your account, explicit merge confirmation is required to prevent accidental data consolidation. tags: - Customers requestBody: required: true content: application/json: schema: type: object properties: current_email: type: string new_email: type: string allow_merge: type: boolean example: current_email: john.old@example.com new_email: john.new@example.com allow_merge: false responses: '401': description: Update Customer Email Address content: application/json: schema: type: object properties: success: type: boolean message: type: string data: type: object properties: previous_email: type: string current_email: type: string updated_at: type: string customer_id: type: string examples: Update_Customer_Email_Address: value: success: true message: Customer email updated successfully data: previous_email: john.old@example.com current_email: john.new@example.com updated_at: '2025-01-16T10:30:45Z' customer_id: '2720136' '429': description: Too Many Requests - the account has exceeded 60 requests per minute. security: - bearerAuth: [] - oauth2: [] components: securitySchemes: bearerAuth: type: http scheme: bearer description: 'Account-scoped API key created under Settings > API & webhooks > API tokens, or an OAuth access token, sent as `Authorization: Bearer `.' oauth2: type: oauth2 description: OAuth 2.0 authorization code grant for applications acting on behalf of another ThriveCart account. ThriveCart does not publish a scope reference; access is granted account-wide on consent. flows: authorizationCode: authorizationUrl: https://thrivecart.com/authorization/new tokenUrl: https://thrivecart.com/authorization/token scopes: {} schemas: Error: type: object description: ThriveCart error envelope. Not RFC 9457 problem+json. properties: error: type: string description: Machine-readable error key. error_description: type: string description: Human-readable description, when present. required: - error