Braze API Overview Braze provides a high performance REST API to allow you to track users, send messages, export data, and more.
Bring your own key. This API needs your own Braze Endpoints key - get one from the provider, add it once below, and the proxy injects it on every call. Your OmniStream plan covers the unified SDK, key storage, and proxy - the provider's own rate limits still apply to your key.
This is a community listing. If you own this API, you can request ownership.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("braze/campaignAnalytics");One install, one key - the same client calls every API on the marketplace.
(Required*) String The external_id of the user. Must include at least one and at most 50 `external_ids`.
(Optional) Integer The limit on the maximum number of results returned. Default (and max) limit is 100.
(Optional) Integer Number of templates to skip before returning rest of the templates that fit the search criteria.
(Required*) String The phone number of the user (must include at least one phone number and at most 50 phone numbers). The recommendation is to provide this in the E.164 format.
Campaign Analytics
Campaign Details
Campaign List
Canvas Data Series Analytics
Canvas Data Analytics Summary
/**
* BrazeEndpoints - generated by OmniStream from Braze Endpoints's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/braze";
export class BrazeEndpointsError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `BrazeEndpoints error ${status}`);
this.name = "BrazeEndpointsError";
this.status = status;
this.code = code;
}
}
export interface BrazeEndpointsOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class BrazeEndpoints {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: BrazeEndpointsOptions = {}) {
if (!token) throw new Error("BrazeEndpoints: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new BrazeEndpointsError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** Campaign Analytics */
campaignAnalytics(params: { "campaign_id"?: string; "length"?: string; "ending_at"?: string }): Promise<any> {
return this._request("GET", "/campaigns/data_series", { params });
}
/** Campaign Details */
campaignDetails(params: { "campaign_id"?: string }): Promise<any> {
return this._request("GET", "/campaigns/details", { params });
}
/** Campaign List */
campaignList(params: { "page"?: string; "include_archived"?: string; "sort_direction"?: string; "last_edit.time[gt]"?: string }): Promise<any> {
return this._request("GET", "/campaigns/list", { params });
}
/** Canvas Data Series Analytics */
canvasDataSeriesAnalytics(params: { "canvas_id"?: string; "ending_at"?: string; "starting_at"?: string; "length"?: string; "include_variant_breakdown"?: string; "include_step_breakdown"?: string; "include_deleted_step_data"?: string }): Promise<any> {
return this._request("GET", "/canvas/data_series", { params });
}
/** Canvas Data Analytics Summary */
canvasDataAnalyticsSummary(params: { "canvas_id"?: string; "ending_at"?: string; "starting_at"?: string; "length"?: string; "include_variant_breakdown"?: string; "include_step_breakdown"?: string; "include_deleted_step_data"?: string }): Promise<any> {
return this._request("GET", "/canvas/data_summary", { params });
}
/** Canvas Details */
canvasDetails(params: { "canvas_id"?: string }): Promise<any> {
return this._request("GET", "/canvas/details", { params });
}
/** Canvas List */
canvasList(params: { "page"?: string; "include_archived"?: string; "sort_direction"?: string; "last_edit.time[gt]"?: string }): Promise<any> {
return this._request("GET", "/canvas/list", { params });
}
/** Schedule API Triggered Canvases */
scheduleApiTriggeredCanvases(body: unknown): Promise<any> {
return this._request("POST", "/canvas/trigger/schedule/create", { body });
}
/** See Content Block Information */
seeContentBlockInformation(params: { "content_block_id"?: string; "include_inclusion_data"?: string }): Promise<any> {
return this._request("GET", "/content_blocks/info", { params });
}
/** List Available Content Blocks */
listAvailableContentBlocks(params: { "modified_after"?: string; "modified_before"?: string; "limit"?: string; "offset"?: string }): Promise<any> {
return this._request("GET", "/content_blocks/list", { params });
}
/** Query Hard Bounced Emails */
queryHardBouncedEmails(params: { "start_date"?: string; "end_date"?: string; "limit"?: string; "offset"?: string; "email"?: string }): Promise<any> {
return this._request("GET", "/email/hard_bounces", { params });
}
/** Query List of Unsubscribed Email Addresses */
queryListOfUnsubscribedEmailAddresses(params: { "start_date"?: string; "end_date"?: string; "limit"?: string; "offset"?: string; "sort_direction"?: string; "email"?: string }): Promise<any> {
return this._request("GET", "/email/unsubscribes", { params });
}
/** Custom Events Analytics */
customEventsAnalytics(params: { "event"?: string; "length"?: string; "unit"?: string; "ending_at"?: string; "app_id"?: string; "segment_id"?: string }): Promise<any> {
return this._request("GET", "/events/data_series", { params });
}
/** Custom Events List */
customEventsList(params: { "page"?: string }): Promise<any> {
return this._request("GET", "/events/list", { params });
}
/** News Feed Card Analytics */
newsFeedCardAnalytics(params: { "card_id"?: string; "length"?: string; "unit"?: string; "ending_at"?: string }): Promise<any> {
return this._request("GET", "/feed/data_series", { params });
}
/** News Feed Cards Details */
newsFeedCardsDetails(params: { "card_id"?: string }): Promise<any> {
return this._request("GET", "/feed/details", { params });
}
/** News Feed Cards List */
newsFeedCardsList(params: { "page"?: string; "include_archived"?: string; "sort_direction"?: string }): Promise<any> {
return this._request("GET", "/feed/list", { params });
}
/** Daily Active Users by Date */
dailyActiveUsersByDate(params: { "length"?: string; "ending_at"?: string; "app_id"?: string }): Promise<any> {
return this._request("GET", "/kpi/dau/data_series", { params });
}
/** Monthly Active Users for Last 30 Days */
monthlyActiveUsersForLast30Days(params: { "length"?: string; "ending_at"?: string; "app_id"?: string }): Promise<any> {
return this._request("GET", "/kpi/mau/data_series", { params });
}
/** Daily New Users by Date */
dailyNewUsersByDate(params: { "length"?: string; "ending_at"?: string; "app_id"?: string }): Promise<any> {
return this._request("GET", "/kpi/new_users/data_series", { params });
}
/** KPIs for Daily App Uninstalls by Date */
kpIsForDailyAppUninstallsByDate(params: { "length"?: string; "ending_at"?: string; "app_id"?: string }): Promise<any> {
return this._request("GET", "/kpi/uninstalls/data_series", { params });
}
/** Get Upcoming Scheduled Campaigns and Canvases */
getUpcomingScheduledCampaignsAndCanvases(params: { "end_time"?: string }): Promise<any> {
return this._request("GET", "/messages/scheduled_broadcasts", { params });
}
/** Segment Analytics */
segmentAnalytics(params: { "segment_id"?: string; "length"?: string; "ending_at"?: string }): Promise<any> {
return this._request("GET", "/segments/data_series", { params });
}
/** Segment Details */
segmentDetails(params: { "segment_id"?: string }): Promise<any> {
return this._request("GET", "/segments/details", { params });
}
/** Segment List */
segmentList(params: { "page"?: string; "sort_direction"?: string }): Promise<any> {
return this._request("GET", "/segments/list", { params });
}
/** Send Analytics */
sendAnalytics(params: { "campaign_id"?: string; "send_id"?: string; "length"?: string; "ending_at"?: string }): Promise<any> {
return this._request("GET", "/sends/data_series", { params });
}
/** App Sessions by Time */
appSessionsByTime(params: { "length"?: string; "unit"?: string; "ending_at"?: string; "app_id"?: string; "segment_id"?: string }): Promise<any> {
return this._request("GET", "/sessions/data_series", { params });
}
/** List User's Subscription Group Status - SMS */
listUserSSubscriptionGroupStatusSms(params: { "subscription_group_id"?: string; "external_id"?: string; "phone"?: string }): Promise<any> {
return this._request("GET", "/subscription/status/get", { params });
}
/** List User's Subscription Group - SMS */
listUserSSubscriptionGroupSms(params: { "external_id"?: string; "limit"?: string; "offset"?: string; "phone"?: string }): Promise<any> {
return this._request("GET", "/subscription/user/status", { params });
}
/** See Email Template Information */
seeEmailTemplateInformation(params: { "email_template_id"?: string }): Promise<any> {
return this._request("GET", "/templates/email/info", { params });
}
/** List Available Email Templates */
listAvailableEmailTemplates(params: { "modified_after"?: string; "modified_before"?: string; "limit"?: string; "offset"?: string }): Promise<any> {
return this._request("GET", "/templates/email/list", { params });
}
}
export default BrazeEndpoints;
No reviews yet. Be the first to rate this API.
Yes. Braze Endpoints uses bearer authentication, so you bring your own key from the provider. You store it once on OmniStream and the proxy injects it into every call, so your code only ever sends your Omni key.
Braze API Overview Braze provides a high performance REST API to allow you to track users, send messages, export data, and more. It exposes 31 endpoints over GET, POST, including GET /campaigns/data_series, GET /campaigns/details, GET /campaigns/list.
Install the OmniStream SDK for your language and call Braze Endpoints through it. The client is generated from this API's OpenAPI spec, so parameters and responses are fully typed, and the same client also calls every other API in the marketplace.
You can start on the free plan. OmniStream charges for the unified SDK, key storage and proxy rather than for Braze Endpoints itself, and Braze Endpoints's own rate limits still apply to your provider key.
QuickChart: An API to generate charts and QR codes using QuickChart services.
Canvas Details
Canvas List
Schedule API Triggered Canvases
See Content Block Information
List Available Content Blocks
Query Hard Bounced Emails
Query List of Unsubscribed Email Addresses
Custom Events Analytics
Custom Events List
News Feed Card Analytics
News Feed Cards Details
News Feed Cards List
Daily Active Users by Date
Monthly Active Users for Last 30 Days
Daily New Users by Date
KPIs for Daily App Uninstalls by Date
Get Upcoming Scheduled Campaigns and Canvases
Segment Analytics
Segment Details
Segment List
Send Analytics
App Sessions by Time
List User's Subscription Group Status - SMS
List User's Subscription Group - SMS
See Email Template Information
List Available Email Templates