---
title: "Grant audience access"
---

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

Path: Sureshake API › reports

`POST /v2/reports/{id}/audience-grants`

## Path parameters

- `id` (`report-grant-audience-access.path.id`; string, required)
  - format `uuid`

## Request body

_Required._

- `viewerGroupIds` (`report-grant-audience-access.viewerGroupIds`; array<string>, required)
  - format `uuid`
- `membershipMode` (`report-grant-audience-access.membershipMode`; string, optional)
  - one of `"dynamic"`, `"snapshot"`; default `"dynamic"`
- `validUntil` (`report-grant-audience-access.validUntil`; string, optional)
  - format `date-time`
- `allowDownload` (`report-grant-audience-access.allowDownload`; boolean, optional, nullable)
- `watermark` (`report-grant-audience-access.watermark`; boolean, optional, nullable)

## Example request

```json
{
  "viewerGroupIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "membershipMode": "dynamic",
  "validUntil": "2019-08-24T14:15:22Z",
  "allowDownload": true,
  "watermark": true
}
```

## Code samples

### cURL

```bash
curl --request POST \
  --url 'https://api.sureshake.com/v2/reports/<id>/audience-grants' \
  --header 'Content-Type: application/json' \
  --data '
{
  "viewerGroupIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "membershipMode": "dynamic",
  "validUntil": "2019-08-24T14:15:22Z",
  "allowDownload": true,
  "watermark": true
}
'
```

### TypeScript

```typescript
const url = 'https://api.sureshake.com/v2/reports/<id>/audience-grants';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    viewerGroupIds: ['497f6eca-6276-4993-bfeb-53cbbbba6f08'],
    membershipMode: 'dynamic',
    validUntil: '2019-08-24T14:15:22Z',
    allowDownload: true,
    watermark: true
  })
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.sureshake.com/v2/reports/<id>/audience-grants"

payload = {
    "viewerGroupIds": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"],
    "membershipMode": "dynamic",
    "validUntil": "2019-08-24T14:15:22Z",
    "allowDownload": True,
    "watermark": True
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
```

## Responses

### 200

Default Response

#### Example

```json
{
  "data": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "reportId": "836df459-dc40-4aa1-972a-6eb0a864dff9",
      "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5",
      "viewerGroupId": "1288fc75-43e2-4c00-9b50-a958b9887867",
      "viewerGroupName": "string",
      "membershipMode": "dynamic",
      "permission": "read",
      "validFrom": "2019-08-24T14:15:22Z",
      "validUntil": "2019-08-24T14:15:22Z",
      "grantedByUserId": "string",
      "revokedAt": "2019-08-24T14:15:22Z",
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z",
      "memberCount": 0,
      "active": true,
      "accessStatus": "ready",
      "allowDownload": true,
      "watermark": true
    }
  ],
  "meta": {
    "timestamp": "2019-08-24T14:15:22Z"
  }
}
```

