curl --request POST \
--url https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect';
const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect"
payload = {}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
request.AddJsonBody("{}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect",
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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"mailbox": {
"address": "<string>",
"dailyEmailLimit": 123,
"disconnectReason": "<string>",
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>",
"mailboxProvider": "gmail",
"resolvedSignature": "<string>",
"signature": "<string>",
"status": "active",
"trackingDomain": "<string>",
"trackingDomainStatus": "active"
},
"message": "Mailbox credentials were verified and the mailbox is active again.",
"nextStep": "Nothing to do.",
"oauthUrl": "https://accounts.google.com/o/oauth2/auth?...",
"result": "reconnected"
}{
"data": [
{
"createdAt": "<string>",
"type": "email",
"value": "<string>"
}
],
"message": "<string>"
}{
"data": [
{
"createdAt": "<string>",
"type": "email",
"value": "<string>"
}
],
"message": "<string>"
}{
"data": [
{
"createdAt": "<string>",
"type": "email",
"value": "<string>"
}
],
"message": "<string>"
}{
"data": [
{
"createdAt": "<string>",
"type": "email",
"value": "<string>"
}
],
"message": "<string>"
}Reconnect mailbox
Requests reconnection of a mailbox that has lost access. Branch on the response result field (not mailbox.status alone).
Results:
- reconnected: credentials verified; mailbox is active again. nextStep: nothing to do.
- already_connected: mailbox was already active. nextStep: nothing to do.
- disconnected: still access_lost after an SMTP/IMAP check. nextStep: PATCH …/connection-settings, then retry reconnect. If the provider account is missing, send both SMTP and IMAP so it is registered again.
- oauth_required: Google/Outlook needs user consent. nextStep: open oauthUrl, then handle redirectUrl. redirectUrl is required and must be allowlisted (contact Salesforge support).
- suspended: admin/billing suspension. nextStep: contact support.
- deleted: mailbox is deleted. nextStep: connect again as a new mailbox.
- pending: connection still being set up. nextStep: wait and poll GET mailbox.
- ineligible: reconnect does not apply for this state.
redirectUrl: required for Google/Outlook OAuth mailboxes; omit for SMTP/IMAP. Same allowlisting rules as POST /mailboxes/oauth-link.
curl --request POST \
--url https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect';
const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect"
payload = {}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
request.AddJsonBody("{}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect",
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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.salesforge.ai/public/v2/workspaces/{workspaceID}/mailboxes/{mailboxID}/reconnect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"mailbox": {
"address": "<string>",
"dailyEmailLimit": 123,
"disconnectReason": "<string>",
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>",
"mailboxProvider": "gmail",
"resolvedSignature": "<string>",
"signature": "<string>",
"status": "active",
"trackingDomain": "<string>",
"trackingDomainStatus": "active"
},
"message": "Mailbox credentials were verified and the mailbox is active again.",
"nextStep": "Nothing to do.",
"oauthUrl": "https://accounts.google.com/o/oauth2/auth?...",
"result": "reconnected"
}{
"data": [
{
"createdAt": "<string>",
"type": "email",
"value": "<string>"
}
],
"message": "<string>"
}{
"data": [
{
"createdAt": "<string>",
"type": "email",
"value": "<string>"
}
],
"message": "<string>"
}{
"data": [
{
"createdAt": "<string>",
"type": "email",
"value": "<string>"
}
],
"message": "<string>"
}{
"data": [
{
"createdAt": "<string>",
"type": "email",
"value": "<string>"
}
],
"message": "<string>"
}Authorizations
Body
Reconnect request. redirectUrl required for Google/Outlook (allowlisted); omit for SMTP/IMAP.
- Option 1
- Option 2
The body is of type object.
Response
Reconnect outcome
Show child attributes
Show child attributes
Short explanation of the outcome.
"Mailbox credentials were verified and the mailbox is active again."
What the caller should do next.
"Nothing to do."
OAuth authorization URL. Present only when result is oauth_required.
"https://accounts.google.com/o/oauth2/auth?..."
Explicit reconnect outcome. Prefer this over combining fields with mailbox.status.
reconnected, already_connected, disconnected, oauth_required, suspended, deleted, pending, ineligible "reconnected"
