ProsperStack Subscribers API

A subscriber represents a customer of your product.

Operations 4

GET /subscribers List subscribers #
GET /subscribers/{id} Retrieve a subscriber #
PATCH /subscribers/{id} Update a subscriber #
DELETE /subscribers/{id} Delete a subscriber #

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-subscribers-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-subscribers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ProsperStack API Reference Subscribers 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: Subscribers
  x-displayName: Subscribers
  description: A subscriber represents a customer of your product.
paths:
  /subscribers:
    get:
      summary: List subscribers
      operationId: listSubscribers
      tags:
      - Subscribers
      parameters:
      - name: platform_id
        in: query
        description: Filter subscribers by subscription platform ID
        schema:
          type: string
      - name: email
        in: query
        description: Filter subscribers by email address
        schema:
          type: string
      - name: status
        in: query
        description: Filter subscribers by status
        schema:
          type: string
          enum:
          - active
          - canceled
          - converted
          - deflected
          - inactive
          - reactivated
          - recovered
          - saved
      - name: latest_flow_session_status
        in: query
        description: Filter subscribers by the status of their latest flow session
        schema:
          type: string
          enum:
          - saved
          - deflected
          - canceled
          - incomplete
      - name: created_at
        in: query
        description: 'Filter subscribers by the `created_at` property. Specify as a dictionary with one or more of the following properties:


          - `created_at[gt]` — Return subscribers where `created_at` is greater than this value

          - `created_at[lt]` — Return subscribers where `created_at` is less than this value

          - `created_at[gte]` — Return subscribers where `created_at` is greater than or equal to this value

          - `created_at[lte]` — Return subscribers where `created_at` is less than or equal to this value


          Specify date values in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.

          '
        schema:
          type: string
      - name: updated_at
        in: query
        description: 'Filter subscribers by the `updated_at` property. Specify as a dictionary with one or more of the following properties:


          - `updated_at[gt]` — Return subscribers where `updated_at` is greater than this value

          - `updated_at[lt]` — Return subscribers where `updated_at` is less than this value

          - `updated_at[gte]` — Return subscribers where `updated_at` is greater than or equal to this value

          - `updated_at[lte]` — Return subscribers where `updated_at` is less than or equal to this value


          Specify date values in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.

          '
        schema:
          type: string
      - name: cursor
        in: query
        description: Pagination cursor to retrieve
        schema:
          type: string
      - name: limit
        in: query
        description: Limit of subscribers 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/Subscriber'
                  next_cursor:
                    $ref: '#/components/schemas/Cursor'
        '401':
          description: Unauthorized
          $ref: '#/components/responses/Error'
  /subscribers/{id}:
    get:
      summary: Retrieve a subscriber
      operationId: retrieveSubscriberById
      tags:
      - Subscribers
      parameters:
      - name: id
        in: path
        description: Subscriber ID to retrieve
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscriber'
        '401':
          description: Unauthorized
          $ref: '#/components/responses/Error'
        '404':
          description: Not Found
          $ref: '#/components/responses/Error'
    patch:
      summary: Update a subscriber
      description: 'Update a subscriber. Only the custom properties of a subscriber can be modified.


        Returns the updated subscriber on success.'
      operationId: updateSubscriberById
      tags:
      - Subscribers
      parameters:
      - name: id
        in: path
        description: Subscriber ID to update
        required: true
        schema:
          type: string
      requestBody:
        $ref: '#/components/requestBodies/Subscriber'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscriber'
        '400':
          description: Bad Request
          $ref: '#/components/responses/Error'
        '401':
          description: Unauthorized
          $ref: '#/components/responses/Error'
        '404':
          description: Not Found
          $ref: '#/components/responses/Error'
    delete:
      summary: Delete a subscriber
      description: Delete a subscriber. This does not affect reporting.
      operationId: deleteSubscriberById
      parameters:
      - name: id
        in: path
        description: Subscriber ID to delete
        required: true
        schema:
          type: string
      tags:
      - Subscribers
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          $ref: '#/components/responses/Error'
        '404':
          description: Not Found
          $ref: '#/components/responses/Error'
components:
  schemas:
    SubscriberPropertyValue:
      type: object
      required:
      - property
      - value
      - formatted_value
      properties:
        property:
          $ref: '#/components/schemas/SubscriberProperty'
        value:
          oneOf:
          - type: string
          - type: string
            format: date
          - type: number
          - type: boolean
          example: 5800
        formatted_value:
          type: string
          example: 5,800
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: string
    Subscriber:
      type: object
      required:
      - id
      - platform_id
      - name
      - email
      - status
      - properties
      - data
      - created_at
      - updated_at
      properties:
        id:
          type: string
          example: subr_dRiytWmkVtSBt9mOpRaC0ca0
        platform_id:
          type: string
          example: cus_Jax42BBWGOWuDp
        name:
          type: string
          example: Jane Doe
        email:
          type: string
          example: jane@example.com
        status:
          type: string
          enum:
          - active
          - canceled
          - converted
          - deflected
          - inactive
          - reactivated
          - recovered
          - saved
          example: saved
        properties:
          type: array
          items:
            $ref: '#/components/schemas/SubscriberPropertyValue'
        data:
          type: object
          description: Additional data about the subscriber from the connected subscription platform
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Cursor:
      type:
      - string
      - 'null'
      example: 'null'
    SubscriberProperty:
      type: object
      required:
      - id
      - key
      - name
      - entity
      - type
      - format
      properties:
        id:
          type: string
          example: prop_jrtpyZs1httwFFIl7V80cHwf
        key:
          type: string
          example: number_of_contacts
        name:
          type: string
          example: Number of contacts
        entity:
          type: string
          enum:
          - subscriber
        type:
          type: string
          enum:
          - text
          - number
          - boolean
          - date
          example: number
        format:
          type:
          - string
          - 'null'
          enum:
          - number
          - currency
          example: number
  requestBodies:
    Subscriber:
      content:
        application/json:
          schema:
            type: object
            properties:
              properties:
                type: object
                description: 'Object containing properties to update. Use property keys as the object keys.


                  You can use an empty string or `null` value to delete a property.


                  Read more about [formatting custom properties](https://prosperstack.com/docs/custom-properties/#formatting-data-for-custom-properties).

                  '
                example:
                  last_contacted: '2021-05-04'
                  preferred_name: Johnny
  responses:
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic