Integrations
Get Integration
Inspect one integration: what it does, its events, and its wiring
GET
/
api
/
v1
/
integrations
/
{id}
Get Integration
curl --request GET \
--url https://api.sequenzy.com/api/v1/integrations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sequenzy.com/api/v1/integrations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sequenzy.com/api/v1/integrations/{id}', 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.sequenzy.com/api/v1/integrations/{id}",
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.sequenzy.com/api/v1/integrations/{id}"
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.sequenzy.com/api/v1/integrations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/integrations/{id}")
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{
"success": true,
"integration": {
"id": "int_abc123",
"provider": "stripe",
"name": "Stripe",
"category": "payments",
"providerAccountId": "acct_1ABC",
"isActive": true,
"syncEnabled": true,
"syncStatus": "idle",
"lastSyncAt": "2026-08-01T10:30:00Z",
"lastSyncError": null,
"totalCustomersSynced": 4821,
"totalEventsSynced": 19422,
"connectedAt": "2026-01-14T08:12:00Z",
"disconnectedAt": null,
"details": {},
"lastSyncSkipped": null
},
"capabilities": {
"provider": "stripe",
"name": "Stripe",
"category": "payments",
"availability": "available",
"connectMethod": "oauth",
"syncs": ["customers", "subscriptions", "products", "revenue"],
"emits": [],
"writesAttributes": [],
"actions": ["enable_sync", "disable_sync", "sync_now", "sync_products"]
},
"events": [
{
"event": "saas.payment_failed",
"when": "a payment attempt fails (card declined, expired, insufficient funds)",
"addsTags": ["past-due"],
"removesTags": [],
"rules": [{ "addsTags": ["past-due"], "removesTags": [], "conditions": { "requiresTags": ["customer"] } }],
"observedByAccount": false,
"accountLastSeenAt": null,
"ruleSource": "default",
"listeners": []
},
{
"event": "saas.purchase",
"when": "a customer completes a purchase or starts a paid subscription",
"addsTags": ["customer"],
"removesTags": ["lead", "past-due"],
"rules": [{ "addsTags": ["customer"], "removesTags": ["lead", "past-due"], "conditions": null }],
"observedByAccount": true,
"accountLastSeenAt": "2026-08-01T10:25:00Z",
"ruleSource": "default",
"listeners": [
{
"sequenceId": "seq_123",
"name": "New customer onboarding",
"effectiveStatus": "live",
"acceptsNewEnrollments": true,
"effectiveStatusSummary": "Live. New subscribers enroll and existing recipients keep receiving steps."
}
]
}
],
"unusedEvents": ["saas.payment_failed"],
"activity": {
"windowHours": 24,
"total": 128,
"processed": 127,
"failed": 1,
"skipped": 0,
"stalled": 0,
"lastActivityAt": "2026-08-01T11:02:00Z",
"recentFailures": [
{
"action": "process_webhook",
"eventType": "invoice.payment_failed",
"email": "buyer@example.com",
"error": "Subscriber not found",
"createdAt": "2026-08-01T09:14:00Z"
}
]
},
"recommendations": [
{
"code": "events_without_sequences",
"severity": "info",
"message": "Stripe can emit 1 event(s) that no sequence triggers on: saas.payment_failed.",
"action": "Create a sequence with an event trigger for the ones worth acting on, for example a dunning sequence on saas.payment_failed."
}
],
"availableActions": ["disable_sync", "sync_now", "sync_products"]
}
{
"success": false,
"error": "Unauthorized"
}
{
"success": false,
"error": "API key is missing required scope: sequences:read"
}
{
"success": false,
"error": "Integration not found"
}
Inspect a connected integration in depth: what the provider syncs, every event it can emit, the tags each event applies through your sync rules, which sequences trigger on those events, recent activity, and prioritized recommendations.
The most useful field is
Requires an API key with the
unusedEvents - the events this integration produces that no sequence acts on. That is the difference between “the integration is broken” and “the integration works but nothing is built on it yet”.
Read-only. Credentials, access tokens, and webhook secrets are never returned.
account:read, subscribers:read, and
sequences:read scopes.
Request
string
required
Integration ID, from List Integrations.
curl "https://api.sequenzy.com/api/v1/integrations/int_abc123" \
-H "Authorization: Bearer YOUR_API_KEY"
Response fields
object
The connection itself, with the same fields as the list endpoint plus
name
(display name) and category.object
The provider’s catalog entry - what it syncs, what it emits, what it writes.
See List Integration Capabilities.
null for a provider with no catalog entry.object[]
Each emitted event crossed with your account’s configuration: aggregate
addsTags/removesTags, every matching entry in rules with its own
conditions, listening sequences, and account-wide observation fields.string[]
Events the provider emits that no sequence triggers on. These are the concrete
automation gaps for this integration.
string[]
Provider event names the account has never received from any source. Use the
integration-specific 24-hour activity log to diagnose this connection.
object
Webhook and sync activity over the last 24 hours: totals by status, a
stalled count for events queued more than 15 minutes without completing,
lastActivityAt, and up to five recentFailures.object[]
Prioritized problems and suggestions. Each has a
code, a severity of
error, warning, or info, a message, and a concrete action.string[]
Actions callable right now given the integration’s current state. A
disconnected integration returns an empty array.
Responses
{
"success": true,
"integration": {
"id": "int_abc123",
"provider": "stripe",
"name": "Stripe",
"category": "payments",
"providerAccountId": "acct_1ABC",
"isActive": true,
"syncEnabled": true,
"syncStatus": "idle",
"lastSyncAt": "2026-08-01T10:30:00Z",
"lastSyncError": null,
"totalCustomersSynced": 4821,
"totalEventsSynced": 19422,
"connectedAt": "2026-01-14T08:12:00Z",
"disconnectedAt": null,
"details": {},
"lastSyncSkipped": null
},
"capabilities": {
"provider": "stripe",
"name": "Stripe",
"category": "payments",
"availability": "available",
"connectMethod": "oauth",
"syncs": ["customers", "subscriptions", "products", "revenue"],
"emits": [],
"writesAttributes": [],
"actions": ["enable_sync", "disable_sync", "sync_now", "sync_products"]
},
"events": [
{
"event": "saas.payment_failed",
"when": "a payment attempt fails (card declined, expired, insufficient funds)",
"addsTags": ["past-due"],
"removesTags": [],
"rules": [{ "addsTags": ["past-due"], "removesTags": [], "conditions": { "requiresTags": ["customer"] } }],
"observedByAccount": false,
"accountLastSeenAt": null,
"ruleSource": "default",
"listeners": []
},
{
"event": "saas.purchase",
"when": "a customer completes a purchase or starts a paid subscription",
"addsTags": ["customer"],
"removesTags": ["lead", "past-due"],
"rules": [{ "addsTags": ["customer"], "removesTags": ["lead", "past-due"], "conditions": null }],
"observedByAccount": true,
"accountLastSeenAt": "2026-08-01T10:25:00Z",
"ruleSource": "default",
"listeners": [
{
"sequenceId": "seq_123",
"name": "New customer onboarding",
"effectiveStatus": "live",
"acceptsNewEnrollments": true,
"effectiveStatusSummary": "Live. New subscribers enroll and existing recipients keep receiving steps."
}
]
}
],
"unusedEvents": ["saas.payment_failed"],
"activity": {
"windowHours": 24,
"total": 128,
"processed": 127,
"failed": 1,
"skipped": 0,
"stalled": 0,
"lastActivityAt": "2026-08-01T11:02:00Z",
"recentFailures": [
{
"action": "process_webhook",
"eventType": "invoice.payment_failed",
"email": "buyer@example.com",
"error": "Subscriber not found",
"createdAt": "2026-08-01T09:14:00Z"
}
]
},
"recommendations": [
{
"code": "events_without_sequences",
"severity": "info",
"message": "Stripe can emit 1 event(s) that no sequence triggers on: saas.payment_failed.",
"action": "Create a sequence with an event trigger for the ones worth acting on, for example a dunning sequence on saas.payment_failed."
}
],
"availableActions": ["disable_sync", "sync_now", "sync_products"]
}
{
"success": false,
"error": "Unauthorized"
}
{
"success": false,
"error": "API key is missing required scope: sequences:read"
}
{
"success": false,
"error": "Integration not found"
}
Previous
List Integration CapabilitiesDescribe what each integration provider syncs, emits, and supports
Next
⌘I
Get Integration
curl --request GET \
--url https://api.sequenzy.com/api/v1/integrations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sequenzy.com/api/v1/integrations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sequenzy.com/api/v1/integrations/{id}', 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.sequenzy.com/api/v1/integrations/{id}",
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.sequenzy.com/api/v1/integrations/{id}"
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.sequenzy.com/api/v1/integrations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/integrations/{id}")
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{
"success": true,
"integration": {
"id": "int_abc123",
"provider": "stripe",
"name": "Stripe",
"category": "payments",
"providerAccountId": "acct_1ABC",
"isActive": true,
"syncEnabled": true,
"syncStatus": "idle",
"lastSyncAt": "2026-08-01T10:30:00Z",
"lastSyncError": null,
"totalCustomersSynced": 4821,
"totalEventsSynced": 19422,
"connectedAt": "2026-01-14T08:12:00Z",
"disconnectedAt": null,
"details": {},
"lastSyncSkipped": null
},
"capabilities": {
"provider": "stripe",
"name": "Stripe",
"category": "payments",
"availability": "available",
"connectMethod": "oauth",
"syncs": ["customers", "subscriptions", "products", "revenue"],
"emits": [],
"writesAttributes": [],
"actions": ["enable_sync", "disable_sync", "sync_now", "sync_products"]
},
"events": [
{
"event": "saas.payment_failed",
"when": "a payment attempt fails (card declined, expired, insufficient funds)",
"addsTags": ["past-due"],
"removesTags": [],
"rules": [{ "addsTags": ["past-due"], "removesTags": [], "conditions": { "requiresTags": ["customer"] } }],
"observedByAccount": false,
"accountLastSeenAt": null,
"ruleSource": "default",
"listeners": []
},
{
"event": "saas.purchase",
"when": "a customer completes a purchase or starts a paid subscription",
"addsTags": ["customer"],
"removesTags": ["lead", "past-due"],
"rules": [{ "addsTags": ["customer"], "removesTags": ["lead", "past-due"], "conditions": null }],
"observedByAccount": true,
"accountLastSeenAt": "2026-08-01T10:25:00Z",
"ruleSource": "default",
"listeners": [
{
"sequenceId": "seq_123",
"name": "New customer onboarding",
"effectiveStatus": "live",
"acceptsNewEnrollments": true,
"effectiveStatusSummary": "Live. New subscribers enroll and existing recipients keep receiving steps."
}
]
}
],
"unusedEvents": ["saas.payment_failed"],
"activity": {
"windowHours": 24,
"total": 128,
"processed": 127,
"failed": 1,
"skipped": 0,
"stalled": 0,
"lastActivityAt": "2026-08-01T11:02:00Z",
"recentFailures": [
{
"action": "process_webhook",
"eventType": "invoice.payment_failed",
"email": "buyer@example.com",
"error": "Subscriber not found",
"createdAt": "2026-08-01T09:14:00Z"
}
]
},
"recommendations": [
{
"code": "events_without_sequences",
"severity": "info",
"message": "Stripe can emit 1 event(s) that no sequence triggers on: saas.payment_failed.",
"action": "Create a sequence with an event trigger for the ones worth acting on, for example a dunning sequence on saas.payment_failed."
}
],
"availableActions": ["disable_sync", "sync_now", "sync_products"]
}
{
"success": false,
"error": "Unauthorized"
}
{
"success": false,
"error": "API key is missing required scope: sequences:read"
}
{
"success": false,
"error": "Integration not found"
}