Connections Sites API
The Sites API from Connections — 5 operation(s) for sites.
The Sites API from Connections — 5 operation(s) for sites.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/connections-icu:connections-icu-sites-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Connections Icu Sites API
version: 1.0.0
description: 'Operations tagged Sites across 2 of this provider''s published API definitions: connections-icu-analytics-openapi-original.json, connections-icu-analytics-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://analytics.connectionsapi.com
tags:
- name: Sites
paths:
/api/sites/{siteId}/exports:
get:
summary: The latest full raw-data export of a site
description: 'The site''s latest bulk raw export run (or null), and `tier_allows`: whether the site owner''s plan may start one. Poll this, or the run''s path, while `status` is running.'
security:
- ApiKeyAuth: []
parameters:
- name: siteId
in: path
required: true
schema:
type: string
description: The tracked site's id (or domain).
responses:
'200':
description: '{ site_id, tier, tier_allows, run }'
content:
application/json:
schema:
type: object
properties:
site_id:
type: string
tier:
type: string
tier_allows:
type: boolean
run:
type: object
properties:
id:
type: string
format: uuid
site_id:
type: string
status:
type: string
enum:
- running
- done
- failed
started_at:
type: string
format: date-time
finished_at:
type: string
format: date-time
nullable: true
months:
type: array
nullable: true
items:
type: string
description: The months the site holds events in, once planned.
months_done:
type: integer
expires_at:
type: string
format: date-time
nullable: true
error:
type: string
nullable: true
nullable: true
'401':
description: Auth required.
'404':
description: No such site visible to this credential.
tags:
- Sites
operationId: getApiSitesBySiteIdExports
x-operation-id-source: derived
post:
summary: Start a full raw-data export of a site
description: 'Exports the site''s WHOLE raw event history as gzipped JSON lines, one set of files per calendar month, plus a manifest.json with every file''s sha256 and bytes. Runs in the background: answers 202 with a run id to poll. Files are kept 7 days after the export finishes. One export per site runs at a time. Needs analytics:write and the argusRawExport plan floor; below it the answer is 403 { error: ''upgrade_required'', feature: ''argusRawExport'', upgrade: true } and nothing is started.'
security:
- ApiKeyAuth: []
parameters:
- name: siteId
in: path
required: true
schema:
type: string
description: The tracked site's id (or domain).
requestBody:
required: false
content:
application/json:
schema:
type: object
properties: {}
description: No fields. The path id and the resolved site are the entire input.
responses:
'202':
description: '{ site_id, accepted: true, run_id, poll }'
'401':
description: Auth required.
'403':
description: upgrade_required (below the plan floor), or the key lacks analytics:write.
'404':
description: No such site visible to this credential.
'409':
description: '{ error: ''EXPORT_RUNNING'', blocking_run } - an export of this site is already running; poll that run.'
'503':
description: The export job could not be queued; nothing is running.
tags:
- Sites
operationId: postApiSitesBySiteIdExports
x-operation-id-source: derived
servers:
- url: https://analytics.connectionsapi.com
/api/sites/{siteId}/exports/{runId}:
get:
summary: Download a raw-data export
description: 'One export run. For a finished run: `manifest_url` and one download `url` per file, each short-lived (`link_expires_in_seconds`) and re-issued on every read. A running or failed run answers with `state` and no files.'
security:
- ApiKeyAuth: []
parameters:
- name: siteId
in: path
required: true
schema:
type: string
description: The tracked site's id (or domain).
- name: runId
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: '{ site_id, run, state, expires_at, link_expires_in_seconds, manifest_url, files }'
content:
application/json:
schema:
type: object
properties:
site_id:
type: string
run:
type: object
properties:
id:
type: string
format: uuid
site_id:
type: string
status:
type: string
enum:
- running
- done
- failed
started_at:
type: string
format: date-time
finished_at:
type: string
format: date-time
nullable: true
months:
type: array
nullable: true
items:
type: string
description: The months the site holds events in, once planned.
months_done:
type: integer
expires_at:
type: string
format: date-time
nullable: true
error:
type: string
nullable: true
state:
type: string
enum:
- running
- failed
- ready
expires_at:
type: string
format: date-time
link_expires_in_seconds:
type: integer
manifest_url:
type: string
files:
type: array
items:
type: object
properties:
name:
type: string
description: events-YYYY-MM-partNNN.ndjson.gz
month:
type: string
description: YYYY-MM
bytes:
type: integer
sha256:
type: string
url:
type: string
'401':
description: Auth required.
'404':
description: No such site, or no such export for it.
'410':
description: '{ error: ''EXPORT_EXPIRED'', expired_at } - the files were deleted 7 days after the export finished.'
tags:
- Sites
operationId: getApiSitesBySiteIdExportsByRunId
x-operation-id-source: derived
servers:
- url: https://analytics.connectionsapi.com
/api/sites/{siteId}/verdicts:
get:
summary: Themis verdicts for a site
description: The AI verdict engine's latest GOOD (do nothing) / BAD (fix now) judgment per ARGUS matrix entry for one site you own - the error burst of the last 24h and the latest AI Visibility run. Each row carries the human TLDR, the playbook for the next agent, every vote, and whether the entry has anything to judge right now (`unjudgeable`). `tier_allows` says whether this site's owner may ask for a fresh judgment (Pass Pro and above); reading past verdicts is always allowed.
security:
- ApiKeyAuth: []
parameters:
- name: siteId
in: path
required: true
schema:
type: string
description: The tracked site's id (or domain).
responses:
'200':
description: '{ site_id, tier_allows, tier, decisions: [{ entry: { id, title, what }, unjudgeable, actor, decision | null }] }'
'401':
description: Auth required.
'404':
description: No such site visible to this credential.
tags:
- Sites
operationId: getApiSitesBySiteIdVerdicts
x-operation-id-source: derived
servers:
- url: https://analytics.connectionsapi.com
/api/sites/{siteId}/verdicts/judge:
post:
summary: Judge a site now (Themis)
description: 'Runs the AI verdict engine over every ARGUS matrix entry that has something to observe for this site - three independent votes per entry, thinking on - and returns the fresh rows. Charged in credits to the site owner at the decision_judgment door, so the caller must BE the owner (a key needs analytics:write) and the owner''s tier must clear the argusVerdicts floor (Pass Pro and above); below it the answer is 403 { error: ''upgrade_required'', feature: ''argusVerdicts'' } and nothing is charged. An entry whose observation is unchanged and under a day old is skipped, not re-billed.'
security:
- ApiKeyAuth: []
parameters:
- name: siteId
in: path
required: true
schema:
type: string
description: The tracked site's id (or domain).
requestBody:
required: false
content:
application/json:
schema:
type: object
properties: {}
description: No fields. The path id and the resolved site are the entire input.
responses:
'200':
description: '{ site_id, tier_allows: true, tier, decisions, judged, skipped, unjudgeable, refused, failed, deferred }'
'401':
description: Auth required.
'403':
description: upgrade_required (below the tier floor), the key lacks analytics:write, or the caller is not the site's owner.
'404':
description: No such site visible to this credential.
tags:
- Sites
operationId: postApiSitesBySiteIdVerdictsJudge
x-operation-id-source: derived
servers:
- url: https://analytics.connectionsapi.com
/sites:
get:
summary: List tracked sites
description: The owner's tracked properties (the dashboard company switcher), each with a 24h event pulse.
security:
- ApiKeyAuth: []
responses:
'200':
description: '{ count, sites: [...] }'
'401':
description: Auth required.
tags:
- Sites
operationId: getSites
x-operation-id-source: derived
post:
summary: Create a tracked site
description: Provision a new tracked property (tenant). Returns its public ingest key (ak_…).
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- domain
properties:
domain:
type: string
name:
type: string
companyId:
type: string
description: The company the site lives in. Required for an API key (400 without it); a dashboard session may omit it.
retention_days:
type: integer
default: 180
timezone:
type: string
example: America/New_York
description: The IANA timezone the site's days are counted in. Omitted, the site counts UTC days until one is chosen.
responses:
'200':
description: '{ id, domain, ingest_key }'
'401':
description: Auth required.
tags:
- Sites
operationId: postSites
x-operation-id-source: derived
patch:
summary: Rename a tracked site
description: Renames a site you own. `name` is the only mutable field; `domain` keys the pixel, so it is immutable.
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
- name
properties:
id:
type: string
name:
type: string
responses:
'200':
description: '{ id, name, domain }'
'401':
description: Auth required.
'404':
description: Not found, or not yours to rename.
tags:
- Sites
operationId: patchSites
x-operation-id-source: derived
delete:
summary: Stop tracking a site
description: 'Removes a site you own: it stops accepting events and no longer appears in any list or read. Its history (events, sessions, errors, entities, rollups, revenue, SEO and alert state) is kept, and POST /sites with the same domain restores it with its existing ingest key. Scoped to the caller: a constellation admin who can merely SEE a first-party property cannot remove it.'
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
responses:
'200':
description: '{ id, name, domain, removed: true, history_kept: true }'
'400':
description: id missing, or the id names a company placeholder rather than a website.
'401':
description: Auth required.
'404':
description: Not found, or not yours to remove.
tags:
- Sites
operationId: deleteSites
x-operation-id-source: derived
servers:
- url: https://analytics.connectionsapi.com
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: 'A Studio-minted cnx_live_ key carrying analytics:read (analytics:write to provision sites). The SAME key is also accepted as Authorization: Bearer (see BearerAuth). Studio is the sole key issuer. The legacy per-plane argus_live_ key class was retired 2026-06-21.'
memberSession:
type: http
scheme: bearer
description: The member's Connections session access token, exactly as this product's app sends it. Only operations that declare this scheme accept one.
x-connections-credential: member-session
cnxKey:
type: http
scheme: bearer
description: A cnx_live_ key minted in Studio. It acts as the member who minted it, within its scopes.
x-connections-credential: connections-key
BearerAuth:
type: http
scheme: bearer
description: A cnx_live_ key carrying analytics:read, sent as a bearer token.
x-refined-from:
- connections-icu-analytics-openapi-original.json
- connections-icu-analytics-openapi.yml