curl --request GET \
--url https://brew.new/api/v1/notifications \
--header 'Authorization: Bearer <token>'import requests
url = "https://brew.new/api/v1/notifications"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://brew.new/api/v1/notifications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://brew.new/api/v1/notifications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://brew.new/api/v1/notifications"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://brew.new/api/v1/notifications")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://brew.new/api/v1/notifications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyList notifications
Lists the brand’s notifications, newest first, under { data, pagination }, as the app’s bell shows them: generations, sends, imports, domain checks and score runs finishing or failing, plus comment mentions and replies. Each row has type, status, title, subtitle, a url into the app and the ids it concerns (chatId, emailId, domainId). Reading marks nothing read. Free.
Access each row is shown only when the credential may read its feature, scopes included, so an empty page can mean nothing happened or that this credential cannot see that kind of row (a type it cannot see is an empty page, not an error). By type:
chat_stream,preview_email: theemailsscope.email_sent,email_scheduled,email_send_failed,gradual_send_paused,gradual_send_completed,send_review_rejected:sends(emailsimplies it).domain_status,domain_score_run:domains(emailsimplies it).import_job,validation_job:contacts.automation_pause_window_closed:automations.brand_extracted,brand_image_import: every credential on the brand.api_key_created: theallscope (a signed-in member, or a key or connection holdingall).send_limit_reached: organization admins only (a signed-in admin, an admin’s organization-wide connection, or an organization-wide key holdingall); never a brand key.comment_mention,comment_reply(isPersonal: true): only the person addressed, signed in or on a personal connection; never an API key.
Use when checking what finished or failed since you last looked.
Input type keeps one notification type; limit and cursor (an opaque native cursor; a page can hold fewer rows than limit while hasMore is true).
Returns 200 with a page of Notification rows; notificationId (ntf_…) is stable for the row’s life.
Errors 400 INVALID_REQUEST for an unknown query key or type, or a malformed cursor.
See also getChatContext, getEmail, getDomainHealth.
curl --request GET \
--url https://brew.new/api/v1/notifications \
--header 'Authorization: Bearer <token>'import requests
url = "https://brew.new/api/v1/notifications"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://brew.new/api/v1/notifications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://brew.new/api/v1/notifications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://brew.new/api/v1/notifications"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://brew.new/api/v1/notifications")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://brew.new/api/v1/notifications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyAuthorizations
Send your Brew API key as Authorization: Bearer brew_xxx.
Headers
The brand this request acts on. REQUIRED for organization-scoped credentials (otherwise 400 BRAND_ID_REQUIRED — there is no default brand); list ids with GET /v1/brands. Brand-scoped credentials may omit it, and sending a different brand returns 403 BRAND_SCOPE_MISMATCH. A brand outside your organization returns 404 BRAND_NOT_FOUND.
1 - 64Query Parameters
Only notifications of this type. A type this credential cannot see (its scopes, or a person-only or admin-only type) is an empty page.
chat_stream, import_job, brand_image_import, validation_job, email_sent, email_scheduled, preview_email, brand_extracted, domain_status, domain_score_run, api_key_created, email_send_failed, gradual_send_paused, gradual_send_completed, send_limit_reached, automation_pause_window_closed, send_review_rejected, comment_mention, comment_reply Page size (1-100). Defaults to 100.
1 <= x <= 10050
1 - 8192Was this page helpful?