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

# Request a Review

> Check an asset against a brand's guidance. See [Request a Review](/guides/request-review) for examples and the workflow.

<Note>This feature is in beta. During beta, endpoint schemas and behavior may change or be removed.</Note>


## OpenAPI

````yaml https://www.rainbrand.com/api/v1/spec.json post /reviews
openapi: 3.1.1
info:
  title: Rainbrand API
  version: 1.0.0
servers:
  - url: https://www.rainbrand.com/api/v1
security:
  - apiKey: []
  - bearer: []
tags:
  - name: Uploads
    description: >-
      Stage private local files for brand sources, the Library, and other
      supported operations.
  - name: Account
    description: >-
      Inspect the authenticated account — profile, credit balance, and
      accessible workspaces.
  - name: Brands
    description: Manage brands and brand identity.
  - name: Library
    description: Add, list, and remove a brand's images, video, and audio.
  - name: Images
    description: Retrieve and manage images.
  - name: Videos
    description: Retrieve and manage video files.
  - name: Audio
    description: Retrieve and manage audio files.
  - name: Briefs
    description: Get brand guidance and selected assets for a specific task.
  - name: Models
    description: Find available models and check their inputs.
  - name: Generations
    description: Create and retrieve model generations.
  - name: Reviews
    description: >-
      Check an asset against a brand's color, typography, logo, and copy
      guidance.
