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

# Upload market media

> Keyed alias of the shared image uploader. Send multipart field files. First-party clients validate PNG/JPEG/WebP up to 10 MB; the website gateway bounds total body size to 12 MiB with four concurrent uploads per replica. Check success: the shared uploader can return HTTP 200 for application errors. Returns a public image result, not a published pack. Preserve image proxy/sizing behavior.



## OpenAPI

````yaml /api-reference/vibemarket_openapi.json post /support/image/upload
openapi: 3.0.3
info:
  title: vibe.market API
  version: '2026-09-10'
  description: >-
    Consumer HTTP API for the current vibe.market at
    https://vibechain.com/market. This is an experimental protocol; review
    https://vibechain.com/terms. Every consumer API request requires a
    registered API-KEY, including public-data reads. Keys are shared across
    Vibechain products and never replace wallet/session authorization. Normal
    per-replica minute budgets are 100 reads, 25 writes and 10 stream
    connections, multiplied by the approved key multiplier. Discover runtime
    graphs rather than hardcoding a revision. The /api/vibemarket2 namespace is
    intentional. Operational provider webhooks and operator-only controls are
    excluded.
  termsOfService: https://vibechain.com/terms
servers:
  - url: https://build.vibechain.com/api/vibemarket2
    description: Current-market backend
security:
  - ApiKey: []
tags:
  - name: Discovery
  - name: Indexed market
  - name: Board
  - name: Live updates
  - name: Creators
  - name: Artwork
  - name: Accounts
  - name: Community
  - name: Private messages
  - name: Scoped sessions
  - name: API keys
  - name: Shared services
paths:
  /support/image/upload:
    post:
      tags:
        - Shared services
      summary: Upload market media
      description: >-
        Keyed alias of the shared image uploader. Send multipart field files.
        First-party clients validate PNG/JPEG/WebP up to 10 MB; the website
        gateway bounds total body size to 12 MiB with four concurrent uploads
        per replica. Check success: the shared uploader can return HTTP 200 for
        application errors. Returns a public image result, not a published pack.
        Preserve image proxy/sizing behavior.
      operationId: vm2064
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                files:
                  type: string
                  format: binary
              required:
                - files
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  success:
                    type: boolean
                  message:
                    type: string
                  image:
                    description: Shared uploader result; use the returned public image URL.
                    nullable: true
                required:
                  - code
                  - success
                  - message
        '401':
          $ref: '#/components/responses/ApiKeyUnauthorized'
        '429':
          $ref: '#/components/responses/ApiKeyRateLimited'
        '503':
          $ref: '#/components/responses/ApiKeyUnavailable'
      security:
        - ApiKey: []
components:
  responses:
    ApiKeyUnauthorized:
      description: >-
        Missing, malformed or invalid API key; private routes can also reject
        session credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ApiKeyRateLimited:
      description: >-
        API-key budget, failed key attempts or independent service admission
        exhausted. Honor Retry-After.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
    ApiKeyUnavailable:
      description: Key lookup or application dependency unavailable; fails closed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
      required:
        - error
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: API-KEY
      description: >-
        Registered Vibechain application key. Required in addition to
        wallet/session credentials. Obtain your own key via POST
        https://build.vibechain.com/apikey/create; see Authentication and
        consent. Missing/invalid keys: 401; exhausted quota: 429; lookup outage:
        503.

````