> ## Documentation Index
> Fetch the complete documentation index at: https://docs.9pic.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Event Analytics

> Read estimated aggregate engagement and data availability.

## Overview

Read aggregate estimated event engagement. Requires OAuth `events:read` and `analytics:read`, accepted organiser membership, and a plan with engagement analytics (Pro, Business or Enterprise). Galleries collect engagement data only on these plans, so Trial and Pay As You Go receive `403`. Participant identities are not returned. Search attempts are not unique participants; unavailable data must not be interpreted as zero activity.

## Endpoint

```
GET /api/v1/ext/{org_id}/event/{event_id}/analytics
```

## Path Parameters

| Parameter | Type | Required | Description |
| - | - | - | - |
| `org_id` | integer | Yes | Organiser where the caller has an accepted membership. |
| `event_id` | integer | Yes | Event owned by that organiser. |

## Query Parameters

| Parameter | Type | Description |
| - | - | - |
| `start_date`, `end_date` | date | Optional inclusive `YYYY-MM-DD` dates, interpreted in Asia/Kolkata. Default from event date through today; clamped to that elapsed period. Maximum 366 days. |

## Example Request

```bash cURL theme={null}
curl -i -X GET \
  -H "Authorization: Bearer <oauth_access_token>" \
  "https://api.9pic.ai/api/v1/ext/903/event/456/analytics?start_date=2026-10-01&end_date=2026-10-05"
```

```python Python theme={null}
import requests

response = requests.get(
    "https://api.9pic.ai/api/v1/ext/903/event/456/analytics?start_date=2026-10-01&end_date=2026-10-05",
    headers={"Authorization": "Bearer <oauth_access_token>"},
)
print(response.status_code, response.json())
```

```javascript JavaScript theme={null}
const response = await fetch("https://api.9pic.ai/api/v1/ext/903/event/456/analytics?start_date=2026-10-01&end_date=2026-10-05", {
  method: "GET",
  headers: { "Authorization": "Bearer <oauth_access_token>" },
});
console.log(await response.json());
```

## Example Response

```json theme={null}
{
  "responseType": "success",
  "message": "Records",
  "data": {
    "event_id": 456,
    "date_range": {
      "start_date": "2026-10-01",
      "end_date": "2026-10-05",
      "event_start_date": "2026-10-01"
    },
    "timezone": "Asia/Kolkata",
    "summary": {},
    "daily_trend": [],
    "estimated": true,
    "availability": "unavailable",
    "unavailable_dates": [
      "2026-10-01",
      "2026-10-02",
      "2026-10-03",
      "2026-10-04",
      "2026-10-05"
    ],
    "live_available": false,
    "unavailable_reason": "Engagement data is unavailable for the requested dates."
  }
}
```

## Response Models

[EventAnalyticsData](/api-reference/models/workflow#eventanalyticsdata). `availability` is `available`, `partial`, or `unavailable`; `unavailable_dates` and `live_available` identify gaps.

## Error Responses

| Status | Meaning |
| - | - |
| `400` / `422` | Invalid input or missing execution confirmation fields. |
| `401` | Invalid or expired access token. |
| `403` | Missing scopes, membership, admin role, or entitlement. |
| `404` | Event configuration or caller-owned operation not found. |
| `409` | Expired or mismatched review, changed state, duplicate source, or active work. |
| `503` | Engagement reporting is temporarily unavailable. |

See [Errors](/api-reference/errors) and [Conventions](/api-reference/conventions).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.