ProsperStack Offers API

An offer represents a [ProsperStack offer](https://docs.prosperstack.com/offers/creating-an-offer). Offers can be of type `coupon`, `pause_subscription`, `trial_extension`, `change_plan` or `custom`.

Operations 2

GET /offers List offers #
GET /offers/{id} Retrieve an offer #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/prosperstack:prosperstack-offers-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

prosperstack-offers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ProsperStack API Reference Offers API
  version: v1
  description: 'This is the reference documentation for the ProsperStack API v1. Visit ProsperStack at prosperstack.com.


    For more information on ProsperStack features, see the primary documentation.


    Let us know how we can improve the API, documentation or anything else you need help with at support@prosperstack.com.


    # Introduction


    The ProsperStack API provides a REST-like interface to your ProsperStack data. It uses standard HTTP verbs, accepts JSON-encoded request bodies and provides JSON-encoded responses.


    You can use the ProsperStack API to access your live production data or data from test mode. The API key you use to authenticate requests determines which mode will be used.


    # Authentication


    The ProsperStack API uses API keys to authenticate requests. You can manage your API keys from the ProsperStack API Keys settings page.


    Live mode API keys have the prefix `key_` and test mode API keys have the prefix `key_test_`.


    Authentication uses HTTP basic authentication. Provide your API key as the basic authentication username. You don''t need to provide a password.


    A simple example using cURL:


    ```bash

    curl https://api.prosperstack.com/v1/flow_sessions \

    -u key_LSdJXBrN3SP7bdJrQSMp2eZK:

    ```


    Learn more about creating API keys.


    # Pagination


    All list endpoints support cursor-based pagination. The body of a list response will contain a `data` property with an array of objects and a `next_cursor` property desginating the cursor value to retrieve the next set of results.


    Use the value of `next_cursor` in the `cursor` query parameter to specify the set of results to return. If `next_cursor` is `null`, there are no more results.


    You can also specify a `limit` in the query parameters to adjust the number of items per result set. The limit defaults to 10 and has a maximum of 100.


    # Rate limits


    The ProsperStack API enforces a rate limit of 100 requests per minute. Your live mode and test mode accounts have separate limits.


    When the rate limit is exceeded, requests will fail with the HTTP status `429 Too Many Requests` until the limit window resets.


    The ProsperStack API implements the RateLimit Header Fields for HTTP draft which describes a set of HTTP headers you can use to observe current request limits.


    The headers are:


    - `RateLimit-Limit` — The limit of requests per time window (1 minute)

    - `RateLimit-Remaining` — The number of requests left before exceeding the limit

    - `RateLimit-Reset` — The number of seconds until the limit window resets


    If you need to exceed the rate limit, let us know at support@prosperstack.com and we''ll be happy to help.'
  x-logo:
    url: https://prosperstack.com/images/logo-api.svg
servers:
- url: https://api.prosperstack.com/v1
security:
- basicAuth: []
tags:
- name: Offers
  x-displayName: Offers
  description: 'An offer represents a ProsperStack offer.


    Offers can be of type `coupon`, `pause_subscription`, `trial_extension`, `change_plan` or `custom`.'
paths:
  /offers:
    get:
      summary: List offers
      operationId: listOffers
      tags:
      - Offers
      parameters:
      - name: cursor
        in: query
        description: Pagination cursor to retrieve
        schema:
          type: string
      - name: limit
        in: query
        description: Limit of offers to return
        schema:
          type: integer
          minimum: 1
          maximum: 100
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Offer'
                  next_cursor:
                    $ref: '#/components/schemas/Cursor'
        '401':
          description: Unauthorized
          $ref: '#/components/responses/Error'
  /offers/{id}:
    get:
      summary: Retrieve an offer
      operationId: retrieveOfferById
      tags:
      - Offers
      parameters:
      - name: id
        in: path
        description: Offer ID to retrieve
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Offer'
        '401':
          description: Unauthorized
          $ref: '#/components/responses/Error'
        '404':
          description: Not Found
          $ref: '#/components/responses/Error'
components:
  schemas:
    DunningOfferDetails:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - dunning
    CouponOfferDetails:
      type: object
      required:
      - type
      - coupon_type
      - amount_off
      - duration
      - months
      - apply_to
      - platform_coupon_id
      properties:
        type:
          type: string
          enum:
          - coupon
        coupon_type:
          type: string
          enum:
          - percentage
          - fixed
        amount_off:
          type: string
          example: '23.7'
        duration:
          type: string
          enum:
          - once
          - forever
          - repeating
          example: repeating
        months:
          type:
          - number
          - 'null'
          example: 6
        apply_to:
          type: string
          enum:
          - subscription
          - subscriber
        platform_coupon_id:
          type:
          - string
          - 'null'
    TrialExtensionOfferDetails:
      type: object
      required:
      - type
      - days
      properties:
        type:
          type: string
          enum:
          - trial_extension
        days:
          type: number
          example: 14
    Offer:
      type: object
      required:
      - id
      - type
      - goal
      - context
      - name
      - details
      - metadata
      - created_at
      - updated_at
      properties:
        id:
          type: string
          example: offr_jIGqAAUKqWM2pptJTfRuei1t
        type:
          type: string
          enum:
          - change_frequency
          - change_plan
          - coupon
          - custom
          - downgrade
          - dunning
          - free_gift
          - modify_subscription
          - pause_subscription
          - product_swap
          - purchase
          - reactivate
          - reschedule_order
          - trial_extension
          - upgrade
        goal:
          type: string
          enum:
          - retention
          - conversion
          - reactivation
        context:
          type: string
          enum:
          - cancellation_flow
          - conversion_campaign
          - landing_page
        name:
          type: string
          example: 40% off
        details:
          oneOf:
          - $ref: '#/components/schemas/ChangeFrequencyOfferDetails'
          - $ref: '#/components/schemas/ChangePlanOfferDetails'
          - $ref: '#/components/schemas/CouponOfferDetails'
          - $ref: '#/components/schemas/CustomOfferDetails'
          - $ref: '#/components/schemas/DowngradeOfferDetails'
          - $ref: '#/components/schemas/DunningOfferDetails'
          - $ref: '#/components/schemas/FreeGiftOfferDetails'
          - $ref: '#/components/schemas/ModifySubscriptionOfferDetails'
          - $ref: '#/components/schemas/PauseSubscriptionOfferDetails'
          - $ref: '#/components/schemas/ProductSwapOfferDetails'
          - $ref: '#/components/schemas/PurchaseOfferDetails'
          - $ref: '#/components/schemas/ReactivateOfferDetails'
          - $ref: '#/components/schemas/RescheduleOrderOfferDetails'
          - $ref: '#/components/schemas/TrialExtensionOfferDetails'
          - $ref: '#/components/schemas/UpgradeOfferDetails'
        metadata:
          type: object
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    DowngradeOfferDetails:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - downgrade
    Cursor:
      type:
      - string
      - 'null'
      example: 'null'
    ChangeFrequencyOfferDetails:
      type: object
      required:
      - type
      - interval
      - interval_count
      - metadata
      - options
      properties:
        type:
          type: string
          enum:
          - change_frequency
        interval:
          type: string
          enum:
          - day
          - week
          - month
          - year
          example: month
        interval_count:
          type: number
          example: 3
        metadata:
          type: object
        options:
          type: array
          description: All available change-frequency options for this offer
          items:
            type: object
            required:
            - interval
            - interval_count
            - metadata
            properties:
              interval:
                type: string
                enum:
                - day
                - week
                - month
                - year
              interval_count:
                type: number
              metadata:
                type: object
    ModifySubscriptionOfferDetails:
      type: object
      required:
      - type
      - modifications
      properties:
        type:
          type: string
          enum:
          - modify_subscription
        modifications:
          type: array
          description: Modifications applied to the subscription when the offer is accepted
          items:
            type: object
            required:
            - action
            - platform_plan_id
            properties:
              action:
                type: string
                enum:
                - add_plan
                - remove_plan
                - add_add_on
                - remove_add_on
              platform_plan_id:
                type:
                - string
                - 'null'
                description: Platform-specific identifier of the plan or add-on affected by this modification
    ReactivateOfferDetails:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - reactivate
    UpgradeOfferDetails:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - upgrade
    RescheduleOrderOfferDetails:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - reschedule_order
    PurchaseOfferDetails:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - purchase
    PauseSubscriptionOfferDetails:
      type: object
      required:
      - type
      - interval
      - interval_count
      - pause_at
      - metadata
      - options
      properties:
        type:
          type: string
          enum:
          - pause_subscription
        interval:
          type: string
          enum:
          - day
          - week
          - month
          - indefinitely
          - billing_cycle
          example: month
        interval_count:
          type: number
          example: 3
        pause_at:
          type: string
          enum:
          - immediately
          - period_end
        metadata:
          type: object
        options:
          type: array
          description: All available pause options for this offer
          items:
            type: object
            required:
            - interval
            - interval_count
            - metadata
            properties:
              interval:
                type: string
                enum:
                - day
                - week
                - month
                - indefinitely
                - billing_cycle
              interval_count:
                type: number
              metadata:
                type: object
    ChangePlanOfferDetails:
      type: object
      required:
      - type
      - platform_plan_id
      - prorate
      - platform_coupon_id
      properties:
        type:
          type: string
          enum:
          - change_plan
        platform_plan_id:
          type: string
        prorate:
          type: boolean
        platform_coupon_id:
          type:
          - string
          - 'null'
    ProductSwapOfferDetails:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - product_swap
    CustomOfferDetails:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - custom
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: string
    FreeGiftOfferDetails:
      type: object
      required:
      - type
      - platform_variant_id
      properties:
        type:
          type: string
          enum:
          - free_gift
        platform_variant_id:
          type:
          - string
          - 'null'
          description: Platform-specific identifier of the product variant offered as the free gift
  responses:
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic