---
title: Read Consent analytics breakdowns
description: Returns recorded consent and journey buckets, policies, geography,
  devices, languages and UI sources. Plan history limits still apply. Grouped
  buckets may be large and recordedUnavailable explains unavailable history.
  Requires consent.read and projec…
type: api-reference
source: ./openapi/inth-api.json
method: get
path: /v1/projects/{projectId}/consent/analytics
operationId: getProjectConsentAnalytics
server: https://api.inth.com
apiVersion: 1.0.0
tags:
  - Consent
canonicalUrl: https://inth.com/docs/rest-api/consent/get-project-consent-analytics
lastModified: "2026-10-30T13:05:44.605Z"
---
```http
GET /v1/projects/{projectId}/consent/analytics
```

Server: `https://api.inth.com`

Operation ID: `getProjectConsentAnalytics`

Returns recorded consent and journey buckets, policies, geography, devices, languages and UI sources. Plan history limits still apply. Grouped buckets may be large and recordedUnavailable explains unavailable history. Requires consent.read and projects.read. Organization API keys cannot call this operation.

## Authentication

* bearerAuth

### Schemes

* bearerAuth: http / bearer - Use an Inth API key or OAuth access token in the Authorization header.

  Product operations need a capability. Feedback intake only requires authentication. An OAuth access token carries the capabilities it was granted as scopes; an organization API key carries a fixed set (\`organizations.read\`, \`projects.read\`, \`projects.write\`, \`api-keys.read\`, \`inbox.read\`, \`billing.read\`), so writes that name the person who made them, such as \`inbox.write\` and \`vendors.write\`, need a user token. A credential without the capability an operation needs is answered with \`403 INSUFFICIENT\_SCOPE\`. \`GET /v1/me\` reports the capabilities of the calling credential.

  OAuth scopes:
  - \`organizations.read\`: List the organizations you belong to.
  - \`organizations.write\`: Create organizations you will own.
  - \`projects.read\`: Read projects, their consent configuration, and the vendors seen on them.
  - \`projects.write\`: Create, update, and delete projects and their consent configuration.
  - \`members.read\`: Read member names, email addresses, profile images, roles, and pending invitation email addresses.
  - \`members.write\`: Invite members, change member roles, remove members, and cancel invitations.
  - \`api-keys.read\`: List organization API keys.
  - \`api-keys.write\`: Create, roll, and delete organization API keys.
  - \`code-audit.read\`: Read Code Audit scans, their findings, and connected repositories.
  - \`code-audit.write\`: Start Code Audit scans and unlock their reports.
  - \`inbox.read\`: Read Inbox findings.
  - \`inbox.write\`: Change Inbox status or assignment and open GitHub issues for findings.
  - \`vendors.write\`: Approve or ignore vendors detected on your projects, which resolves their Inbox findings.
  - \`billing.read\`: Read the plan and credit balance of an organization.
  - \`billing.details.read\`: Read invoices, billing profiles, and payment method summaries for organizations you own.
  - \`consent.read\`: Read consent records, analytics, configuration, and runtime status.
  - \`consent.write\`: Update consent settings, translations, IAB configuration, and policies.
  - \`consent.keys.read\`: Read consent runtime key metadata. Secret values are never returned.
  - \`website-audit.read\`: Read website audit targets, scans, reports, cookies, and evidence.
  - \`website-audit.write\`: Manage website audit targets, verify domains, review findings, and start scans.
  - \`account.read\`: Read your account profile.
  - \`notifications.read\`: Read your notification preferences and organization routing.
  - \`organization-retention.read\`: Read organization provider data retention policy.
  - \`support.read\`: Read support conversations you own or can access through sharing.
  - \`support.write\`: Create support conversations, send messages, share or close them, and upload support attachments.
  - \`consent.lifecycle.write\`: Update, upgrade or delete Consent runtimes.
  - \`consent.keys.write\`: Create, rotate and revoke Consent runtime keys.
  - \`billing.write\`: Preview and change plans, buy credits, manage billing details and subscriptions, and open hosted payment flows.
  - \`account.security.read\`: Read your active browser sessions and connected device grants.
  - \`account.security.write\`: Revoke your browser sessions and connected device grants.
  - \`integrations.read\`: Read connected integration accounts, repositories, provider properties and project links.
  - \`integrations.write\`: Connect and sync providers, manage repository settings, project links and paid pull request monitoring.
  - \`account.write\`: Update your name, avatar and PII masking preference.
  - \`account.delete\`: Permanently delete your account after ownership checks and confirmation.
  - \`notifications.write\`: Update your notification preferences.
  - \`notifications.routing.write\`: Manage organization notification routing.
  - \`organization-retention.write\`: Change organization provider data retention policy.
  - \`organizations.settings.write\`: Update organization name, logo and slug.
  - \`organizations.delete\`: Permanently delete organizations you own after confirmation.
  - \`agents.read\`: Read your Inth Agent chats and chats shared with your organization.
  - \`agents.write\`: Start Inth Agent chats, send messages, share your chats with the organization, and delete your chats. Agent replies use organization credits.

## Request

### Path Parameters

|Name|Type|Required|Description|
|:--|:--|:--|:--|
|`projectId`|string|required|Project ID returned by list\_projects. Scoped to the caller's current memberships.|

### Query Parameters

|Name|Type|Required|Description|
|:--|:--|:--|:--|
|`from`|"24h" \|"3d" \|"7d" \|"30d" \|"90d" \|"1y"|optional|Requested range. The response reports the range permitted by the plan.|

## Code Examples

### cURL

```bash
curl -X GET "https://api.inth.com/v1/projects/{projectId}/consent/analytics" \
  -H "Authorization: Bearer <token>"
```

### JavaScript

```ts
const response = await fetch("https://api.inth.com/v1/projects/{projectId}/consent/analytics", {
  method: "GET",
  headers: {
    "Authorization": "Bearer <token>"
  },
});
const data = await response.json();
```

## Responses

### 200

Success

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|unknown|required||
|`data`|object|required||
|`data.analytics`|object|required||
|`data.analytics.recorded`|object|optional||
|`data.analytics.recorded.storageVersion`|"v1" \|"v2"|required||
|`data.analytics.recorded.from`|string|required||
|`data.analytics.recorded.to`|string|required||
|`data.analytics.recorded.categories`|object\[]|required||
|`data.analytics.recorded.categories[].id`|string|required||
|`data.analytics.recorded.categories[].label`|string|required||
|`data.analytics.recorded.buckets`|object\[]|required||
|`data.analytics.recorded.buckets[].date`|string|required||
|`data.analytics.recorded.buckets[].region`|string|required||
|`data.analytics.recorded.buckets[].country`|string \|null|required||
|`data.analytics.recorded.buckets[].device`|string|required||
|`data.analytics.recorded.buckets[].policy`|string|required||
|`data.analytics.recorded.buckets[].domain`|string|required||
|`data.analytics.recorded.buckets[].source`|"banner" \|"dialog" \|"unknown"|required||
|`data.analytics.recorded.buckets[].outcome`|"accepted" \|"customised" \|"rejected" \|"unknown"|required||
|`data.analytics.recorded.buckets[].count`|integer|required||
|`data.analytics.recorded.buckets[].enabled`|string\[] \|null|required||
|`data.analytics.recorded.buckets[].disabled`|string\[] \|null|required||
|`data.analytics.journey`|object|optional||
|`data.analytics.journey.scope`|"page" \|"tab"|required||
|`data.analytics.journey.mixedScopes`|boolean|required||
|`data.analytics.journey.from`|string|required||
|`data.analytics.journey.to`|string|required||
|`data.analytics.journey.unattributedSaves`|integer|required||
|`data.analytics.journey.unclassifiedSaves`|integer|optional||
|`data.analytics.journey.buckets`|object\[]|required||
|`data.analytics.journey.buckets[].date`|string|required||
|`data.analytics.journey.buckets[].region`|string|required||
|`data.analytics.journey.buckets[].country`|string \|null|required||
|`data.analytics.journey.buckets[].device`|string|required||
|`data.analytics.journey.buckets[].policy`|string|required||
|`data.analytics.journey.buckets[].domain`|string|required||
|`data.analytics.journey.buckets[].accepted`|integer|required||
|`data.analytics.journey.buckets[].customised`|integer|required||
|`data.analytics.journey.buckets[].rejected`|integer|required||
|`data.analytics.journey.buckets[].unanswered`|integer|required||
|`data.analytics.journey.buckets[].restored`|integer|required||
|`data.analytics.journey.buckets[].notRequired`|integer|required||
|`data.analytics.journey.buckets[].journey`|object\[]|required||
|`data.analytics.journey.buckets[].journey[].action`|"accept" \|"customise" \|"reject" \|"none"|required||
|`data.analytics.journey.buckets[].journey[].outcome`|"accepted" \|"customised" \|"rejected" \|"unanswered"|required||
|`data.analytics.journey.buckets[].journey[].sessions`|integer|required||
|`data.analytics.recordedUnavailable`|"range-too-large"|optional||
|`data.analytics.browsers`|object\[]|required||
|`data.analytics.browsers[].count`|integer|optional||
|`data.analytics.browsers[].detail`|string|optional||
|`data.analytics.browsers[].id`|string|required||
|`data.analytics.browsers[].label`|string|required||
|`data.analytics.browsers[].percentage`|number \|"Infinity" \|"-Infinity" \|"NaN"|optional||
|`data.analytics.categoryAcceptance`|object\[]|required||
|`data.analytics.categoryAcceptance[].acceptedCustomSaves`|integer|required||
|`data.analytics.categoryAcceptance[].customSaves`|integer|required||
|`data.analytics.categoryAcceptance[].id`|string|required||
|`data.analytics.categoryAcceptance[].label`|string|required||
|`data.analytics.categoryAcceptance[].percentage`|number \|"Infinity" \|"-Infinity" \|"NaN"|required||
|`data.analytics.devices`|object\[]|required||
|`data.analytics.devices[].count`|integer|optional||
|`data.analytics.devices[].detail`|string|optional||
|`data.analytics.devices[].id`|string|required||
|`data.analytics.devices[].label`|string|required||
|`data.analytics.devices[].percentage`|number \|"Infinity" \|"-Infinity" \|"NaN"|optional||
|`data.analytics.domains`|object\[]|required||
|`data.analytics.domains[].count`|integer|optional||
|`data.analytics.domains[].detail`|string|optional||
|`data.analytics.domains[].id`|string|required||
|`data.analytics.domains[].label`|string|required||
|`data.analytics.domains[].percentage`|number \|"Infinity" \|"-Infinity" \|"NaN"|optional||
|`data.analytics.geographicDistribution`|object\[]|required||
|`data.analytics.geographicDistribution[].count`|integer|optional||
|`data.analytics.geographicDistribution[].detail`|string|optional||
|`data.analytics.geographicDistribution[].id`|string|required||
|`data.analytics.geographicDistribution[].label`|string|required||
|`data.analytics.geographicDistribution[].percentage`|number \|"Infinity" \|"-Infinity" \|"NaN"|optional||
|`data.analytics.operatingSystems`|object\[]|required||
|`data.analytics.operatingSystems[].count`|integer|optional||
|`data.analytics.operatingSystems[].detail`|string|optional||
|`data.analytics.operatingSystems[].id`|string|required||
|`data.analytics.operatingSystems[].label`|string|required||
|`data.analytics.operatingSystems[].percentage`|number \|"Infinity" \|"-Infinity" \|"NaN"|optional||
|`data.analytics.policyLanguages`|object\[]|required||
|`data.analytics.policyLanguages[].count`|integer|optional||
|`data.analytics.policyLanguages[].detail`|string|optional||
|`data.analytics.policyLanguages[].id`|string|required||
|`data.analytics.policyLanguages[].label`|string|required||
|`data.analytics.policyLanguages[].percentage`|number \|"Infinity" \|"-Infinity" \|"NaN"|optional||
|`data.analytics.policyRates`|object\[]|required||
|`data.analytics.policyRates[].acceptAllRate`|number \|"Infinity" \|"-Infinity" \|"NaN"|required||
|`data.analytics.policyRates[].customRate`|number \|"Infinity" \|"-Infinity" \|"NaN"|required||
|`data.analytics.policyRates[].id`|string|required||
|`data.analytics.policyRates[].label`|string|required||
|`data.analytics.policyRates[].rejectAllRate`|number \|"Infinity" \|"-Infinity" \|"NaN"|required||
|`data.analytics.policyRates[].total`|integer|required||
|`data.analytics.policyRates[].topLanguage`|string|optional||
|`data.analytics.policyRates[].topRegion`|string|optional||
|`data.analytics.summary`|object|required||
|`data.analytics.summary.bannerViews`|integer|required||
|`data.analytics.summary.consentSessions`|integer|required||
|`data.analytics.summary.customSaveRate`|number \|"Infinity" \|"-Infinity" \|"NaN"|required||
|`data.analytics.summary.initializationRequests`|integer|required||
|`data.analytics.summary.requestPaths`|integer|required||
|`data.analytics.summary.savedConsents`|integer|required||
|`data.analytics.summary.totalLanguages`|integer|required||
|`data.analytics.summary.totalPolicies`|integer|required||
|`data.analytics.uiSources`|object\[]|required||
|`data.analytics.uiSources[].count`|integer|optional||
|`data.analytics.uiSources[].detail`|string|optional||
|`data.analytics.uiSources[].id`|string|required||
|`data.analytics.uiSources[].label`|string|required||
|`data.analytics.uiSources[].percentage`|number \|"Infinity" \|"-Infinity" \|"NaN"|optional||
|`data.analyticsHistoryDays`|integer|optional||
|`data.collection`|"consent-overview"|required||
|`data.dateRange`|"24h" \|"3d" \|"7d" \|"30d" \|"90d" \|"1y"|required||
|`data.organizationId`|string|required||
|`data.projectSlug`|string|required||
|`data.projectionVersion`|1|required||

Example:

```json
{
  "success": {},
  "data": {
    "analytics": {
      "recorded": {
        "storageVersion": "v1",
        "from": "string",
        "to": "string",
        "categories": [
          {
            "id": "string",
            "label": "string"
          }
        ],
        "buckets": [
          {
            "date": "string",
            "region": "string",
            "country": "string",
            "device": "string",
            "policy": "string",
            "domain": "string",
            "source": "banner",
            "outcome": "accepted",
            "count": 0,
            "enabled": {},
            "disabled": {}
          }
        ]
      },
      "journey": {
        "scope": "page",
        "mixedScopes": true,
        "from": "string",
        "to": "string",
        "unattributedSaves": 0,
        "unclassifiedSaves": 0,
        "buckets": [
          {
            "date": "string",
            "region": "string",
            "country": "string",
            "device": "string",
            "policy": "string",
            "domain": "string",
            "accepted": 0,
            "customised": 0,
            "rejected": 0,
            "unanswered": 0,
            "restored": 0,
            "notRequired": 0,
            "journey": [
              null
            ]
          }
        ]
      },
      "recordedUnavailable": "range-too-large",
      "browsers": [
        {
          "count": 0,
          "detail": "string",
          "id": "string",
          "label": "string",
          "percentage": 0
        }
      ],
      "categoryAcceptance": [
        {
          "acceptedCustomSaves": 0,
          "customSaves": 0,
          "id": "string",
          "label": "string",
          "percentage": 0
        }
      ],
      "devices": [
        {
          "count": 0,
          "detail": "string",
          "id": "string",
          "label": "string",
          "percentage": 0
        }
      ],
      "domains": [
        {
          "count": 0,
          "detail": "string",
          "id": "string",
          "label": "string",
          "percentage": 0
        }
      ],
      "geographicDistribution": [
        {
          "count": 0,
          "detail": "string",
          "id": "string",
          "label": "string",
          "percentage": 0
        }
      ],
      "operatingSystems": [
        {
          "count": 0,
          "detail": "string",
          "id": "string",
          "label": "string",
          "percentage": 0
        }
      ],
      "policyLanguages": [
        {
          "count": 0,
          "detail": "string",
          "id": "string",
          "label": "string",
          "percentage": 0
        }
      ],
      "policyRates": [
        {
          "acceptAllRate": 0,
          "customRate": 0,
          "id": "string",
          "label": "string",
          "rejectAllRate": 0,
          "total": 0,
          "topLanguage": "string",
          "topRegion": "string"
        }
      ],
      "summary": {
        "bannerViews": 0,
        "consentSessions": 0,
        "customSaveRate": 0,
        "initializationRequests": 0,
        "requestPaths": 0,
        "savedConsents": 0,
        "totalLanguages": 0,
        "totalPolicies": 0
      },
      "uiSources": [
        {
          "count": 0,
          "detail": "string",
          "id": "string",
          "label": "string",
          "percentage": 0
        }
      ]
    },
    "analyticsHistoryDays": 0,
    "collection": "consent-overview",
    "dateRange": "24h",
    "organizationId": "string",
    "projectSlug": "string",
    "projectionVersion": 1
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "data"
  ],
  "properties": {
    "success": {
      "const": true
    },
    "data": {
      "type": "object",
      "properties": {
        "analytics": {
          "type": "object",
          "properties": {
            "recorded": {
              "type": "object",
              "properties": {
                "storageVersion": {
                  "type": "string",
                  "enum": [
                    "v1",
                    "v2"
                  ]
                },
                "from": {
                  "type": "string"
                },
                "to": {
                  "type": "string"
                },
                "categories": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "label": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "label"
                    ],
                    "additionalProperties": false
                  }
                },
                "buckets": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "date": {
                        "type": "string"
                      },
                      "region": {
                        "type": "string"
                      },
                      "country": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "device": {
                        "type": "string"
                      },
                      "policy": {
                        "type": "string"
                      },
                      "domain": {
                        "type": "string"
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "banner",
                          "dialog",
                          "unknown"
                        ]
                      },
                      "outcome": {
                        "type": "string",
                        "enum": [
                          "accepted",
                          "customised",
                          "rejected",
                          "unknown"
                        ]
                      },
                      "count": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "enabled": {
                        "anyOf": [
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "disabled": {
                        "anyOf": [
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "date",
                      "region",
                      "country",
                      "device",
                      "policy",
                      "domain",
                      "source",
                      "outcome",
                      "count",
                      "enabled",
                      "disabled"
                    ],
                    "additionalProperties": false
                  },
                  "maxItems": 5000
                }
              },
              "required": [
                "storageVersion",
                "from",
                "to",
                "categories",
                "buckets"
              ],
              "additionalProperties": false
            },
            "journey": {
              "type": "object",
              "properties": {
                "scope": {
                  "type": "string",
                  "enum": [
                    "page",
                    "tab"
                  ]
                },
                "mixedScopes": {
                  "type": "boolean"
                },
                "from": {
                  "type": "string"
                },
                "to": {
                  "type": "string"
                },
                "unattributedSaves": {
                  "type": "integer",
                  "minimum": 0
                },
                "unclassifiedSaves": {
                  "type": "integer",
                  "minimum": 0
                },
                "buckets": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "date": {
                        "type": "string"
                      },
                      "region": {
                        "type": "string"
                      },
                      "country": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "device": {
                        "type": "string"
                      },
                      "policy": {
                        "type": "string"
                      },
                      "domain": {
                        "type": "string"
                      },
                      "accepted": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "customised": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "rejected": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "unanswered": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "restored": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "notRequired": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "journey": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "action": {
                              "type": "string",
                              "enum": [
                                "accept",
                                "customise",
                                "reject",
                                "none"
                              ]
                            },
                            "outcome": {
                              "type": "string",
                              "enum": [
                                "accepted",
                                "customised",
                                "rejected",
                                "unanswered"
                              ]
                            },
                            "sessions": {
                              "type": "integer",
                              "minimum": 0
                            }
                          },
                          "required": [
                            "action",
                            "outcome",
                            "sessions"
                          ],
                          "additionalProperties": false
                        }
                      }
                    },
                    "required": [
                      "date",
                      "region",
                      "country",
                      "device",
                      "policy",
                      "domain",
                      "accepted",
                      "customised",
                      "rejected",
                      "unanswered",
                      "restored",
                      "notRequired",
                      "journey"
                    ],
                    "additionalProperties": false
                  },
                  "maxItems": 5000
                }
              },
              "required": [
                "scope",
                "mixedScopes",
                "from",
                "to",
                "unattributedSaves",
                "buckets"
              ],
              "additionalProperties": false
            },
            "recordedUnavailable": {
              "type": "string",
              "enum": [
                "range-too-large"
              ]
            },
            "browsers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "detail": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "percentage": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "label"
                ],
                "additionalProperties": false
              }
            },
            "categoryAcceptance": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "acceptedCustomSaves": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "customSaves": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "percentage": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "acceptedCustomSaves",
                  "customSaves",
                  "id",
                  "label",
                  "percentage"
                ],
                "additionalProperties": false
              }
            },
            "devices": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "detail": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "percentage": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "label"
                ],
                "additionalProperties": false
              }
            },
            "domains": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "detail": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "percentage": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "label"
                ],
                "additionalProperties": false
              }
            },
            "geographicDistribution": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "detail": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "percentage": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "label"
                ],
                "additionalProperties": false
              }
            },
            "operatingSystems": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "detail": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "percentage": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "label"
                ],
                "additionalProperties": false
              }
            },
            "policyLanguages": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "detail": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "percentage": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "label"
                ],
                "additionalProperties": false
              }
            },
            "policyRates": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "acceptAllRate": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  },
                  "customRate": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  },
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "rejectAllRate": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  },
                  "total": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "topLanguage": {
                    "type": "string"
                  },
                  "topRegion": {
                    "type": "string"
                  }
                },
                "required": [
                  "acceptAllRate",
                  "customRate",
                  "id",
                  "label",
                  "rejectAllRate",
                  "total"
                ],
                "additionalProperties": false
              }
            },
            "summary": {
              "type": "object",
              "properties": {
                "bannerViews": {
                  "type": "integer",
                  "minimum": 0
                },
                "consentSessions": {
                  "type": "integer",
                  "minimum": 0
                },
                "customSaveRate": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "enum": [
                        "Infinity",
                        "-Infinity",
                        "NaN"
                      ]
                    }
                  ]
                },
                "initializationRequests": {
                  "type": "integer",
                  "minimum": 0
                },
                "requestPaths": {
                  "type": "integer",
                  "minimum": 0
                },
                "savedConsents": {
                  "type": "integer",
                  "minimum": 0
                },
                "totalLanguages": {
                  "type": "integer",
                  "minimum": 0
                },
                "totalPolicies": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "required": [
                "bannerViews",
                "consentSessions",
                "customSaveRate",
                "initializationRequests",
                "requestPaths",
                "savedConsents",
                "totalLanguages",
                "totalPolicies"
              ],
              "additionalProperties": false
            },
            "uiSources": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "detail": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "percentage": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "Infinity",
                          "-Infinity",
                          "NaN"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "label"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "browsers",
            "categoryAcceptance",
            "devices",
            "domains",
            "geographicDistribution",
            "operatingSystems",
            "policyLanguages",
            "policyRates",
            "summary",
            "uiSources"
          ],
          "additionalProperties": false
        },
        "analyticsHistoryDays": {
          "type": "integer",
          "exclusiveMinimum": 0
        },
        "collection": {
          "type": "string",
          "enum": [
            "consent-overview"
          ]
        },
        "dateRange": {
          "type": "string",
          "enum": [
            "24h",
            "3d",
            "7d",
            "30d",
            "90d",
            "1y"
          ]
        },
        "organizationId": {
          "type": "string"
        },
        "projectSlug": {
          "type": "string"
        },
        "projectionVersion": {
          "type": "number",
          "enum": [
            1
          ]
        }
      },
      "required": [
        "analytics",
        "collection",
        "dateRange",
        "organizationId",
        "projectSlug",
        "projectionVersion"
      ],
      "additionalProperties": false
    }
  }
}
```

### 400

The request payload or parameters are invalid.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example: default

```json
{
  "success": false,
  "error": {
    "code": "INVALID_PAYLOAD",
    "message": "Invalid request payload",
    "details": [
      {
        "code": "too_small",
        "message": "Too small: expected string to have >=1 characters",
        "path": [
          "name"
        ]
      }
    ]
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

### 401

Authentication is missing, invalid, or expired.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example: default

```json
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

### 403

The credential is valid but may not perform the operation.

\`INSUFFICIENT\_SCOPE\`: the credential was never granted the capability the operation needs. \`details.requiredScope\` names it, and the \`WWW-Authenticate\` header carries \`Bearer error="insufficient\_scope"\`. An OAuth client fixes this by requesting the scope; an organization API key cannot gain it.

\`FORBIDDEN\`: the capability is present but the membership behind the credential lacks the role, or the resource belongs to another organization.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example: insufficientScope

```json
{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_SCOPE",
    "message": "This token was not granted the projects.write scope",
    "details": {
      "requiredScope": "projects.write"
    }
  }
}
```

Example: forbidden

```json
{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "Organization membership is required"
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

#### Headers

|Name|Type|Required|Description|
|:--|:--|:--|:--|
|`WWW-Authenticate`|string|optional|Present on \`INSUFFICIENT\_SCOPE\`: \`Bearer error="insufficient\_scope", scope="\<required scope>"\`.|

### 404

The requested resource was not found.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example:

```json
{
  "success": true,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "string",
    "details": {}
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

### 409

The request conflicts with the current resource state.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example:

```json
{
  "success": true,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "string",
    "details": {}
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

### 503

The capability is temporarily paused by an operator. Retry later.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example: default

```json
{
  "success": false,
  "error": {
    "code": "SERVICE_UNAVAILABLE",
    "message": "Code Audit scans through the API are temporarily paused. Try again later."
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

## Related

* [REST API overview](/docs/rest-api): Every operation in this API.
