Braze Export > Campaign API

The Export > Campaign API from Braze — 4 operation(s) for export > campaign.

Business capability
Marketing Operations Management BC-400.50

Operations 4

GET /campaigns/data_series Export Campaign Analytics #
GET /campaigns/details Export Campaign Details #
GET /campaigns/list Export Campaign List #
GET /sends/data_series Export Send Analytics #

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-campaign-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

braze-export-campaign-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Braze Export > Campaign 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.
  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 > Campaign
paths:
  /campaigns/data_series:
    get:
      tags:
      - Export > Campaign
      summary: Export Campaign Analytics
      description: '> Use this endpoint to retrieve a daily series of various stats for a campaign over time.'
      parameters:
      - name: Authorization
        in: header
        schema:
          type: string
        example: Bearer {{api_key}}
      - name: campaign_id
        in: query
        schema:
          type: string
        description: '(Required) String


          See [campaign API identifier](https://www.braze.com/docs/api/identifier_types/).


          The `campaign_id` for API campaigns can be found at **Settings > Setup and Testing > API Keys** and the **Campaign Details** page within your dashboard, or you can use the [List campaigns endpoint](https://www.braze.com/docs/api/endpoints/export/campaigns/get_campaigns/).'
        example: '{{campaign_identifier}}'
      - name: length
        in: query
        schema:
          type: integer
        description: '(Required) Integer


          Max number of days before `ending_at` to include in the returned series. Must be between 1 and 100 (inclusive).'
        example: 7
      - name: ending_at
        in: query
        schema:
          type: string
        description: '(Optional) Datetime ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) string)


          Date on which the data series should end. Defaults to time of the request.'
        example: '2020-06-28T23:59:59-5:00'
      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'
      operationId: getCampaignsDataSeries
      x-operation-id-source: derived
  /campaigns/details:
    get:
      tags:
      - Export > Campaign
      summary: Export Campaign Details
      description: '> Use this endpoint to retrieve relevant information on a specified campaign, which can be identified by the `campaign_id`.


        To use this endpoint, youll need to generate an API key with the `campaign.details` permission.


        If you want to retrieve Canvas data, refer to the Canvas Details endpoint.


        Note: If you are using our older navigation, `campaign_id` can be found at **Developer Console** > **API Settings**


        ## Rate limit


        We apply the default Braze rate limit of 250,000 requests per hour to this endpoint, as documented in API rate limits.


        ## Responses


        ``` json

        Content-Type: application/json

        Authorization: Bearer YOUR-REST-API-KEY

        {

        "message": (required, string) the status of the export, returns ''success'' when completed without errors,

        "created_at" : (string) the date created as ISO 8601 date,

        "updated_at" : (string) the date last updated as ISO 8601 date,

        "archived": (boolean) whether this campaign is archived,

        "draft": (boolean) whether this campaign is a draft,

        "name" : (string) the campaign name,

        "description" : (string) the campaign description,

        "schedule_type" : (string) the type of scheduling action,

        "channels" : (array) the list of channels to send via,

        "first_sent" : (string) the date and hour of first sent as ISO 8601 date,

        "last_sent" : (string) the date and hour of last sent as ISO 8601 date,

        "tags" : (array) the tag names associated with the campaign,

        "messages": {

        "message_variation_id": (string) { // **Tip:** For help with CSV and API exports, visit Export troubleshooting.'
      parameters:
      - name: Authorization
        in: header
        schema:
          type: string
        example: Bearer {{api_key}}
      - name: campaign_id
        in: query
        schema:
          type: string
        description: '(Required) String


          See [campaign API identifier](https://www.braze.com/docs/api/identifier_types/).


          The `campaign_id` for API campaigns can be found on the **Settings > Setup and Testing > API Keys** and the campaign details page within your dashboard, or you can use the [Campaign List Endpoint](https://www.braze.com/docs/api/endpoints/export/campaigns/get_campaign_analytics/#campaign-list-endpoint).'
        example: '{{campaign_identifier}}'
      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'
      operationId: getCampaignsDetails
      x-operation-id-source: derived
  /campaigns/list:
    get:
      tags:
      - Export > Campaign
      summary: Export Campaign List
      description: '> Use this endpoint to export a list of campaigns, each of which will include its name, campaign API identifier, whether it is an API campaign, and tags associated with the campaign.


        The campaigns are returned in groups of 100 sorted by time of creation (oldest to newest by default).


        To use this endpoint, youll need to generate an API key with the `campaigns.list` permission.


        ## Rate limit


        We apply the default Braze rate limit of 250,000 requests per hour to this endpoint, as documented in API rate limits.


        ## Campaign list endpoint API response


        ``` json

        Content-Type: application/json

        Authorization: Bearer YOUR-REST-API-KEY

        {

        "message": (required, string) the status of the export, returns ''success'' when completed without errors,

        "campaigns" : [

        {

        "id" : (string) Campaign API Identifier,

        "last_edited": (ISO 8601 string) the last edited time for the message

        "name" : (string) campaign name,

        "is_api_campaign" : (boolean) whether the campaign is an API Campaign,

        "tags" : (array) tag names associated with the campaign

        },

        ...

        ]

        }


        ```


        > **Tip:** For help with CSV and API exports, visit 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 campaigns to return, defaults to 0 (returns the first set of up to 100).'
      - name: include_archived
        in: query
        schema:
          type: boolean
        description: '(Optional) Boolean


          Whether or not to include archived campaigns, defaults to false.'
      - name: sort_direction
        in: query
        schema:
          type: string
        description: '(Optional) String


          - Sort creation time from newest to oldest: pass in the value `desc`.

          - Sort creation time from oldest to newest: pass in the value `asc`.


          If `sort_direction` is not included, the default order is oldest to newest.'
        example: desc
      - name: last_edit.time[gt]
        in: query
        schema:
          type: string
        description: '(Optional) Datetime ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) string)


          Filters the results and only returns campaigns that were edited greater than the time provided till now. Format is `yyyy-MM-DDTHH:mm:ss`.'
        example: '2020-06-28T23:59:59-5:00'
      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'
      operationId: getCampaignsList
      x-operation-id-source: derived
  /sends/data_series:
    get:
      tags:
      - Export > Campaign
      summary: Export Send Analytics
      description: '> Use this endpoint to retrieve a daily series of various stats for a tracked `send_id`.


        Braze stores send analytics for 14 days after the send.


        Campaign conversions will be attributed towards the most recent send id that a given user has received from the campaign.


        To use this endpoint, youll need to generate an API key with the `sends.data_series` permission.


        ## Rate limit


        We apply the default Braze rate limit of 250,000 requests per hour to this endpoint, as documented in API rate limits.


        ## Response


        ### Send analytics endpoint API response


        ``` json

        Content-Type: application/json

        Authorization: Bearer YOUR-REST-API-KEY

        {

        "variation_name": (string) variation name,

        "sent": (int) the number of sends,

        "delivered": (int) the number of messages successfully delivered,

        "undelivered": (int) the number of undelivered,

        "delivery_failed": (int) the number of rejected,

        "direct_opens": (int) the number of direct opens,

        "total_opens": (int) the number of total opens,

        "bounces": (int) the number of bounces,

        "body_clicks": (int) the number of body clicks,

        "revenue": (float) the number of dollars of revenue (USD),

        "unique_recipients": (int) the number of unique recipients,

        "conversions": (int) the number of conversions,

        "conversions_by_send_time": (int) the number of conversions,

        "conversions1": (int, optional) the number of conversions for the second conversion event,

        "conversions1_by_send_time": (int, optional) the number of conversions for the second conversion event by send time,

        "conversions2": (int, optional) the number of conversions for the third conversion event,

        "conversions2_by_send_time": (int, optional) the number of conversions for the third conversion event by send time,

        "conversions3": (int, optional) the number of conversions for the fourth conversion event,

        "conversions3_by_send_time": (int, optional) the number of conversions for the fourth conversion event by send time

        }

        ]

        },

        "conversions_by_send_time": 0,

        "conversions1_by_send_time": 0,

        "conversions2_by_send_time": 0,

        "conversions3_by_send_time": 0,

        "conversions": 0,

        "conversions1": 0,

        "conversions2": 0,

        "conversions3": 0,

        "unique_recipients": 1,

        "revenue": 0

        }

        ],

        "message": "success"

        }


        ```


        > **Tip:** For help with CSV and API exports, visit Export troubleshooting.'
      parameters:
      - name: Authorization
        in: header
        schema:
          type: string
        example: Bearer {{api_key}}
      - name: campaign_id
        in: query
        schema:
          type: string
        description: '(Required) String


          See [Campaign API identifier](https://www.braze.com/docs/api/identifier_types/).'
        example: '{{campaign_identifier}}'
      - name: send_id
        in: query
        schema:
          type: string
        description: '(Required) String


          See [Send API identifier](https://www.braze.com/docs/api/identifier_types/).'
        example: '{{send_identifier}}'
      - name: length
        in: query
        schema:
          type: integer
        description: '(Required) Integer


          Max number of days before `ending_at` to include in the returned series. Must be between 1 and 100 (inclusive).'
        example: 30
      - name: ending_at
        in: query
        schema:
          type: string
        description: '(Optional) Datetime ([ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) string)


          Date on which the data series should end. Defaults to time of the request.'
        example: '2014-12-10T23:59:59-05:00'
      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'
      operationId: getSendsDataSeries
      x-operation-id-source: derived
components:
  responses:
    Unauthorized:
      description: 401 Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: 400 Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: 404 Not Found
      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'
    TooManyRequests:
      description: 429 Rate Limited
      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