curl --request GET \
--url https://brew.new/api/v1/emails/{emailId}/inbox-placement-tests/{testId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://brew.new/api/v1/emails/{emailId}/inbox-placement-tests/{testId}"
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/emails/{emailId}/inbox-placement-tests/{testId}', 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/emails/{emailId}/inbox-placement-tests/{testId}",
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/emails/{emailId}/inbox-placement-tests/{testId}"
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/emails/{emailId}/inbox-placement-tests/{testId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://brew.new/api/v1/emails/{emailId}/inbox-placement-tests/{testId}")
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_body{
"testId": "ibp_2f1c9d8a-4e77-4b0e-9a1c-6d5e2f0b7c31",
"emailId": "V1StGXR8_Z5jdHi6B-myT",
"status": "completed",
"domainId": "k57e9m3q1w8r",
"seedCount": 42,
"results": {
"overall": {
"provider": "all",
"total": 42,
"inbox": 38,
"spam": 3,
"missing": 1,
"pending": 0,
"categories": {
"inbox": 34,
"promotions": 4,
"spam": 3
}
},
"byProvider": [
{
"provider": "gmail.com",
"total": 4,
"inbox": 4,
"spam": 0,
"missing": 0,
"pending": 0,
"categories": {
"inbox": 3,
"promotions": 1
}
}
],
"authentication": {
"spf": "pass",
"dkim": "pass",
"dmarc": "pass"
},
"spamFilter": {
"flagged": false,
"score": -0.2,
"threshold": 5,
"rules": [
{
"name": "DKIM_SIGNED",
"score": 0.1,
"description": "Message has a DKIM signature"
}
]
}
},
"createdAt": "2026-07-13T17:00:06.675Z",
"updatedAt": "2026-07-13T17:00:06.675Z"
}Get inbox placement test results
Reads one inbox-placement (seed) test as the bare test resource. Free.
Use when polling a test started with createInboxPlacementTest.
Input emailId and testId in the path. While status is collecting the read refreshes from the provider (re-poll about every 30 seconds until completed).
Returns 200 with, per provider, inbox, spam and missing tallies with folder or tab categories and actual folders (Gmail Promotions, Yahoo bulk, gmx spamverdacht), each provider’s own SPF, DKIM and DMARC verdicts (byProvider[].authentication), Microsoft filter telemetry (microsoftFilter; an SCL of 5 or higher lands in Junk), spoofingDetected, headers (one-click unsubscribe, plain-text part), a spamFilter content verdict with the triggered rules, and diagnosis[] per-provider findings with concrete remediation.
Errors 404 EMAIL_NOT_FOUND when the design, or the test under it, is not in the brand.
See also listInboxPlacementTests, createInboxPlacementTest, getDomainHealth.
curl --request GET \
--url https://brew.new/api/v1/emails/{emailId}/inbox-placement-tests/{testId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://brew.new/api/v1/emails/{emailId}/inbox-placement-tests/{testId}"
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/emails/{emailId}/inbox-placement-tests/{testId}', 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/emails/{emailId}/inbox-placement-tests/{testId}",
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/emails/{emailId}/inbox-placement-tests/{testId}"
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/emails/{emailId}/inbox-placement-tests/{testId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://brew.new/api/v1/emails/{emailId}/inbox-placement-tests/{testId}")
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_body{
"testId": "ibp_2f1c9d8a-4e77-4b0e-9a1c-6d5e2f0b7c31",
"emailId": "V1StGXR8_Z5jdHi6B-myT",
"status": "completed",
"domainId": "k57e9m3q1w8r",
"seedCount": 42,
"results": {
"overall": {
"provider": "all",
"total": 42,
"inbox": 38,
"spam": 3,
"missing": 1,
"pending": 0,
"categories": {
"inbox": 34,
"promotions": 4,
"spam": 3
}
},
"byProvider": [
{
"provider": "gmail.com",
"total": 4,
"inbox": 4,
"spam": 0,
"missing": 0,
"pending": 0,
"categories": {
"inbox": 3,
"promotions": 1
}
}
],
"authentication": {
"spf": "pass",
"dkim": "pass",
"dmarc": "pass"
},
"spamFilter": {
"flagged": false,
"score": -0.2,
"threshold": 5,
"rules": [
{
"name": "DKIM_SIGNED",
"score": 0.1,
"description": "Message has a DKIM signature"
}
]
}
},
"createdAt": "2026-07-13T17:00:06.675Z",
"updatedAt": "2026-07-13T17:00:06.675Z"
}Authorizations
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 - 64Path Parameters
Design id returned by POST /v1/emails and listed by GET /v1/emails.
1 - 64"2SmZOWV3ZQ7W5x6g3m4pA"
1 - 80Response
The test resource with its current placement.
queued, running, completed, partially_completed, failed x >= 0Show child attributes
Show child attributes
sending, collecting Show child attributes
Show child attributes
Was this page helpful?