- `data` (`report-grant-audience-access.response.200.data`; array<object>, required)
  - `id` (`report-grant-audience-access.response.200.data.id`; string, required)
    - format `uuid`
  - `reportId` (`report-grant-audience-access.response.200.data.reportId`; string, required)
    - format `uuid`
  - `entityId` (`report-grant-audience-access.response.200.data.entityId`; string, required)
    - format `uuid`
  - `viewerGroupId` (`report-grant-audience-access.response.200.data.viewerGroupId`; string, required)
    - format `uuid`
  - `viewerGroupName` (`report-grant-audience-access.response.200.data.viewerGroupName`; string, required)
  - `membershipMode` (`report-grant-audience-access.response.200.data.membershipMode`; string, required)
    - one of `"dynamic"`, `"snapshot"`
  - `permission` (`report-grant-audience-access.response.200.data.permission`; string, required)
    - one of `"read"`
  - `validFrom` (`report-grant-audience-access.response.200.data.validFrom`; string, required)
    - format `date-time`
  - `validUntil` (`report-grant-audience-access.response.200.data.validUntil`; string, required, nullable)
    - format `date-time`
  - `grantedByUserId` (`report-grant-audience-access.response.200.data.grantedByUserId`; string, required)
  - `revokedAt` (`report-grant-audience-access.response.200.data.revokedAt`; string, required, nullable)
    - format `date-time`
  - `createdAt` (`report-grant-audience-access.response.200.data.createdAt`; string, required)
    - format `date-time`
  - `updatedAt` (`report-grant-audience-access.response.200.data.updatedAt`; string, required)
    - format `date-time`
  - `memberCount` (`report-grant-audience-access.response.200.data.memberCount`; integer, required)
    - min 0
  - `active` (`report-grant-audience-access.response.200.data.active`; boolean, required)
  - `accessStatus` (`report-grant-audience-access.response.200.data.accessStatus`; string, required)
    - one of `"ready"`, `"pending"`, `"unavailable"`, `"inactive"`
  - `allowDownload` (`report-grant-audience-access.response.200.data.allowDownload`; boolean, optional, nullable)
  - `watermark` (`report-grant-audience-access.response.200.data.watermark`; boolean, optional, nullable)
- `meta` (`report-grant-audience-access.response.200.meta`; object, optional)
  - `timestamp` (`report-grant-audience-access.response.200.meta.timestamp`; string, required)
    - format `date-time`

### 400

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`report-grant-audience-access.response.400.error`; object, required)
  - `code` (`report-grant-audience-access.response.400.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-grant-audience-access.response.400.error.message`; string, required) — Human-readable error message
  - `details` (`report-grant-audience-access.response.400.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-grant-audience-access.response.400.error.traceId`; string, optional) — Unique ID for log correlation

### 401

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`report-grant-audience-access.response.401.error`; object, required)
  - `code` (`report-grant-audience-access.response.401.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-grant-audience-access.response.401.error.message`; string, required) — Human-readable error message
  - `details` (`report-grant-audience-access.response.401.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-grant-audience-access.response.401.error.traceId`; string, optional) — Unique ID for log correlation

### 403

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`report-grant-audience-access.response.403.error`; object, required)
  - `code` (`report-grant-audience-access.response.403.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-grant-audience-access.response.403.error.message`; string, required) — Human-readable error message
  - `details` (`report-grant-audience-access.response.403.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-grant-audience-access.response.403.error.traceId`; string, optional) — Unique ID for log correlation

### 404

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`report-grant-audience-access.response.404.error`; object, required)
  - `code` (`report-grant-audience-access.response.404.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-grant-audience-access.response.404.error.message`; string, required) — Human-readable error message
  - `details` (`report-grant-audience-access.response.404.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-grant-audience-access.response.404.error.traceId`; string, optional) — Unique ID for log correlation

### 409

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`report-grant-audience-access.response.409.error`; object, required)
  - `code` (`report-grant-audience-access.response.409.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-grant-audience-access.response.409.error.message`; string, required) — Human-readable error message
  - `details` (`report-grant-audience-access.response.409.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-grant-audience-access.response.409.error.traceId`; string, optional) — Unique ID for log correlation

### 422

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`report-grant-audience-access.response.422.error`; object, required)
  - `code` (`report-grant-audience-access.response.422.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-grant-audience-access.response.422.error.message`; string, required) — Human-readable error message
  - `details` (`report-grant-audience-access.response.422.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-grant-audience-access.response.422.error.traceId`; string, optional) — Unique ID for log correlation

### 500

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`report-grant-audience-access.response.500.error`; object, required)
  - `code` (`report-grant-audience-access.response.500.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-grant-audience-access.response.500.error.message`; string, required) — Human-readable error message
  - `details` (`report-grant-audience-access.response.500.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-grant-audience-access.response.500.error.traceId`; string, optional) — Unique ID for log correlation


Source: https://docs.sureshake.com/reference/report-grant-audience-access/index.md
