# get_ai_preferences

Source: https://modulify.ai/docs/api/sites/get-ai-preferences

Reads the AI media preferences of a site, the settings that decide what its generated pictures and clips cost.

- Title: Read the AI media preferences
- Scope: `sites:read`
- Access: Read only
- Endpoint: `POST /v1/get_ai_preferences`

These are the settings on the site's **Preferences** tab: whether paid images and video are on at all, the image model and largest image size, and the video model, longest clip, clip resolution and whether visitors can unmute clips. `ImageGenerationDisabled` is true while paid media is off, and a setting left on automatic or its default comes back as `null`.

The response also lists every model, size, resolution and length you can pick, each priced in credits at the workspace's current plan, and a `Summary` with one plain line per setting that names the model an automatic choice uses. Each image model says whether it follows the size setting, how large it goes, what an edit costs and which model makes its edits, which is a different one when the model cannot edit. Each video model lists the clip lengths and resolutions it takes and whether it makes sound, and `recommended` marks the model `automatic` follows. A model that is not available right now is left out, so the choices can change over time.

The tool tells the client to read this before `update_ai_preferences`, so it passes valid values and can tell you what a change will cost. See [Preferences](https://modulify.ai/docs/editor/preferences).

## Request

Call it with a `POST` to `https://api.modulify.ai/v1/get_ai_preferences`, sending the inputs below as a JSON object. The token needs the `sites:read` scope.

It only reads and changes nothing, so retrying it is safe.

```bash
curl -X POST https://api.modulify.ai/v1/get_ai_preferences \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"projectId":"PROJECT_ID"}'
```

Over MCP, the same method is the [get_ai_preferences tool](https://modulify.ai/docs/mcp/sites/get-ai-preferences).

## Inputs

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `projectId` | string | Yes | The site id. |

## Response

Every call answers with the [JSON envelope](https://modulify.ai/docs/api/requests-and-responses#the-response) of `success`, `message`, `data`, `code` and `version`. `data` holds the result described above, and on a method that returns a total, `count` carries it. The [response headers](https://modulify.ai/docs/api/requests-and-responses#headers-on-every-method-call) carry the call's `X-Request-Id` and what is left of your per-minute budget in `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`. [Errors](https://modulify.ai/docs/api/errors) explains every status code a call can answer with.