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

# Request a Review

> Check an asset against your brand and use the findings to guide revisions.

See where an asset follows your brand guidance and where it needs attention, with verdicts, explanations, and evidence pictures you can share.

<Note>
  Reviews are in private beta for selected accounts. To request access, contact
  [support@trybloom.ai](mailto:support@trybloom.ai).
</Note>

## What the review checks

The Review Agent checks one asset against your brand as it stands when you request the review. It assesses how the asset follows your brand guidance, rather than judging your overall brand identity or personal taste.

| Check | What it examines |
| - | - |
| Colors | Colors compared with the brand palette. |
| Fonts and typography | Fonts and letter shapes compared with the brand's typography. |
| Logo | Whether the logo looks correct, stays intact, and is readable. |
| Copy | Spelling, grammar, expected text, brand facts, and voice. |

The agent selects relevant parts of the image, then uses tools to measure colors and compare letter shapes, logos, and exact wording against references. The agent reads the text and assesses spelling, grammar, facts, and voice, so the review combines measurements with interpretation.

For example, a finding might say: “The headline uses a different font from the brand's heading font,” with an evidence picture showing the mismatch.

Each requested check returns `pass`, `fail`, `uncertain`, or `not_applicable`, a reason of 25 words or fewer, and evidence pictures where available. Unreadable text or insufficient brand evidence can produce `uncertain`. `not_applicable` means no relevant element exists; it is not a pass.

## Request and retrieve a review

You'll need a brand ready for reviews and one image. Reviews accept PNG, JPEG, WebP, GIF, and SVG images, including any reference images you provide. Documents such as PDFs are not supported.

<Tabs>
  <Tab title="API">
    With your [API key](/api/authentication), submit the asset and checks:

    ```bash theme={null}
    curl -X POST https://www.trybloom.ai/api/v1/reviews \
      -H "x-api-key: $BLOOM_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "brandSessionId": "<brand_session_id>",
        "assets": [{ "kind": "file", "url": "https://assets.example.com/banner.png" }],
        "checks": ["color", "typography", "logo", "copy"]
      }'
    ```

    Replace the brand session ID, then choose one of three ways to supply the image:

    * **Uploaded image:** use `kind: "file"` and the `uploadId` of a completed temporary upload.
    * **Public image URL:** use `kind: "file"` and a public HTTPS `url` for the image.
    * **Bloom image ID:** use `kind: "image"` and an `imageId` for a completed generated image or a Brand Library image in the brand's workspace.

    For `kind: "file"`, provide exactly one of `url` or `uploadId`, never both. `filename` is optional with `url` and is derived from the URL when omitted; omit it with `uploadId`. The `file` value refers to an image supplied by upload or URL, not a document.

    Use optional `context` to tell the reviewer what the image is for or provide images to compare it with:

    * `context.notes` provides optional reviewer guidance: what the image is for, exact expected text, or other important constraints. For example: “Coffee launch banner. The headline should read exactly ‘Meet your morning.’” Use 1 to 4,000 characters after trimming whitespace.
    * `context.images` supplies up to 10 supporting images, such as a logo, product photo, or example to compare against. Each can be a completed temporary upload, a public HTTPS image URL, or a Bloom image ID, using the same fields as the image being reviewed.

    You can omit `context`. If you include it, provide nonblank `notes`, at least one supporting image, or both. Empty context objects, blank `notes`, and the old `description` key are rejected.

    The `202` response contains `data.id` and `data.status`. Set `REVIEW_ID` to that ID:

    ```bash theme={null}
    curl "https://www.trybloom.ai/api/v1/reviews/$REVIEW_ID?wait=true" \
      -H "x-api-key: $BLOOM_API_KEY"
    ```

    Repeat this read while `pending` or `processing`. Completed checks appear under `data.results`. See [Request a review](/api-reference/reviews/request-a-review) for asset formats and [Get a review](/api-reference/reviews/get-a-review) for results and errors.

    <Accordion title="Updating an existing beta integration">
      In REST requests, move the string `context` to `context.notes` and
      top-level `references` to `context.images`. In responses, read `results`
      instead of `checks`, and replace nested evidence image fields with
      `evidence[].url` and `evidence[].expiresAt`. The MCP request and response
      shapes are unchanged.
    </Accordion>
  </Tab>

  <Tab title="MCP">
    [Connect your agent](/mcp/connect), then ask:

    ```text theme={null}
    Review the Acme launch banner against its brand. Check colors, typography,
    logo, and copy. The headline should read exactly “Meet your morning.”
    Show me the findings and evidence pictures.
    ```

    The agent calls `create_review`, then `get_review` with `review_id` and `wait: true`, repeating reads while `pending` or `processing`. Findings include evidence pictures. Use the [live tool schemas](/mcp/tools) from `tools/list`; MCP fields differ from REST.
  </Tab>
</Tabs>

## Add review to an agent workflow

Combine [generation](/guides/generate-images), review, and [targeted edits](/guides/edit-adapt-images) in your own workflow. Reviews never edit assets automatically. Generation and edits consume credits; limit the loop to avoid unnecessary runs.

Try this with your MCP-connected agent:

```text theme={null}
Generate an Acme coffee launch banner with the headline “Meet your morning.”
Wait for generation to complete, then review all four checks.

Edit only clear failures, using the findings and evidence. Allow at most two
editing rounds. Wait for each edit to complete, then request a new review of
the revised asset. While any operation is queued or processing, repeat its
status read rather than submitting it again. Stop if an operation fails.

Stop when all applicable checks pass, evidence is insufficient, a revision makes no
improvement, or the editing budget is reached. Bring uncertain findings to
me; don't keep regenerating. Skip genuinely absent elements marked
not_applicable without counting them as passes or editing to add them.

Show the final completed asset, remaining issues, and review evidence.
```


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