Braze Export > Purchases API

The Export > Purchases API from Braze — 3 operation(s) for export > purchases.

Operations 3

GET /purchases/product_list Export Product IDs
GET /purchases/quantity_series Export Number of Purchases
GET /purchases/revenue_series Export Revenue Data by Time

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/braze-export-purchases-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 email required.

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

OpenAPI Specification

braze-export-purchases-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Braze Export > Purchases API
  description: 'The Braze and Radar integration allows you to access sophisticated location-based campaign triggers and user profile enrichment with rich, first-party location data. When Radar geofence or trip tracking events are generated, custom events and user attributes are sent to Braze in real-time. These events and attributes can then be used to trigger location-based campaigns, power last-mile pickup and delivery operations, monitor fleet and shipping logistics, or build user segments based on location patterns. '
  version: 1.0.0
servers:
- url: https://rest.iad-01.braze.com
  description: REST endpoint for instance US-01
- url: https://rest.iad-01.braze.com
  description: REST endpoint for instance US-01
- url: https://rest.iad-02.braze.com
  description: REST endpoint for instance US-02
- url: https://rest.iad-03.braze.com
  description: REST endpoint for instance US-03
- url: https://rest.iad-04.braze.com
  description: REST endpoint for instance US-04
- url: https://rest.iad-05.braze.com
  description: REST endpoint for instance US-05
- url: https://rest.iad-06.braze.com
  description: REST endpoint for instance US-06
- url: https://rest.iad-08.braze.com
  description: REST endpoint for instance US-08
- url: https://rest.fra-01.braze.eu
  description: REST endpoint for instance EU-01
- url: https://rest.fra-02.braze.eu
  description: REST endpoint for instance EU-02
