Agency
Agency API reference
Every endpoint of the agency API, with its fields, an example response, and curl and Node examples.
Authenticate with an account API key in X-API-Key; GET needs agency:read and everything else agency:write. Send an Idempotency-Key on every POST. How authentication, errors, pagination and rate limits work is on the Agency API page.
Endpoints
41 endpoints in 6 groups. Paths are relative to https://api.seentics.com.
- GETList clients
- POSTCreate a client
- GETGet a client with its websites
- PATCHUpdate a client
- POSTArchive a client
- POSTRestore an archived client
- DELETEDelete a client
- GETList a client’s websites
- POSTAdd a website to a client
- GETDashboard pages the client can see
- PUTSet which dashboard pages the client can see
- GETList a client’s users
- POSTInvite a client user
- PATCHRename, disable or enable a client user
- DELETERemove a client user
- POSTEmail a new sign-in link
Overview
/api/v1/agency/overviewagency:readQuery
| Name | Type | Description |
|---|---|---|
period | string | 7d, 30d or 90d; default 30d. |
{
"data": {
"period": {
"key": "30d",
"start": "2026-09-17",
"end": "2026-10-16",
"previous_start": "2026-08-18",
"previous_end": "2026-09-16"
},
"totals": {
"visitors": 48210,
"pageviews": 131004,
"events": 412000,
"recordings": 2100,
"leads": 88
},
"previous_totals": {
"visitors": 42890,
"pageviews": 120310,
"events": 380200,
"recordings": 1950,
"leads": 71
},
"clients": [
{
"id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"status": "active",
"website_count": 1,
"totals": {
"visitors": 48210,
"events": 412000,
"leads": 88
},
"previous_totals": {
"visitors": 42890,
"events": 380200,
"leads": 71
}
}
],
"top_movers": [
{
"website_id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"website_name": "Acme Bakery",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"metric": "visitors",
"current": 48210,
"previous": 42890,
"change_pct": 12.4
}
],
"alerts": [
{
"id": "c0b5d1e2-7a44-4f0e-9b1a-3d2e6f8a9b10",
"kind": "tracking_stopped",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"website_id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"resource": "events",
"period": "2026-10-16",
"created_at": "2026-10-16T06:00:00.000Z",
"dismissed_at": null
}
],
"generated_at": "2026-10-17T09:00:00.000Z"
}
}curl -X GET "https://api.seentics.com/api/v1/agency/overview?period=30d" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/alerts/:id/dismissagency:write · send an Idempotency-KeyPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The alert’s ID. |
{
"data": {
"id": "c0b5d1e2-7a44-4f0e-9b1a-3d2e6f8a9b10",
"kind": "tracking_stopped",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"website_id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"resource": "events",
"period": "2026-10-16",
"created_at": "2026-10-16T06:00:00.000Z",
"dismissed_at": "2026-10-17T09:00:00.000Z"
}
}curl -X POST "https://api.seentics.com/api/v1/agency/alerts/c0b5d1e2-7a44-4f0e-9b1a-3d2e6f8a9b10/dismiss" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"/api/v1/agency/setupagency:read{
"data": {
"steps": [
{
"id": "branding",
"done": true
},
{
"id": "first_client",
"done": true
},
{
"id": "website_installed",
"done": false
},
{
"id": "client_user",
"done": false
},
{
"id": "features_limits",
"done": false
}
]
}
}curl -X GET "https://api.seentics.com/api/v1/agency/setup" \
-H "X-API-Key: $SEENTICS_API_KEY"Clients
/api/v1/agency/clientsagency:readQuery
| Name | Type | Description |
|---|---|---|
status | "active" | "suspended" | "archived" | Only clients in this status. |
q | string | Search name and company. |
limit | integer | Up to 100 rows; default 25. |
cursor | string | The next_cursor of the previous page. |
{
"data": [
{
"id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"company": "Acme Bakery Ltd",
"notes": "",
"status": "active",
"website_count": 1,
"collect_features": {
"analytics": true,
"heatmaps": true,
"replays": true,
"funnels": true,
"automations": true,
"errors": true
},
"created_at": "2026-10-09T07:50:21.158Z",
"updated_at": "2026-10-09T07:50:21.158Z"
}
],
"page": {
"next_cursor": null,
"has_more": false
}
}curl -X GET "https://api.seentics.com/api/v1/agency/clients?status=active" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/clientsagency:write · send an Idempotency-KeyBody
| Name | Type | Description |
|---|---|---|
namerequired | string | Client name, 1–120 characters. |
company | string | Company name, up to 200 characters. |
notes | string | Private notes, up to 2000 characters. |
{
"name": "Acme Bakery",
"company": "Acme Bakery Ltd"
}{
"data": {
"id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"company": "Acme Bakery Ltd",
"notes": "",
"status": "active",
"website_count": 0,
"collect_features": {
"analytics": true,
"heatmaps": true,
"replays": true,
"funnels": true,
"automations": true,
"errors": true
},
"created_at": "2026-10-09T07:50:21.158Z",
"updated_at": "2026-10-09T07:50:21.158Z",
"websites": []
}
}curl -X POST "https://api.seentics.com/api/v1/agency/clients" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name":"Acme Bakery","company":"Acme Bakery Ltd"}'/api/v1/agency/clients/:idagency:readPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
{
"data": {
"id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"company": "Acme Bakery Ltd",
"notes": "",
"status": "active",
"website_count": 1,
"collect_features": {
"analytics": true,
"heatmaps": true,
"replays": true,
"funnels": true,
"automations": true,
"errors": true
},
"created_at": "2026-10-09T07:50:21.158Z",
"updated_at": "2026-10-09T07:50:21.158Z",
"websites": [
{
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": true,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
}
]
}
}curl -X GET "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/clients/:idagency:writePath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
Body
| Name | Type | Description |
|---|---|---|
name | string | Client name, 1–120 characters. |
company | string | Company name, up to 200 characters. |
notes | string | Private notes, up to 2000 characters. |
status | "active" | "suspended" | "archived" | Anything but active stops its websites collecting. |
collect_features | Record<"analytics" | "heatmaps" | "replays" | "funnels" | "automations" | "errors", boolean> | What its websites collect; analytics: false stops collection entirely. |
{
"notes": "Renews in March"
}{
"data": {
"id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"company": "Acme Bakery Ltd",
"notes": "Renews in March",
"status": "active",
"website_count": 1,
"collect_features": {
"analytics": true,
"heatmaps": true,
"replays": true,
"funnels": true,
"automations": true,
"errors": true
},
"created_at": "2026-10-09T07:50:21.158Z",
"updated_at": "2026-10-09T07:50:21.158Z",
"websites": [
{
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": true,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
}
]
}
}curl -X PATCH "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"notes":"Renews in March"}'/api/v1/agency/clients/:id/archiveagency:write · send an Idempotency-KeyPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
{
"data": {
"id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"company": "Acme Bakery Ltd",
"notes": "",
"status": "archived",
"website_count": 1,
"collect_features": {
"analytics": true,
"heatmaps": true,
"replays": true,
"funnels": true,
"automations": true,
"errors": true
},
"created_at": "2026-10-09T07:50:21.158Z",
"updated_at": "2026-10-09T07:50:21.158Z",
"websites": [
{
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": true,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
}
]
}
}curl -X POST "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/archive" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"/api/v1/agency/clients/:id/unarchiveagency:write · send an Idempotency-KeyPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
{
"data": {
"id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"company": "Acme Bakery Ltd",
"notes": "",
"status": "active",
"website_count": 1,
"collect_features": {
"analytics": true,
"heatmaps": true,
"replays": true,
"funnels": true,
"automations": true,
"errors": true
},
"created_at": "2026-10-09T07:50:21.158Z",
"updated_at": "2026-10-09T07:50:21.158Z",
"websites": [
{
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": true,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
}
]
}
}curl -X POST "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/unarchive" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"/api/v1/agency/clients/:idconfirm=true. Its websites stay in your account, no longer assigned.Scope agency:writePath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
Query
| Name | Type | Description |
|---|---|---|
confirmrequired | boolean | Must be true. |
Answers 204 with no body.
curl -X DELETE "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94?confirm=true" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/clients/:id/websitesagency:readPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
Query
| Name | Type | Description |
|---|---|---|
limit | integer | Up to 100 rows; default 25. |
cursor | string | The next_cursor of the previous page. |
{
"data": [
{
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": true,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
}
],
"page": {
"next_cursor": null,
"has_more": false
}
}curl -X GET "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/websites" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/clients/:id/websitesagency:write · send an Idempotency-KeyPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
Body
| Name | Type | Description |
|---|---|---|
namerequired | string | Website name. |
urlrequired | string | The site’s address. |
{
"name": "Acme Bakery",
"url": "https://acmebakery.test"
}{
"data": {
"website": {
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": false,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
},
"install": {
"website_id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"tracking_id": "ST-76d3842a9594c586",
"script_url": "https://seentics.com/trackers/seentics.min.js",
"snippet_html": "<script defer data-website-id=\"2f60eb30-722c-4fbf-8afa-99fe0e67f6d9\" src=\"https://seentics.com/trackers/seentics.min.js\"></script>",
"instructions": {
"html": {
"summary": "Paste this tag into the <head> of every page: <script defer data-website-id=\"2f60eb30-722c-4fbf-8afa-99fe0e67f6d9\" src=\"https://seentics.com/trackers/seentics.min.js\"></script>",
"docs_url": "https://seentics.com/docs/tracker"
},
"gtm": {
"summary": "In Google Tag Manager, add a Custom HTML tag with the snippet, fired on All Pages, then publish the container.",
"docs_url": "https://seentics.com/docs/google-tag-manager"
},
"nextjs": {
"summary": "npm i @seentics/next, then render <Seentics websiteId=\"2f60eb30-722c-4fbf-8afa-99fe0e67f6d9\" /> in the root layout.",
"docs_url": "https://seentics.com/docs/frameworks#nextjs"
},
"wordpress": {
"summary": "Install the Seentics plugin and paste the website ID 2f60eb30-722c-4fbf-8afa-99fe0e67f6d9 into its settings.",
"docs_url": "https://seentics.com/docs/wordpress"
},
"shopify": {
"summary": "Paste the snippet into theme.liquid before </head>, and add the Seentics custom pixel for purchases.",
"docs_url": "https://seentics.com/docs/shopify"
},
"npm": {
"summary": "npm i @seentics/react (or vue, nuxt, astro, svelte) and pass websiteId \"2f60eb30-722c-4fbf-8afa-99fe0e67f6d9\" to its component.",
"docs_url": "https://seentics.com/docs/frameworks"
}
},
"verification": {
"status": "not_seen",
"is_verified": false,
"last_event_at": null,
"events_24h": 0
}
}
}
}curl -X POST "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/websites" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name":"Acme Bakery","url":"https://acmebakery.test"}'/api/v1/agency/clients/:id/featuresagency:readPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
{
"data": {
"features": {
"overview": "view",
"events": "view",
"paths": "view",
"revenue": "off",
"recordings": "off",
"heatmaps": "view",
"funnels": "view",
"goals": "edit",
"automations": "off",
"leads": "off",
"conversions": "off",
"ai": "off",
"errors": "off",
"privacy": "view"
}
}
}curl -X GET "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/features" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/clients/:id/featuresoff, view or edit; a feature left out is off. Client users see only pages set to view or edit, and change things only on edit; any other request answers 403 feature_not_allowed.Scope agency:writePath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
Body
| Name | Type | Description |
|---|---|---|
featuresrequired | Record<feature, "off" | "view" | "edit"> | Every feature id. |
{
"features": {
"overview": "view",
"events": "view",
"paths": "view",
"revenue": "off",
"recordings": "off",
"heatmaps": "view",
"funnels": "view",
"goals": "edit",
"automations": "off",
"leads": "off",
"conversions": "off",
"ai": "off",
"errors": "off",
"privacy": "view"
}
}{
"data": {
"features": {
"overview": "view",
"events": "view",
"paths": "view",
"revenue": "off",
"recordings": "off",
"heatmaps": "view",
"funnels": "view",
"goals": "edit",
"automations": "off",
"leads": "off",
"conversions": "off",
"ai": "off",
"errors": "off",
"privacy": "view"
}
}
}curl -X PUT "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/features" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"features":{"overview":"view","events":"view","paths":"view","revenue":"off","recordings":"off","heatmaps":"view","funnels":"view","goals":"edit","automations":"off","leads":"off","conversions":"off","ai":"off","errors":"off","privacy":"view"}}'/api/v1/agency/clients/:id/usersagency:readPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
Query
| Name | Type | Description |
|---|---|---|
limit | integer | Up to 100 rows; default 25. |
cursor | string | The next_cursor of the previous page. |
{
"data": [
{
"id": "6d2c8e14-3b5a-4f7e-a1c9-0e8b7d6f5a42",
"email": "jess@acmebakery.test",
"name": "Jess Baker",
"status": "active",
"invited_at": "2026-10-12T10:00:00.000Z",
"last_seen_at": "2026-10-16T08:12:44.000Z"
}
],
"page": {
"next_cursor": null,
"has_more": false
}
}curl -X GET "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/users" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/clients/:id/usersagency:write · send an Idempotency-KeyPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
Body
| Name | Type | Description |
|---|---|---|
emailrequired | string | Where the sign-in link goes. |
name | string | Their name, up to 120 characters. |
{
"email": "jess@acmebakery.test",
"name": "Jess Baker"
}{
"data": {
"id": "6d2c8e14-3b5a-4f7e-a1c9-0e8b7d6f5a42",
"email": "jess@acmebakery.test",
"name": "Jess Baker",
"status": "invited",
"invited_at": "2026-10-12T10:00:00.000Z",
"last_seen_at": null
}
}curl -X POST "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/users" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"email":"jess@acmebakery.test","name":"Jess Baker"}'/api/v1/agency/clients/:id/users/:userIdagency:writePath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
userIdrequired | uuid | The client user’s ID. |
Body
| Name | Type | Description |
|---|---|---|
status | "active" | "disabled" | disabled stops their sign-in. |
name | string | Their name. |
{
"status": "disabled"
}{
"data": {
"id": "6d2c8e14-3b5a-4f7e-a1c9-0e8b7d6f5a42",
"email": "jess@acmebakery.test",
"name": "Jess Baker",
"status": "disabled",
"invited_at": "2026-10-12T10:00:00.000Z",
"last_seen_at": "2026-10-16T08:12:44.000Z"
}
}curl -X PATCH "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/users/6d2c8e14-3b5a-4f7e-a1c9-0e8b7d6f5a42" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status":"disabled"}'/api/v1/agency/clients/:id/users/:userIdagency:writePath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
userIdrequired | uuid | The client user’s ID. |
Answers 204 with no body.
curl -X DELETE "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/users/6d2c8e14-3b5a-4f7e-a1c9-0e8b7d6f5a42" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/clients/:id/users/:userId/send-linkagency:write · send an Idempotency-KeyPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
userIdrequired | uuid | The client user’s ID. |
{
"data": {
"sent": true
}
}curl -X POST "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/users/6d2c8e14-3b5a-4f7e-a1c9-0e8b7d6f5a42/send-link" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"Websites
/api/v1/agency/websitesagency:readQuery
| Name | Type | Description |
|---|---|---|
client_id | uuid | Only this client’s websites. |
unassigned | boolean | true for websites with no client. |
q | string | Search name and URL. |
limit | integer | Up to 100 rows; default 25. |
cursor | string | The next_cursor of the previous page. |
{
"data": [
{
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": true,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
}
],
"page": {
"next_cursor": null,
"has_more": false
}
}curl -X GET "https://api.seentics.com/api/v1/agency/websites?unassigned=true" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/websitesGET /agency/websites/:id/install.Scope agency:write · send an Idempotency-KeyBody
| Name | Type | Description |
|---|---|---|
namerequired | string | Website name. |
urlrequired | string | The site’s address. |
client_id | uuid | null | The client to put it under. |
{
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94"
}{
"data": {
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": false,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
}
}curl -X POST "https://api.seentics.com/api/v1/agency/websites" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name":"Acme Bakery","url":"https://acmebakery.test","client_id":"5bbeaa88-b089-4923-ad54-8fdcbbcdba94"}'/api/v1/agency/websites/:idagency:readPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The website’s ID. |
{
"data": {
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": true,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
}
}curl -X GET "https://api.seentics.com/api/v1/agency/websites/2f60eb30-722c-4fbf-8afa-99fe0e67f6d9" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/websites/:idclient_id: null takes the website out of any client.Scope agency:writePath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The website’s ID. |
Body
| Name | Type | Description |
|---|---|---|
name | string | Website name. |
url | string | The site’s address. |
client_id | uuid | null | Move it to this client, or null. |
{
"client_id": null
}{
"data": {
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"client_id": null,
"name": "Acme Bakery",
"url": "https://acmebakery.test",
"tracking_id": "ST-76d3842a9594c586",
"is_active": true,
"is_verified": true,
"created_at": "2026-10-09T07:52:33.324Z",
"updated_at": "2026-10-09T07:52:33.324Z"
}
}curl -X PATCH "https://api.seentics.com/api/v1/agency/websites/2f60eb30-722c-4fbf-8afa-99fe0e67f6d9" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":null}'/api/v1/agency/websites/:idagency:writePath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The website’s ID. |
Answers 204 with no body.
curl -X DELETE "https://api.seentics.com/api/v1/agency/websites/2f60eb30-722c-4fbf-8afa-99fe0e67f6d9" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/websites/:id/installagency:readPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The website’s ID. |
{
"data": {
"website_id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"tracking_id": "ST-76d3842a9594c586",
"script_url": "https://seentics.com/trackers/seentics.min.js",
"snippet_html": "<script defer data-website-id=\"2f60eb30-722c-4fbf-8afa-99fe0e67f6d9\" src=\"https://seentics.com/trackers/seentics.min.js\"></script>",
"instructions": {
"html": {
"summary": "Paste this tag into the <head> of every page: <script defer data-website-id=\"2f60eb30-722c-4fbf-8afa-99fe0e67f6d9\" src=\"https://seentics.com/trackers/seentics.min.js\"></script>",
"docs_url": "https://seentics.com/docs/tracker"
},
"gtm": {
"summary": "In Google Tag Manager, add a Custom HTML tag with the snippet, fired on All Pages, then publish the container.",
"docs_url": "https://seentics.com/docs/google-tag-manager"
},
"nextjs": {
"summary": "npm i @seentics/next, then render <Seentics websiteId=\"2f60eb30-722c-4fbf-8afa-99fe0e67f6d9\" /> in the root layout.",
"docs_url": "https://seentics.com/docs/frameworks#nextjs"
},
"wordpress": {
"summary": "Install the Seentics plugin and paste the website ID 2f60eb30-722c-4fbf-8afa-99fe0e67f6d9 into its settings.",
"docs_url": "https://seentics.com/docs/wordpress"
},
"shopify": {
"summary": "Paste the snippet into theme.liquid before </head>, and add the Seentics custom pixel for purchases.",
"docs_url": "https://seentics.com/docs/shopify"
},
"npm": {
"summary": "npm i @seentics/react (or vue, nuxt, astro, svelte) and pass websiteId \"2f60eb30-722c-4fbf-8afa-99fe0e67f6d9\" to its component.",
"docs_url": "https://seentics.com/docs/frameworks"
}
},
"verification": {
"status": "receiving",
"is_verified": true,
"last_event_at": "2026-10-16T22:41:07.000Z",
"events_24h": 1824
}
}
}curl -X GET "https://api.seentics.com/api/v1/agency/websites/2f60eb30-722c-4fbf-8afa-99fe0e67f6d9/install" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/websites/:id/verifyagency:write · send an Idempotency-KeyPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The website’s ID. |
{
"data": {
"status": "receiving",
"is_verified": true,
"last_event_at": "2026-10-16T22:41:07.000Z",
"events_24h": 1824
}
}curl -X POST "https://api.seentics.com/api/v1/agency/websites/2f60eb30-722c-4fbf-8afa-99fe0e67f6d9/verify" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"Branding
/api/v1/agency/brandingagency:read{
"data": {
"brand_name": "Meridian Digital",
"logo_url": "https://cdn.meridian.test/logo.png",
"primary_color": "#7c3aed",
"support_email": "help@meridian.test",
"footer_text": "Reports by Meridian Digital",
"hide_seentics": true,
"slug": "meridian",
"updated_at": "2026-10-12T10:00:00.000Z"
}
}curl -X GET "https://api.seentics.com/api/v1/agency/branding" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/brandingagency:writeBody
| Name | Type | Description |
|---|---|---|
brand_name | string | Shown in place of Seentics. |
logo_url | string | An https:// image address. |
primary_color | string | Hex colour, e.g. #7c3aed. |
support_email | string | Where clients write for help. |
footer_text | string | A line under every page. |
hide_seentics | boolean | Drop “Powered by Seentics”. |
slug | string | null | 3–40 characters a–z, 0–9 and hyphens; your sign-in name on seentics.com. null clears it. |
{
"brand_name": "Meridian Digital",
"logo_url": "https://cdn.meridian.test/logo.png",
"primary_color": "#7c3aed",
"support_email": "help@meridian.test",
"footer_text": "Reports by Meridian Digital",
"hide_seentics": true,
"slug": "meridian"
}{
"data": {
"brand_name": "Meridian Digital",
"logo_url": "https://cdn.meridian.test/logo.png",
"primary_color": "#7c3aed",
"support_email": "help@meridian.test",
"footer_text": "Reports by Meridian Digital",
"hide_seentics": true,
"slug": "meridian",
"updated_at": "2026-10-12T10:00:00.000Z"
}
}curl -X PUT "https://api.seentics.com/api/v1/agency/branding" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"brand_name":"Meridian Digital","logo_url":"https://cdn.meridian.test/logo.png","primary_color":"#7c3aed","support_email":"help@meridian.test","footer_text":"Reports by Meridian Digital","hide_seentics":true,"slug":"meridian"}'/api/v1/agency/domaindata is null when there is no domain; 503 provider_error when this server offers no custom domains.Scope agency:read{
"data": {
"hostname": "reports.meridian.test",
"state": "pending_dns",
"reason": null,
"cname_target": "portal.seentics.com",
"ownership_verification": {
"name": "_cf-custom-hostname.reports.meridian.test",
"type": "txt",
"value": "7f3a9c1e-…"
},
"created_at": "2026-10-12T10:00:00.000Z",
"updated_at": "2026-10-12T10:00:00.000Z",
"last_checked_at": "2026-10-12T10:05:00.000Z"
}
}curl -X GET "https://api.seentics.com/api/v1/agency/domain" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/domainagency:writeBody
| Name | Type | Description |
|---|---|---|
hostnamerequired | string | A subdomain you control, e.g. reports.youragency.com. |
{
"hostname": "reports.meridian.test"
}{
"data": {
"hostname": "reports.meridian.test",
"state": "pending_dns",
"reason": null,
"cname_target": "portal.seentics.com",
"ownership_verification": {
"name": "_cf-custom-hostname.reports.meridian.test",
"type": "txt",
"value": "7f3a9c1e-…"
},
"created_at": "2026-10-12T10:00:00.000Z",
"updated_at": "2026-10-12T10:00:00.000Z",
"last_checked_at": "2026-10-12T10:05:00.000Z"
}
}curl -X PUT "https://api.seentics.com/api/v1/agency/domain" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"hostname":"reports.meridian.test"}'/api/v1/agency/domain/refreshagency:write · send an Idempotency-Key{
"data": {
"hostname": "reports.meridian.test",
"state": "pending_certificate",
"reason": null,
"cname_target": "portal.seentics.com",
"ownership_verification": {
"name": "_cf-custom-hostname.reports.meridian.test",
"type": "txt",
"value": "7f3a9c1e-…"
},
"created_at": "2026-10-12T10:00:00.000Z",
"updated_at": "2026-10-12T10:00:00.000Z",
"last_checked_at": "2026-10-12T10:05:00.000Z"
}
}curl -X POST "https://api.seentics.com/api/v1/agency/domain/refresh" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"/api/v1/agency/domainagency:writeAnswers 204 with no body.
curl -X DELETE "https://api.seentics.com/api/v1/agency/domain" \
-H "X-API-Key: $SEENTICS_API_KEY"Embeds
/api/v1/agency/embedsagency:readQuery
| Name | Type | Description |
|---|---|---|
scope | "website" | "client" | Only links of this scope. |
target_id | uuid | Only links for this website or client. |
limit | integer | Up to 100 rows; default 25. |
cursor | string | The next_cursor of the previous page. |
{
"data": [
{
"id": "9a1f3c52-0d6e-4c1b-8b7e-2c4b3f0e1d77",
"scope": "client",
"target_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"target_name": "Acme Bakery",
"token": "emb_4b7c0e9f2a",
"embed_url": "https://seentics.com/embed/2f60eb30-722c-4fbf-8afa-99fe0e67f6d9?token=emb_4b7c0e9f2a&client=1",
"sections": [
"analytics"
],
"created_at": "2026-10-12T10:00:00.000Z"
}
],
"page": {
"next_cursor": null,
"has_more": false
}
}curl -X GET "https://api.seentics.com/api/v1/agency/embeds?scope=client&target_id=5bbeaa88-b089-4923-ad54-8fdcbbcdba94" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/embedsagency:write · send an Idempotency-KeyBody
| Name | Type | Description |
|---|---|---|
scoperequired | "website" | "client" | One website, or all of a client’s. |
target_idrequired | uuid | The website or client. |
sections | ("analytics" | "recordings" | "heatmaps")[] | Default ["analytics"]. |
{
"scope": "client",
"target_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"sections": [
"analytics"
]
}{
"data": {
"id": "9a1f3c52-0d6e-4c1b-8b7e-2c4b3f0e1d77",
"scope": "client",
"target_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"target_name": "Acme Bakery",
"token": "emb_4b7c0e9f2a",
"embed_url": "https://seentics.com/embed/2f60eb30-722c-4fbf-8afa-99fe0e67f6d9?token=emb_4b7c0e9f2a&client=1",
"sections": [
"analytics"
],
"created_at": "2026-10-12T10:00:00.000Z"
}
}curl -X POST "https://api.seentics.com/api/v1/agency/embeds" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"scope":"client","target_id":"5bbeaa88-b089-4923-ad54-8fdcbbcdba94","sections":["analytics"]}'/api/v1/agency/embeds/:idagency:writePath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The embed link’s ID. |
Body
| Name | Type | Description |
|---|---|---|
sectionsrequired | string[] | The sections to show. |
{
"sections": [
"analytics",
"heatmaps"
]
}{
"data": {
"id": "9a1f3c52-0d6e-4c1b-8b7e-2c4b3f0e1d77",
"scope": "client",
"target_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"target_name": "Acme Bakery",
"token": "emb_4b7c0e9f2a",
"embed_url": "https://seentics.com/embed/2f60eb30-722c-4fbf-8afa-99fe0e67f6d9?token=emb_4b7c0e9f2a&client=1",
"sections": [
"analytics",
"heatmaps"
],
"created_at": "2026-10-12T10:00:00.000Z"
}
}curl -X PATCH "https://api.seentics.com/api/v1/agency/embeds/9a1f3c52-0d6e-4c1b-8b7e-2c4b3f0e1d77" \
-H "X-API-Key: $SEENTICS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sections":["analytics","heatmaps"]}'/api/v1/agency/embeds/:idagency:writePath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The embed link’s ID. |
Answers 204 with no body.
curl -X DELETE "https://api.seentics.com/api/v1/agency/embeds/9a1f3c52-0d6e-4c1b-8b7e-2c4b3f0e1d77" \
-H "X-API-Key: $SEENTICS_API_KEY"Usage
/api/v1/agency/usageagency:readQuery
| Name | Type | Description |
|---|---|---|
month | string | YYYY-MM; default the current UTC month. |
{
"data": {
"period": {
"start": "2026-10-01T00:00:00.000Z",
"end": "2026-11-01T00:00:00.000Z"
},
"pool": {
"events": 5000000,
"recordings": 50000,
"leads": 10000,
"ai_analyses": 1000
},
"used": {
"events": 1240512,
"recordings": 8204,
"leads": 312,
"ai_analyses": 41
},
"allocated": {
"events": 0,
"recordings": 0,
"leads": 0,
"ai_analyses": 0
},
"unallocated": {
"events": 5000000,
"recordings": 50000,
"leads": 10000,
"ai_analyses": 1000
},
"overage": {
"events": 0,
"recordings": 0,
"leads": 0,
"ai_analyses": 0
}
}
}curl -X GET "https://api.seentics.com/api/v1/agency/usage" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/usage/clientsagency:readQuery
| Name | Type | Description |
|---|---|---|
month | string | YYYY-MM; default the current UTC month. |
{
"data": [
{
"id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"used": {
"events": 412000,
"recordings": 2100,
"leads": 88,
"ai_analyses": 12
},
"cap": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
},
"pct": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
}
}
],
"page": {
"next_cursor": null,
"has_more": false
}
}curl -X GET "https://api.seentics.com/api/v1/agency/usage/clients" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/usage/websitesagency:readQuery
| Name | Type | Description |
|---|---|---|
client_id | uuid | Only this client’s websites. |
month | string | YYYY-MM; default the current UTC month. |
{
"data": [
{
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"name": "Acme Bakery",
"used": {
"events": 412000,
"recordings": 2100,
"leads": 88,
"ai_analyses": 12
},
"cap": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
},
"pct": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
},
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94"
}
],
"page": {
"next_cursor": null,
"has_more": false
}
}curl -X GET "https://api.seentics.com/api/v1/agency/usage/websites?client_id=5bbeaa88-b089-4923-ad54-8fdcbbcdba94" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/clients/:id/usageagency:readPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The client’s ID. |
Query
| Name | Type | Description |
|---|---|---|
month | string | YYYY-MM; default the current UTC month. |
{
"data": {
"period": {
"start": "2026-10-01T00:00:00.000Z",
"end": "2026-11-01T00:00:00.000Z"
},
"id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94",
"name": "Acme Bakery",
"used": {
"events": 412000,
"recordings": 2100,
"leads": 88,
"ai_analyses": 12
},
"cap": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
},
"pct": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
},
"websites": [
{
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"name": "Acme Bakery",
"used": {
"events": 412000,
"recordings": 2100,
"leads": 88,
"ai_analyses": 12
},
"cap": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
},
"pct": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
},
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94"
}
]
}
}curl -X GET "https://api.seentics.com/api/v1/agency/clients/5bbeaa88-b089-4923-ad54-8fdcbbcdba94/usage" \
-H "X-API-Key: $SEENTICS_API_KEY"/api/v1/agency/websites/:id/usageagency:readPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | uuid | The website’s ID. |
Query
| Name | Type | Description |
|---|---|---|
month | string | YYYY-MM; default the current UTC month. |
{
"data": {
"period": {
"start": "2026-10-01T00:00:00.000Z",
"end": "2026-11-01T00:00:00.000Z"
},
"id": "2f60eb30-722c-4fbf-8afa-99fe0e67f6d9",
"name": "Acme Bakery",
"used": {
"events": 412000,
"recordings": 2100,
"leads": 88,
"ai_analyses": 12
},
"cap": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
},
"pct": {
"events": null,
"recordings": null,
"leads": null,
"ai_analyses": null
},
"client_id": "5bbeaa88-b089-4923-ad54-8fdcbbcdba94"
}
}curl -X GET "https://api.seentics.com/api/v1/agency/websites/2f60eb30-722c-4fbf-8afa-99fe0e67f6d9/usage" \
-H "X-API-Key: $SEENTICS_API_KEY"Error codes
| Status | Code | Meaning |
|---|---|---|
401 | unauthorized | No session or API key, or it is no longer valid. |
403 | forbidden | The key lacks the scope, or the team member lacks agency access. |
403 | agency_plan_required | The account is not on the Agency plan. |
404 | not_found | No such client, website, embed or alert in this account. |
422 | validation_failed | The body or query is invalid; details says which field. |
409 | conflict | Already exists, such as an external ID or hostname in use. |
409 | idempotency_conflict | The same Idempotency-Key was sent with a different body. |
429 | rate_limited | 120 requests a minute per key (60 writes); wait and retry. |
502 | provider_error | Our DNS or certificate provider failed; retry later. 503 when the service, or custom domains, are not available. |