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

# Upload a team image asset

> Requires asset.create. Accepts PNG, JPEG, WebP, GIF or SVG up to 10 MiB, optimizes the image and stores it in the public asset storage. Returns the stored asset metadata with HTTP 200.



## OpenAPI

````yaml https://api.trackup.me/openapi.json post /v1/assets
openapi: 3.1.0
info:
  title: Trackup API
  description: >-
    API-key-accessible Trackup operations. Send your key in the `X-Api-Key`
    header.


    Keys belong to a team. `X-Team-Id` is not required; if supplied, it must
    match that team.


    Each operation lists its required key permission. The key creator must
    remain a team member and normally hold that permission. The ingest-only
    permissions `visitor.create`, `conversion.create`, and `request.create` do
    not need to be held by the creator.


    Project access and selection are described per operation. Session-only
    account, administration and OAuth operations are not part of this reference.


    The same operations are available as MCP tools at `/mcp` (Streamable HTTP).
    Authenticate with `X-Api-Key` or connect through OAuth, which issues an API
    key on consent.


    Schema validation errors return HTTP 422 with an `errors` object. Other
    errors generally contain `error` and `message`; operation-specific responses
    describe exceptions.
  version: 1.0.0
servers:
  - url: /
    description: Current API environment
security:
  - ApiKey: []
paths:
  /v1/assets:
    post:
      tags:
        - Assets
      summary: Upload a team image asset
      description: >-
        Requires asset.create. Accepts PNG, JPEG, WebP, GIF or SVG up to 10 MiB,
        optimizes the image and stores it in the public asset storage. Returns
        the stored asset metadata with HTTP 200.
      operationId: uploadAsset
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: Image file; its MIME type must be supported.
      responses:
        '200':
          description: >-
            Stored asset, including the public URL and optimized MIME type and
            size.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadedAsset'
        '400':
          description: Malformed request or an invalid operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: The X-Api-Key header is missing or the API key is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: >-
            The key is expired, revoked, lacks permission, or its creator no
            longer has the required team access. A conflicting X-Team-Id is also
            rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '413':
          description: The uploaded file exceeds the configured size limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: An unexpected error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: The required service or worker is unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
components:
  schemas:
    UploadedAsset:
      type: object
      properties:
        id:
          type: string
          format: uuid
        url:
          type: string
        mimeType:
          type: string
        sizeBytes:
          type: number
        originalName:
          type:
            - string
            - 'null'
        createdAt:
          type: string
          format: date-time
        teamId:
          type: string
          format: uuid
        key:
          type: string
      required:
        - id
        - url
        - mimeType
        - sizeBytes
        - originalName
        - createdAt
        - teamId
        - key
      example:
        id: 66666666-6666-4666-8666-666666666666
        url: >-
          https://cdn.example.com/assets/22222222-2222-4222-8222-222222222222/77777777-7777-4777-8777-777777777777.webp
        mimeType: image/webp
        sizeBytes: 18432
        originalName: hero.png
        createdAt: '2026-10-26T12:00:00.000Z'
        teamId: 22222222-2222-4222-8222-222222222222
        key: >-
          assets/22222222-2222-4222-8222-222222222222/77777777-7777-4777-8777-777777777777.webp
    ApiError:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
      required:
        - error
        - message
      additionalProperties: true
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-Api-Key

````

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