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

# Report a Template

> Reports a private template to Vertra Cloud from its share link or from an application created from it, with a reason and optional details.

This call reports a private template to Vertra Cloud and answers `200` with `null`. The author is not told who reported. Reports are reviewed by the platform; for a serious case with evidence, also write to `abuse@vertracloud.app`.

There are two routes with the same body: `POST /v1/share/templates/{token}/report` from a share link, which still works after the link was revoked, and `POST /v1/apps/{id}/template/report` from an application created from the template. For the application route, the caller is the owner of the application or, in a workspace, a member with access to applications. An account can report the same template at most 3 times, after which the call fails with `429`.

Both need the `templates:write` scope when called with an API key. The details are never written to logs.

**token** `string` *required*

The token of the link, on the link route.

**id** `string` *required*

The application ID, on the application route.

**workspace\_id** `string`

On the application route, the workspace's ID when the application belongs to one.

**reason** `string` *required*

`malware`, `scam`, `copyright`, `leaked_secret` or `other`.

**details** `string`

What you saw, up to 1,000 characters.

```bash cURL theme={null}
curl -X POST https://api.vertracloud.app/v1/share/templates/vtpl_EXAMPLE_TOKEN/report \
  -H "Authorization: Bearer $VERTRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "leaked_secret", "details": "The code has a token in src/config.js" }'
```

### Response

**response** `null`

Always `null`.

```json Response theme={null}
{
  "response": null
}
```

### Error Responses

**code** `string`

The error code indicating the reason for the failure. Possible values:

* `API_KEY_SCOPE_DENIED`: The API key does not have the `templates:write` scope (`403`).
* `VALIDATION_ERROR`: `reason` is not one of the values above or `details` is over 1,000 characters (`400`).
* `SHARE_LINK_NOT_FOUND`: The token has the wrong form, does not exist, or its template was deleted (`404`).
* `APP_NOT_FOUND`: On the application route, the application does not exist or is not yours.
* `TEMPLATE_NOT_FOUND`: On the application route, the application did not come from a template (`404`).
* `RATE_LIMIT_EXCEEDED`: You already reported this template 3 times (`429`).

```json Error Response theme={null}
{
  "code": "SHARE_LINK_NOT_FOUND"
}
```


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