# API reference

This feature requires Fides Cloud or Fides Enterprise. For more information, [talk to our solutions team. (opens in a new tab)](/content/speak-with-us?utm_source=docs-site/index.html)

All privacy assessment endpoints are under the base path `/api/v1/plus/privacy-assessments`. All requests require a valid Fides authentication token in the `Authorization` header.

* * *

## Templates
### List templates

```
GET /api/v1/plus/privacy-assessments/templates
```
Returns all available assessment templates.

**Response fields:**

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | Template identifier (e.g., `gdpr_dpia`) |
| `name` | string | Human-readable template name |
| `description` | string | Template description and regulatory context |
| `question_groups` | array | List of question group objects |

### Get template

```
GET /api/v1/plus/privacy-assessments/templates/{template_id}
```
Returns a single template including all question groups and questions.

* * *

## Assessments
### Create assessments

```
POST /api/v1/plus/privacy-assessments/
```
Queues generation jobs for one or more system-template combinations.

**Request body:**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `template_ids` | array of strings | Yes | One or more template keys to generate |
| `system_ids` | array of strings | No | Scope to specific systems. Omit for all systems. |
| `ai_enabled` | boolean | No | Enable AI pre-fill. Default: `true` |
| `high_risk_only` | boolean | No | Only generate for high-risk systems. Default: `false` |

**Response:** Array of created assessment objects with task IDs.

### List assessments

```
GET /api/v1/plus/privacy-assessments/
```
Returns all assessments. Supports filtering by `status`, `template_id`, and `system_id` query parameters.

### Get assessment

```
GET /api/v1/plus/privacy-assessments/{assessment_id}
```
Returns a single assessment with all question groups and their current answers.

**Key response fields:**

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | Assessment ID (prefix: `pri_`) |
| `status` | string | `in_progress`, `completed`, or `outdated` |
| `risk_level` | string or null | `high` if the system matched high-risk triggers, otherwise `null` |
| `completeness` | float | Percentage of questions with complete answers (0–100) |
| `template_id` | string | The template this assessment was generated from |
| `system_id` | string | The system this assessment covers |
| `question_groups` | array | Question groups with their questions and answers |

### Delete assessment

```
DELETE /api/v1/plus/privacy-assessments/{assessment_id}
```
Permanently deletes an assessment and all its answers and evidence. This action cannot be undone.

* * *

## Re-evaluation
### Re-evaluate assessments

```
POST /api/v1/plus/privacy-assessments/re-evaluate
```
Queues re-evaluation tasks for one or more outdated assessments.

**Request body:**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `assessment_ids` | array of strings | No | Specific assessments to re-evaluate. Omit for all outdated. |

* * *

## Tasks
### List tasks

```
GET /api/v1/plus/privacy-assessments/tasks
```
Returns all assessment generation and re-evaluation tasks.

**Key response fields:**

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | Task ID |
| `status` | string | `pending`, `running`, `complete`, or `failed` |
| `progress` | float | Completion percentage (0–100) |
| `error` | string | Error message if status is `failed` |
| `assessment_id` | string | ID of the assessment created by this task |

### Get task

```
GET /api/v1/plus/privacy-assessments/tasks/{task_id}
```
Returns a single task.

### Retry task

```
POST /api/v1/plus/privacy-assessments/tasks/{task_id}/retry
```
Retries a failed task. Returns the new task object.

* * *

## Answers
### Update answer

```
PUT /api/v1/plus/privacy-assessments/{assessment_id}/questions/{question_id}
```
Updates the answer for a specific question. Creates a new version with source `user_input`.

**Request body:**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `answer` | string | Yes | The new answer text |

### Get answer history

```
GET /api/v1/plus/privacy-assessments/{assessment_id}/questions/{question_id}/history
```
Returns all versions of a question's answer in reverse chronological order.