security:
- BearerAuth: []
tags:
- name: Export > Purchases
paths:
  /purchases/product_list:
    get:
      tags:
      - Export > Purchases
      summary: Export Product IDs
      description: "> Use this endpoint to return a paginated lists of product IDs. \n  \n\nTo use this endpoint, youll need to generate an API key with the `purchases.product_list` permission.\n\n## Rate limit\n\nFor customers who onboarded with Braze on or after September 16, 2021, we apply a shared rate limit of 1,000 requests per hour to this endpoint. This rate limit is shared with the `/events/list` endpoint, as documented in [API rate limits](https://www.braze.com/docs/api/api_limits/).\n\n## Response\n\n``` json\nContent-Type: application/json\nAuthorization: Bearer YOUR-REST-API-KEY\n{\n  \"products\": [\n    \"product_name\" (string), the name of the product\n  ],\n  \"message\": \"success\"\n}\n\n```\n\n> **Tip:** For help with CSV and API exports, visit [Export troubleshooting](https://www.braze.com/docs/user_guide/data_and_analytics/export_braze_data/export_troubleshooting/)."
      parameters:
      - name: Authorization
        in: header
        schema:
          type: string
        example: Bearer {{api_key}}
      - name: page
        in: query
        schema:
          type: integer
        description: '(Optional) Integer


          The page of your product list that you would like to view.'
        example: 1
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /purchases/quantity_series:
    get:
      tags:
      - Export > Purchases
      summary: Export Number of Purchases
      description: "> Use this endpoint to return the total number of purchases in your app over a time range. \n  \n\nTo use this endpoint, youll need to generate an API key with the `purchases.quantity_series` permission.\n\n## Rate limit\n\nFor customers who onboarded with Braze on or after September 16, 2021, we apply a shared rate limit of 1,000 requests per hour to this endpoint. This rate limit is shared with the `/events/list` endpoint, as documented in [API rate limits](https://www.braze.com/docs/api/api_limits/).\n\n## Example request\n\n```\ncurl --location --request GET 'https://rest.iad-01.braze.com/purchases/quantity_series?length=100' \\\n--header 'Authorization: Bearer YOUR-REST-API-KEY'\n\n```\n\n## Response\n\n``` json\nContent-Type: application/json\nAuthorization: Bearer YOUR-REST-API-KEY\n{\n  \"message\": (required, string) the status of the export, returns 'success' when completed without errors,\n  \"data\" : [\n    {\n      \"time\" : (string) the date as ISO 8601 date,\n      \"purchase_quantity\" : (int) the number of items purchased in the time period\n      },\n    ...\n  ]\n}\n\n```\n\n> **Tip:** For help with CSV and API exports, visit [Export troubleshooting](https://www.braze.com/docs/user_guide/data_and_analytics/export_braze_data/export_troubleshooting/)."
      parameters:
      - name: Authorization
        in: header
        schema:
          type: string
        example: Bearer {{api_key}}
      - name: ending_at
        in: query
        schema:
          type: string
        description: '(Optional) Datetime (ISO 8601 string)

          Date on which the data series should end. Defaults to time of the request.'
        example: '2018-06-28T23:59:59-5:00'
      - name: length
        in: query
        schema:
          type: integer
        description: '(Required) Integer

          Maximum number of days before ending_at to include in the returned series. Must be between 1 and 100 (inclusive).'
        example: 100
      - name: unit
        in: query
        schema:
          type: integer
        description: '(Optional) String

          Unit of time between data points. Can be `day` or `hour`, defaults to `day`. '
        example: 14
      - name: app_id
        in: query
        schema:
          type: string
        description: '(Optional) String

          App API identifier retrieved from the Settings > Setup and Testing > API Keys to limit analytics to a specific app.'
        example: '{{app_identifier}}'
      - name: product
        in: query
        schema:
          type: string
        description: '(Optional) String

          Name of product to filter response by. If excluded, results for all apps will be returned.'
        example: name
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /purchases/revenue_series:
    get:
      tags:
      - Export > Purchases
      summary: Export Revenue Data by Time
      description: "> Use this endpoint to return the total money spent in your app over a time range. \n  \n\nTo use this endpoint, youll need to generate an API key with the `purchases.revenue_series` permission.\n\n## Rate limit\n\nFor customers who onboarded with Braze on or after September 16, 2021, we apply a shared rate limit of 1,000 requests per hour to this endpoint. This rate limit is shared with the `/events/list` endpoint, as documented in [API rate limits](https://www.braze.com/docs/api/api_limits/).\n\n## Example request\n\n```\ncurl --location --request GET 'https://rest.iad-01.braze.com/purchases/revenue_series?length=100' \\\n--header 'Authorization: Bearer YOUR-REST-API-KEY'\n\n```\n\n## Response\n\n``` json\nContent-Type: application/json\nAuthorization: Bearer YOUR-REST-API-KEY\n{\n  \"message\": (required, string) the status of the export, returns 'success' when completed without errors,\n  \"data\" : [\n    {\n      \"time\" : (string) the date as ISO 8601 date,\n      \"revenue\" : (int) amount of revenue for the time period\n      },\n    ...\n  ]\n}\n\n```\n\n> **Tip:** For help with CSV and API exports, visit [Export troubleshooting](https://www.braze.com/docs/user_guide/data_and_analytics/export_braze_data/export_troubleshooting/)."
      parameters:
      - name: Authorization
        in: header
        schema:
          type: string
        example: Bearer {{api_key}}
      - name: ending_at
        in: query
        schema:
          type: string
        description: '(Optional) Datetime (ISO 8601 string)

          Date on which the data series should end. Defaults to time of the request.'
        example: '2018-06-28T23:59:59-5:00'
      - name: length
        in: query
        schema:
          type: integer
        description: '(Required) Integer

          Maximum number of days before ending_at to include in the returned series. Must be between 1 and 100 (inclusive).'
        example: 100
      - name: unit
        in: query
        schema:
          type: integer
        description: '(Optional) String

          Unit of time between data points. Can be `day` or `hour`, defaults to `day`. '
        example: 14
      - name: app_id
        in: query
        schema:
          type: string
        description: '(Optional) String

          App API identifier retrieved from the Settings > Setup and Testing > API Keys to limit analytics to a specific app.'
        example: '{{app_identifier}}'
      - name: product
        in: query
        schema:
          type: string
        description: '(Optional) String

          Name of product to filter response by. If excluded, results for all apps will be returned.'
        example: name
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  responses:
    BadRequest:
      description: 400 Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: 401 Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: 429 Rate Limited
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: 403 Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InternalServerError:
      description: 500 Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: 404 Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        message:
          type: string
        errors:
          type: array
          items:
            type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer