# Report a question that the docs did not answer

:::openapi-operation POST /api/v1/workspaces/{workspace}/content-gaps
AUTH bearerAuth
:::

Records the question for the docs team, which sees it in its content insights. Call it after a search and a read found nothing that answers the question. Send the question as the user asked it, without names, email addresses or secrets. Each call adds one report.

:::codesamples open Code examples

```bash:curl
curl -X POST "https://contextowl.co/api/v1/workspaces/string/content-gaps" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  --data '{
  "question": "string",
  "slug": "string"
}'
```

:::

:::details open Parameters (1)

| NAME | IN | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- | --- |
| `workspace` | path | string | yes | Workspace id, or - for the key's bound workspace |

:::

:::details open Request body (required)

#### application/json

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `question` | string | no | The question that the docs did not answer. The first 256 characters are kept. |
| `slug` | string | no | Slug of the article that came closest, if one did. |

```json
{
  "question": "string",
  "slug": "string"
}
```

:::

:::details open Success responses (202)

#### 202

Success

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `message` | string | yes | - |
| `reported` | boolean | yes | - |

```json
{
  "message": "string",
  "reported": true
}
```

:::

:::details Error responses (400, 401, 403, 404, 429, 500)

#### 400

invalid_request: a parameter or the body is not valid.

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

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

#### 401

unauthorized: the access key is missing, invalid or expired.

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

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

#### 403

permission_denied: the key lacks the permission. two_factor_required: the org requires admins to turn on two-factor authentication.

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

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

#### 404

not_found: the object does not exist, or the key cannot reach it.

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

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

#### 429

rate_limited: too many requests. Wait for the time in the Retry-After header.

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

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

#### 500

internal: the server failed.

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

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

:::