paths:
  /reviews:
    post:
      tags:
        - Reviews
      summary: Request a Review
      description: >-
        Check an asset against a brand's guidance. See [Request a
        Review](/guides/request-review) for examples and the workflow.
      operationId: reviews.create
      parameters:
        - name: idempotency-key
          in: header
          schema:
            type: string
            minLength: 1
            maxLength: 255
            description: >-
              Optional key for safely retrying this request. Reuse it only with
              the same body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                brandSessionId:
                  type: string
                  format: uuid
                  description: Brand to review against.
                assets:
                  type: array
                  minItems: 1
                  maxItems: 1
                  items:
                    anyOf:
                      - type: object
                        properties:
                          url:
                            type: string
                            maxLength: 2048
                            format: uri
                            description: >-
                              Public HTTPS URL of the image. Downloaded when the
                              Review is created.
                          filename:
                            type: string
                            minLength: 1
                            maxLength: 240
                            description: >-
                              Filename for the linked image. Derived from the
                              URL when omitted.
                        required:
                          - url
                        additionalProperties: false
                        title: Public URL
                      - type: object
                        properties:
                          uploadId:
                            type: string
                            format: uuid
                            description: >-
                              ID of a completed temporary upload from POST
                              /uploads.
                        required:
                          - uploadId
                        additionalProperties: false
                        title: Temporary upload
                      - type: object
                        properties:
                          imageId:
                            type: string
                            format: uuid
                            description: ID of a completed image in the same workspace.
                        required:
                          - imageId
                        additionalProperties: false
                        title: Image ID
                  description: >-
                    Image to review. Supported formats: PNG, JPEG, WebP, GIF,
                    and SVG.
                checks:
                  type: array
                  minItems: 1
                  items:
                    enum:
                      - color
                      - typography
                      - logo
                      - copy
                    type: string
                  description: >-
                    Choose which checks to run: color, typography, logo, or
                    copy, without duplicates. Completed outcomes are returned
                    under results.
                context:
                  type: object
                  properties:
                    notes:
                      type: string
                      minLength: 1
                      maxLength: 4000
                      description: >-
                        What the image is for, exact expected text, or other
                        review guidance.
                    images:
                      type: array
                      maxItems: 10
                      items:
                        anyOf:
                          - type: object
                            properties:
                              url:
                                type: string
                                maxLength: 2048
                                format: uri
                                description: >-
                                  Public HTTPS URL of the image. Downloaded when
                                  the Review is created.
                              filename:
                                type: string
                                minLength: 1
                                maxLength: 240
                                description: >-
                                  Filename for the linked image. Derived from
                                  the URL when omitted.
                            required:
                              - url
                            additionalProperties: false
                            title: Public URL
                          - type: object
                            properties:
                              uploadId:
                                type: string
                                format: uuid
                                description: >-
                                  ID of a completed temporary upload from POST
                                  /uploads.
                            required:
                              - uploadId
                            additionalProperties: false
                            title: Temporary upload
                          - type: object
                            properties:
                              imageId:
                                type: string
                                format: uuid
                                description: ID of a completed image in the same workspace.
                            required:
                              - imageId
                            additionalProperties: false
                            title: Image ID
                      description: >-
                        Supporting images to compare against, such as a logo or
                        product photo.
                  additionalProperties: false
                  description: Additional guidance or supporting images for the Review.
                  if:
                    not:
                      required:
                        - notes
                  then:
                    required:
                      - images
                    properties:
                      images:
                        minItems: 1
              required:
                - brandSessionId
                - assets
                - checks
              additionalProperties: false
              examples:
                - brandSessionId: e6220a5e-4a68-4d39-8bb9-5105e9a3a164
                  assets:
                    - url: https://assets.example.com/campaign.png
                  checks:
                    - color
      responses:
        '202':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Review ID.
                      status:
                        enum:
                          - pending
                          - processing
                          - completed
                          - failed
                        type: string
                    required:
                      - id
                      - status
                required:
                  - data
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsCreate400ErrorResponse'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsCreate401ErrorResponse'
        '402':
          description: '402'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsCreate402ErrorResponse'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsCreate403ErrorResponse'
        '404':
          description: '404'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsCreate404ErrorResponse'
        '409':
          description: '409'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsCreate409ErrorResponse'
        '429':
          description: '429'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsCreate429ErrorResponse'
          headers:
            Retry-After:
              description: >-
                Seconds until the applicable request or operation limit resets.
                Present when the limiter can calculate the delay.
              schema:
                type: integer
                minimum: 0
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewsCreate500ErrorResponse'
components:
  schemas:
    ReviewsCreate400ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: INVALID_INPUT
                    status:
                      const: 400
                    message:
                      type: string
                      default: Invalid review input
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    ReviewsCreate401ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: UNAUTHORIZED
                    status:
                      const: 401
                    message:
                      type: string
                      default: Invalid or missing API credentials
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    ReviewsCreate402ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: INSUFFICIENT_CREDITS
                    status:
                      const: 402
                    message:
                      type: string
                      default: Not enough credits to review this image
                    data:
                      type: object
                      properties:
                        action_url:
                          type: string
                          format: uri
                          description: >-
                            Deep link to /pricing for the caller to top up
                            credits
                        credits_required:
                          type: number
                          description: Credits the refused request needed
                        balance:
                          type: number
                          description: >-
                            The workspace's credit balance when the request was
                            refused
                        pricing_version:
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                          description: >-
                            The workspace's pricing version. Credit amounts are
                            comparable only within one version.
                      required:
                        - action_url
                  required:
                    - code
                    - status
                    - message
                    - data
                - type: object
                  properties:
                    code:
                      const: PAYMENT_REQUIRED
                    status:
                      const: 402
                    message:
                      type: string
                      default: Subscription paused — complete payment to resume
                    data:
                      type: object
                      properties:
                        action_url:
                          type: string
                          format: uri
                          description: >-
                            Deep link to /pricing to complete the pending
                            payment
                      required:
                        - action_url
                  required:
                    - code
                    - status
                    - message
                    - data
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    ReviewsCreate403ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: ACCOUNT_BANNED
                    status:
                      const: 403
                    message:
                      type: string
                      default: This account has been suspended.
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      const: FORBIDDEN
                    status:
                      const: 403
                    message:
                      type: string
                      default: Plan upgrade required
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    ReviewsCreate404ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: BRAND_NOT_FOUND
                    status:
                      const: 404
                    message:
                      type: string
                      default: Brand not found.
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      const: IMAGE_NOT_FOUND
                    status:
                      const: 404
                    message:
                      type: string
                      default: Image not found in this brand's workspace
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      const: UPLOAD_NOT_FOUND
                    status:
                      const: 404
                    message:
                      type: string
                      default: Upload not found in this workspace
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    ReviewsCreate409ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: BRAND_SKILL_UNAVAILABLE
                    status:
                      const: 409
                    message:
                      type: string
                      default: This brand is not ready for reviews yet
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      const: IMAGE_NOT_READY
                    status:
                      const: 409
                    message:
                      type: string
                      default: The image is not complete
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      const: IDEMPOTENCY_CONFLICT
                    status:
                      const: 409
                    message:
                      type: string
                      default: >-
                        Idempotency-Key was already used with a different
                        request
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    ReviewsCreate429ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: TOO_MANY_REQUESTS
                    status:
                      const: 429
                    message:
                      type: string
                      default: Rate limit exceeded
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      const: ACTIVE_REVIEW_LIMIT_REACHED
                    status:
                      const: 429
                    message:
                      type: string
                      default: Too many reviews are already running
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    ReviewsCreate500ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: INTERNAL_ERROR
                    status:
                      const: 500
                    message:
                      type: string
                      default: Failed to create review
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    ApiError:
      type: object
      properties:
        code:
          type: string
        status:
          type: integer
        message:
          type: string
        data: {}
      required:
        - code
        - status
        - message
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Rainbrand API key, for example `x-api-key: bloom_sk_...`.'
    bearer:
      type: http
      scheme: bearer
      description: >-
        Rainbrand API key (`Bearer bloom_sk_...`) or Rainbrand OAuth access
        token.

````

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