Read a Connect integration's status
The Connect sync dashboard’s figures for one integration and window: success rate and tier, records synced, held, quarantined and skipped counts, and the top five failure categories. Fluid passes the integration service’s numbers through unchanged and caches each reading for 60 seconds.
A uuid that is not one of your company’s Connect integrations is a 404. An integration with no configured API host is a 503 connect_unconfigured, and one the integration service has no record of is a 409 not_connected. When the integration service fails or refuses the request, the answer is a 502.
Needs the droplets.view permission.
curl --request GET \
--url https://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status', 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.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status",
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://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status"
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://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status")
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{
"connect_status": {
"uuid": "drp_1mjyysle6csm9eb2q2wmffucoetres7cy",
"name": "Exigo",
"platform": "exigo",
"fetched_at": "2026-10-24T15:32:08Z",
"integration": {
"initialized": true,
"live_sync_state": "armed",
"platform": "exigo"
},
"stats": {
"last_24_hours": {
"sync_count": 1200,
"failure_count": 12,
"failure_rate": 1,
"success_rate": 99,
"tier": "healthy",
"records_synced": 1150,
"held_count": 2,
"quarantined_count": 1,
"skipped_count": 30,
"waiting_count": 0,
"error_categories": {
"validation": 9,
"timeout": 3
},
"last_synced_at": "2026-10-24T15:30:00Z"
}
},
"failure_categories": [
{
"entity_type": "order",
"direction": "outbound",
"error_category": "validation",
"count": 9,
"distinct_records": 7,
"kind": "error",
"actionable": true,
"oldest_updated_at": "2026-10-23T18:02:11Z",
"newest_updated_at": "2026-10-24T14:47:51Z"
}
]
},
"status": 200,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"message": "Invalid credentials."
}{
"message": "Not authorized."
}{
"error": {
"message": "Connect integration not found",
"details": {
"code": "not_found"
}
},
"status": 404,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"error": {
"message": "The integration service has no record of this installation.",
"details": {
"code": "not_connected"
}
},
"status": 409,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"error": {
"message": "Invalid parameters",
"details": {
"range": [
"must be one of: 60m, 24h, 7d, 30d"
]
}
},
"status": 422,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"error": {
"message": "The integration service is unavailable.",
"details": {
"code": "backend_unavailable"
}
},
"status": 502,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"error": {
"message": "No Connect API host is configured for this integration.",
"details": {
"code": "connect_unconfigured"
}
},
"status": 503,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}Authorizations
A company admin credential for your company. Droplet installation tokens are refused.
Path Parameters
The integration's droplet uuid, from uuid in the list.
Query Parameters
The window, 60m, 24h, 7d or 30d. Defaults to 24h.
60m, 24h, 7d, 30d curl --request GET \
--url https://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status', 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.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status",
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://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status"
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://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/v2026-10/connect/integrations/{uuid}/status")
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{
"connect_status": {
"uuid": "drp_1mjyysle6csm9eb2q2wmffucoetres7cy",
"name": "Exigo",
"platform": "exigo",
"fetched_at": "2026-10-24T15:32:08Z",
"integration": {
"initialized": true,
"live_sync_state": "armed",
"platform": "exigo"
},
"stats": {
"last_24_hours": {
"sync_count": 1200,
"failure_count": 12,
"failure_rate": 1,
"success_rate": 99,
"tier": "healthy",
"records_synced": 1150,
"held_count": 2,
"quarantined_count": 1,
"skipped_count": 30,
"waiting_count": 0,
"error_categories": {
"validation": 9,
"timeout": 3
},
"last_synced_at": "2026-10-24T15:30:00Z"
}
},
"failure_categories": [
{
"entity_type": "order",
"direction": "outbound",
"error_category": "validation",
"count": 9,
"distinct_records": 7,
"kind": "error",
"actionable": true,
"oldest_updated_at": "2026-10-23T18:02:11Z",
"newest_updated_at": "2026-10-24T14:47:51Z"
}
]
},
"status": 200,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"message": "Invalid credentials."
}{
"message": "Not authorized."
}{
"error": {
"message": "Connect integration not found",
"details": {
"code": "not_found"
}
},
"status": 404,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"error": {
"message": "The integration service has no record of this installation.",
"details": {
"code": "not_connected"
}
},
"status": 409,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"error": {
"message": "Invalid parameters",
"details": {
"range": [
"must be one of: 60m, 24h, 7d, 30d"
]
}
},
"status": 422,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"error": {
"message": "The integration service is unavailable.",
"details": {
"code": "backend_unavailable"
}
},
"status": 502,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}{
"error": {
"message": "No Connect API host is configured for this integration.",
"details": {
"code": "connect_unconfigured"
}
},
"status": 503,
"meta": {
"request_id": "7e2c9b41-3f8a-4d15-b6e0-9a4c21d7f583",
"timestamp": "2026-10-24T15:32:08Z"
}
}