List CMS Connections
curl --request GET \
--url https://server.promptwatch.com/api/v2/cms/connections \
--header 'X-API-Key: <api-key>'import requests
url = "https://server.promptwatch.com/api/v2/cms/connections"
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://server.promptwatch.com/api/v2/cms/connections', 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://server.promptwatch.com/api/v2/cms/connections",
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://server.promptwatch.com/api/v2/cms/connections"
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://server.promptwatch.com/api/v2/cms/connections")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/cms/connections")
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{
"connections": [
{
"id": "6ba7b822-9dad-11d1-80b4-00c04fd430c8",
"provider": "WEBFLOW",
"isActive": true,
"needsReauth": false,
"siteName": "Example Marketing Site",
"collectionName": "Blog Posts",
"collectionSlug": "blog",
"mappedFields": [
"title",
"content",
"description"
],
"lastSyncedAt": "2026-03-28T14:30:00.000Z",
"createdAt": "2026-03-15T10:00:00.000Z"
}
],
"total": 1
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"code": "CMS_INTEGRATIONS_CONNECTION_NOT_FOUND",
"message": "CMS connection not found"
}Publishing
List CMS Connections
List the project’s Webflow and Framer connections, including whether each is usable for publishing. Use the returned id as connectionId when pushing drafts or publishing live. Connections are created in the dashboard.
GET
/
cms
/
connections
List CMS Connections
curl --request GET \
--url https://server.promptwatch.com/api/v2/cms/connections \
--header 'X-API-Key: <api-key>'import requests
url = "https://server.promptwatch.com/api/v2/cms/connections"
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://server.promptwatch.com/api/v2/cms/connections', 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://server.promptwatch.com/api/v2/cms/connections",
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://server.promptwatch.com/api/v2/cms/connections"
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://server.promptwatch.com/api/v2/cms/connections")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/cms/connections")
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{
"connections": [
{
"id": "6ba7b822-9dad-11d1-80b4-00c04fd430c8",
"provider": "WEBFLOW",
"isActive": true,
"needsReauth": false,
"siteName": "Example Marketing Site",
"collectionName": "Blog Posts",
"collectionSlug": "blog",
"mappedFields": [
"title",
"content",
"description"
],
"lastSyncedAt": "2026-03-28T14:30:00.000Z",
"createdAt": "2026-03-15T10:00:00.000Z"
}
],
"total": 1
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"code": "CMS_INTEGRATIONS_CONNECTION_NOT_FOUND",
"message": "CMS connection not found"
}Authorizations
API key for authentication. Get yours from the Promptwatch dashboard under Settings > API Keys.
⌘I