openapi: 3.0.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: Forbidden: description: 403 Forbidden 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' NotFound: description: 404 Not Found content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: 400 Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' InternalServerError: description: 500 Internal Server Error 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