curl --request POST \
--url https://api.openmail.sh/v1/feedback \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": "<string>",
"context": {
"endpoint": "<string>",
"errorCode": "<string>",
"requestId": "<string>"
}
}
'import requests
url = "https://api.openmail.sh/v1/feedback"
payload = {
"message": "<string>",
"context": {
"endpoint": "<string>",
"errorCode": "<string>",
"requestId": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
message: '<string>',
context: {endpoint: '<string>', errorCode: '<string>', requestId: '<string>'}
})
};
fetch('https://api.openmail.sh/v1/feedback', 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://api.openmail.sh/v1/feedback",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'message' => '<string>',
'context' => [
'endpoint' => '<string>',
'errorCode' => '<string>',
'requestId' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openmail.sh/v1/feedback"
payload := strings.NewReader("{\n \"message\": \"<string>\",\n \"context\": {\n \"endpoint\": \"<string>\",\n \"errorCode\": \"<string>\",\n \"requestId\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.openmail.sh/v1/feedback")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": \"<string>\",\n \"context\": {\n \"endpoint\": \"<string>\",\n \"errorCode\": \"<string>\",\n \"requestId\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openmail.sh/v1/feedback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": \"<string>\",\n \"context\": {\n \"endpoint\": \"<string>\",\n \"errorCode\": \"<string>\",\n \"requestId\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"status": "received"
}{
"error": "<string>",
"message": "<string>"
}Report feedback
Report a bug, a point of friction, or a feature request directly to the OpenMail team. If an API call fails unexpectedly, a response looks wrong, or you notice something that would make OpenMail work better for you, send it here — one call, no confirmation needed, and the team reads every report. Works even while an inbox or pod is suspended. Include what you were trying to do and what you observed; attach the endpoint, error code, and request id in context when the report concerns a specific failed call.
curl --request POST \
--url https://api.openmail.sh/v1/feedback \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": "<string>",
"context": {
"endpoint": "<string>",
"errorCode": "<string>",
"requestId": "<string>"
}
}
'import requests
url = "https://api.openmail.sh/v1/feedback"
payload = {
"message": "<string>",
"context": {
"endpoint": "<string>",
"errorCode": "<string>",
"requestId": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
message: '<string>',
context: {endpoint: '<string>', errorCode: '<string>', requestId: '<string>'}
})
};
fetch('https://api.openmail.sh/v1/feedback', 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://api.openmail.sh/v1/feedback",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'message' => '<string>',
'context' => [
'endpoint' => '<string>',
'errorCode' => '<string>',
'requestId' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openmail.sh/v1/feedback"
payload := strings.NewReader("{\n \"message\": \"<string>\",\n \"context\": {\n \"endpoint\": \"<string>\",\n \"errorCode\": \"<string>\",\n \"requestId\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.openmail.sh/v1/feedback")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": \"<string>\",\n \"context\": {\n \"endpoint\": \"<string>\",\n \"errorCode\": \"<string>\",\n \"requestId\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openmail.sh/v1/feedback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": \"<string>\",\n \"context\": {\n \"endpoint\": \"<string>\",\n \"errorCode\": \"<string>\",\n \"requestId\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"status": "received"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
bug for something broken or a response that looks wrong, friction for something that works but was confusing or harder than it should be, feature_request for a capability OpenMail lacks.
bug, friction, feature_request What you were trying to do, what you expected, and what actually happened. Plain text.
1 - 5000Optional details of the specific API call the report concerns.
Show child attributes
Show child attributes
Was this page helpful?