**Key response fields per version:**

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | Version ID |
| `answer` | string | Answer text at this version |
| `source` | string | `system`, `ai_analysis`, `user_input`, or `team_input` |
| `created_at` | datetime | When this version was created |
| `created_by` | string | User ID or `ai_agent` |

### Revert answer

```
POST /api/v1/plus/privacy-assessments/{assessment_id}/questions/{question_id}/revert
```
Creates a new answer version that restores the text from a previous version.

**Request body:**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `version_id` | string | Yes | The version to restore |

* * *

## Audit log
### Get audit log

```
GET /api/v1/plus/privacy-assessments/{assessment_id}/audit-log
```
Returns a complete audit log of all changes to an assessment in reverse chronological order.

**Key response fields:**

| Field | Type | Description |
| --- | --- | --- |
| `actor` | string | User ID or `ai_agent` |
| `action` | string | Type of change (e.g., `answer_updated`, `answer_reverted`) |
| `question_id` | string | The question that was changed |
| `timestamp` | datetime | When the change occurred |
| `details` | object | Additional context about the change |

* * *

## Evidence
### Get evidence for a question group

```
GET /api/v1/plus/privacy-assessments/{assessment_id}/question-groups/{group_id}/evidence
```
Returns all evidence items for a question group, grouped by evidence type.

**Key response fields:**

| Field | Type | Description |
| --- | --- | --- |
| `type` | string | `system`, `privacy_declaration`, `data_use`, or `dataset` |
| `label` | string | Display label for the evidence item |
| `value` | string | The cited data value |
| `source_id` | string | ID of the Fides record this evidence came from |
| `created_at` | datetime | When this evidence was recorded |

* * *

## Questionnaire
### Send questionnaire

```
POST /api/v1/plus/privacy-assessments/{assessment_id}/questionnaire
```
Sends unanswered questions to the configured Slack channel.

**Request body:**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `channel` | string | No | Override the default Slack channel |
| `question_ids` | array of strings | No | Send only specific questions. Omit for all `needs_input` questions. |

### Get questionnaire status

```
GET /api/v1/plus/privacy-assessments/{assessment_id}/questionnaire
```
Returns the status of each sent question: whether it has a response and when the response was received.

### Send reminders

```
POST /api/v1/plus/privacy-assessments/{assessment_id}/questionnaire/reminders
```
Sends Slack reminder messages to threads where no response has been received. Takes no request body.

* * *

## Questionnaire tone
### Get tone

```
GET /api/v1/plus/privacy-assessments/questionnaire/tone
```
Returns the current questionnaire tone prompt.

### Update tone

```
PUT /api/v1/plus/privacy-assessments/questionnaire/tone
```
**Request body:**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `tone_prompt` | string | Yes | Custom instructions for how to phrase questions |

### Reset tone to default

```
POST /api/v1/plus/privacy-assessments/questionnaire/tone/reset
```
Resets the tone prompt to the system default.

* * *

## PDF export
### Export PDF

```
GET /api/v1/plus/privacy-assessments/{assessment_id}/pdf
```
**Query parameters:**

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `mode` | string | `internal` | Export mode: `internal` (with evidence) or `external` (clean Q&A) |

Returns the assessment as a PDF file (`Content-Type: application/pdf`).

* * *

## Configuration
### Get configuration

```
GET /api/v1/plus/privacy-assessments/config
```
Returns the current assessment configuration.

### Update configuration

```
PUT /api/v1/plus/privacy-assessments/config
```
**Request body:**

| Field | Type | Description |
| --- | --- | --- |
| `assessment_model` | string | AI model identifier for assessment generation |
| `chat_model` | string | AI model identifier for questionnaire chat |
| `reassessment_enabled` | boolean | Enable automatic periodic re-evaluation |
| `reassessment_cron` | string | Cron expression for reassessment schedule |

### Get configuration defaults

```
GET /api/v1/plus/privacy-assessments/config/defaults
```
Returns the default values for all configuration fields.
