cURL
curl --request GET \
--url https://app.revyops.com/api/public/integrations \
--header 'X-API-KEY: <api-key>'import requests
url = "https://app.revyops.com/api/public/integrations"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://app.revyops.com/api/public/integrations', 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://app.revyops.com/api/public/integrations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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://app.revyops.com/api/public/integrations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.revyops.com/api/public/integrations")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.revyops.com/api/public/integrations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"window_days": 123,
"integrations": [
{
"key": "<string>",
"name": "<string>",
"category": "sequencer",
"connected": true,
"last_synced_at": "2023-11-07T05:31:56Z",
"activity_types": [
{
"type": "<string>",
"events": [
"<string>"
],
"last_received_at": "2023-11-07T05:31:56Z"
}
]
}
]
}API Reference
List Integrations
Every integration this workspace can connect, whether it is connected, when it last synced, and the activity types it supplies with the newest record of each. Looks back 30 days and is cached for up to 10 minutes.
GET
/
public
/
integrations
cURL
curl --request GET \
--url https://app.revyops.com/api/public/integrations \
--header 'X-API-KEY: <api-key>'import requests
url = "https://app.revyops.com/api/public/integrations"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://app.revyops.com/api/public/integrations', 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://app.revyops.com/api/public/integrations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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://app.revyops.com/api/public/integrations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.revyops.com/api/public/integrations")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.revyops.com/api/public/integrations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"window_days": 123,
"integrations": [
{
"key": "<string>",
"name": "<string>",
"category": "sequencer",
"connected": true,
"last_synced_at": "2023-11-07T05:31:56Z",
"activity_types": [
{
"type": "<string>",
"events": [
"<string>"
],
"last_received_at": "2023-11-07T05:31:56Z"
}
]
}
]
}Returns every integration the workspace can connect, whether it is connected, when it last synced, and the activity types it supplies.
last_received_at is the newest record of that type in the last 30 days, so a connected integration with null there is connected but silent. Answers are cached for up to 10 minutes.
events lists what each type records. Sequencers record emails sent, replied and bounced; they never record opens.
{
"window_days": 30,
"integrations": [
{
"key": "instantly",
"name": "Instantly",
"category": "sequencer",
"connected": true,
"last_synced_at": "2026-09-24T09:58:12Z",
"activity_types": [
{ "type": "email", "events": ["sent", "replied", "bounced"], "last_received_at": "2026-09-24T09:58:12Z" }
]
},
{
"key": "closecrm",
"name": "Close CRM",
"category": "crm",
"connected": true,
"last_synced_at": "2026-09-24T10:03:40Z",
"activity_types": [
{ "type": "call", "events": [], "last_received_at": "2026-09-24T08:15:02Z" },
{ "type": "opportunity", "events": [], "last_received_at": "2026-09-24T10:03:40Z" },
{ "type": "sms", "events": [], "last_received_at": null }
]
}
]
}
Was this page helpful?

