> ## 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.

# Update brand logo (signed)

> Upload a local logo as raw bytes (`multipart/form-data`) using a short-lived, single-use token from the `bloom_create_logo_upload_url` MCP tool. The token in the path is the credential, so no `Authorization` header is expected. This endpoint uses the same validation and storage pipeline as `PUT /brands/{id}/logo/file`.



## OpenAPI

````yaml https://www.trybloom.ai/api/v1/spec.json put /brands/{id}/logo/file/signed/{token}
openapi: 3.1.1
info:
  title: Bloom API
  version: 1.0.0
servers:
  - url: https://www.trybloom.ai/api/v1
security:
  - apiKey: []
  - bearer: []
tags:
  - name: Account
    description: >-
      Inspect the authenticated account — profile, credit balance, and
      accessible workspaces.
  - name: Brands
    description: Manage brands and brand identity.
  - name: Images
    description: Generate, edit, and retrieve images.
paths:
  /brands/{id}/logo/file/signed/{token}:
    put:
      tags:
        - Brands
      summary: Update brand logo (signed)
      description: >-
        Upload a local logo as raw bytes (`multipart/form-data`) using a
        short-lived, single-use token from the `bloom_create_logo_upload_url`
        MCP tool. The token in the path is the credential, so no `Authorization`
        header is expected. This endpoint uses the same validation and storage
        pipeline as `PUT /brands/{id}/logo/file`.
      operationId: brands.uploadLogoFileSigned
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Brand ID
        - name: token
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Short-lived upload token from bloom_create_logo_upload_url
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  anyOf:
                    - type: string
                      contentMediaType: image/png
                    - type: string
                      contentMediaType: image/jpeg
                    - type: string
                      contentMediaType: image/webp
                    - type: string
                      contentMediaType: image/svg+xml
                    - type: string
                      contentMediaType: image/avif
                  description: Logo file (PNG, JPEG, WebP, SVG, or AVIF, max 10 MB)
              required:
                - file
      responses:
        '202':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      status:
                        enum:
                          - analyzing
                          - ready
                        type: string
                    required:
                      - id
                      - status
                required:
                  - data
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/BrandsUploadLogoFileSigned400ErrorResponse
        '401':
          description: '401'
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/BrandsUploadLogoFileSigned401ErrorResponse
        '404':
          description: '404'
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/BrandsUploadLogoFileSigned404ErrorResponse
components:
  schemas:
    BrandsUploadLogoFileSigned400ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: INVALID_LOGO
                    status:
                      const: 400
                    message:
                      type: string
                      default: Logo could not be validated
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    BrandsUploadLogoFileSigned401ErrorResponse:
      type: object
      properties:
        error:
          allOf:
            - $ref: '#/components/schemas/ApiError'
            - anyOf:
                - type: object
                  properties:
                    code:
                      const: INVALID_UPLOAD_TOKEN
                    status:
                      const: 401
                    message:
                      type: string
                      default: Upload token is invalid, expired, or already used
                    data: {}
                  required:
                    - code
                    - status
                    - message
                - type: object
                  properties:
                    code:
                      type: string
                    status:
                      type: integer
                    message:
                      type: string
                    data: {}
                  required:
                    - code
                    - status
                    - message
      required:
        - error
    BrandsUploadLogoFileSigned404ErrorResponse:
      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:
                      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: 'Bloom API key, for example `x-api-key: bloom_sk_...`.'
    bearer:
      type: http
      scheme: bearer
      description: Bloom API key (`Bearer bloom_sk_...`) or Bloom OAuth access token.

````