> ## Documentation Index
> Fetch the complete documentation index at: https://dripart-feat-openapi-i18n.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 新しいアセットのアップロード

> 新しいアセットを関連メタデータとともにシステムにアップロードします。
2つのアップロード方法をサポートします:
1. 直接ファイルアップロード (multipart/form-data)
2. URLベースのアップロード (source: "url" を含む application/json)

同じハッシュのアセットが既に存在する場合、既存のアセットを返します。




## OpenAPI

````yaml /openapi/cloud.ja.yaml post /api/assets
openapi: 3.0.3
info:
  title: Comfy Cloud API
  description: >
    <Warning>

    **実験的API:** このAPIは実験的であり、変更される可能性があります。

    エンドポイント、リクエスト/レスポンス形式、および動作は予告なく変更される場合があります。

    </Warning>


    Comfy CloudのAPI - クラウドインフラ上でComfyUIワークフローを実行します。


    このAPIを使用すると、Comfy Cloudとプログラムで連携できます。内容は次のとおりです。

    - ワークフローの送信と管理

    - ファイルのアップロードとダウンロード

    - ジョブの状態と進捗の監視


    ## クラウド vs OSS ComfyUI 互換性


    Comfy Cloudは最大限の互換性のためにOSS
    ComfyUIと同じAPIインターフェースを実装していますが、一部のフィールドは互換性のために受け入れられますが、異なる処理が行われたり無視されたりします。


    | フィールド | エンドポイント | クラウドの動作 |

    |-------|-----------|----------------|

    | `subfolder` | `/api/view`, `/api/upload/*` | **無視** -
    クラウドはコンテンツアドレスストレージ（ハッシュベース）を使用します。クライアント側の整理のためにレスポンスで返されます。 |

    | `type` (input/output/temp) | `/api/view`, `/api/upload/*` | 部分的に使用 -
    すべてのファイルはディレクトリ構造ではなくタグベースの整理で保存されます。 |

    | `overwrite` | `/api/upload/*` | **無視** -
    コンテンツアドレスストレージでは、同一のコンテンツは常に同じハッシュを持ちます。 |

    | `number`, `front` | `/api/prompt` | **無視** - クラウドはユーザーごとに独自の公平キュー
    スケジューリングを使用します。 |

    | `split`, `full_info` | `/api/userdata` | **無視** -
    クラウドは常に完全なファイルメタデータを返します。 |


    これらのフィールドは、既存のComfyUIクライアントやワークフローとのドロップイン互換性のためにAPIスキーマに保持されています。
  version: 1.0.0
  license:
    name: GNU General Public License v3.0
    url: https://github.com/Comfy-Org/ComfyUI/blob/master/LICENSE
servers:
  - url: https://cloud.comfy.org
    description: Comfy Cloud API
security:
  - ApiKeyAuth: []
tags:
  - name: workflow
    description: |
      ワークフローを実行のために送信し、実行キューを管理します。
      これはクラウド上でComfyUIワークフローを実行するための主要な方法です。
  - name: job
    description: |
      ジョブステータスを監視し、実行履歴を表示し、実行中のジョブを管理します。
      ジョブはPOST /api/promptを介してワークフローを送信するときに作成されます。
  - name: asset
    description: |
      永続的なアセット（画像、モデル、出力）をアップロード、ダウンロード、管理します。
      アセットはタグ付けとメタデータサポートを備えた耐久性のあるストレージを提供します。
  - name: file
    description: |
      ローカルのComfyUIと互換性のあるレガシーファイルのアップロードおよびダウンロードエンドポイント。
      新しい統合には、代わりにAssets APIの使用を検討してください。
  - name: model
    description: |
      利用可能なAIモデルをブラウズします。モデルはクラウドインフラストラクチャにプリロードされています。
  - name: node
    description: |
      利用可能なComfyUIノードとその入力/出力に関する情報を取得します。
      動的なワークフローインターフェースの構築に役立ちます。
  - name: user
    description: |
      ユーザーアカウント情報と個人データの保存。
  - name: system
    description: |
      サーバーステータス、ヘルスチェック、システム情報。
paths:
  /api/assets:
    post:
      tags:
        - asset
      summary: 新しいアセットのアップロード
      description: |
        新しいアセットを関連メタデータとともにシステムにアップロードします。
        2つのアップロード方法をサポートします:
        1. 直接ファイルアップロード (multipart/form-data)
        2. URLベースのアップロード (source: "url" を含む application/json)

        同じハッシュのアセットが既に存在する場合、既存のアセットを返します。
      operationId: uploadAsset
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: アップロードするアセットファイル
                tags:
                  type: array
                  items:
                    type: string
                  description: >-
                    アセットの自由形式タグ。一般的なタイプには"models"、"input"、"output"、"temp"がありますが、任意のタグを任意の順序で使用できます。
                id:
                  type: string
                  format: uuid
                  description: 冪等な作成のためのオプションのアセットID。指定され、かつアセットが存在する場合、既存のアセットを返します。
                preview_id:
                  type: string
                  format: uuid
                  description: オプションのプレビューアセットID。指定しない場合、画像は自身のIDをプレビューとして使用します。
                name:
                  type: string
                  description: アセットの表示名
                mime_type:
                  type: string
                  description: 'アセットのMIMEタイプ（例: "image/png"、"video/mp4"）'
                user_metadata:
                  type: string
                  description: カスタムJSONメタデータ（文字列として）
          application/json:
            schema:
              type: object
              required:
                - url
                - name
              properties:
                url:
                  type: string
                  format: uri
                  description: アセットをダウンロードするHTTP/HTTPS URL
                name:
                  type: string
                  description: アセットの表示名（ファイル拡張子の判定に使用）
                tags:
                  type: array
                  items:
                    type: string
                  description: >-
                    アセットの自由形式タグ。一般的なタイプには"models"、"input"、"output"、"temp"がありますが、任意のタグを任意の順序で使用できます。
                user_metadata:
                  type: object
                  additionalProperties: true
                  description: アセットとともに保存するカスタムメタデータ
                preview_id:
                  type: string
                  format: uuid
                  description: オプションのプレビューアセットID
      responses:
        '200':
          description: アセットは既に存在します（既存のアセットを返しました）
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetCreated'
        '201':
          description: アセットが正常に作成されました
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetCreated'
        '400':
          description: 無効なリクエスト（不正なファイル、無効なURL、無効なコンテンツタイプなど）
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: 認証されていません
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: ソースURLは認証が必要、またはアクセスが拒否されました
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: ソースURLが見つかりません
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '413':
          description: ファイルが大きすぎます
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '415':
          description: サポートされていないメディアタイプ
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: ネットワークエラーまたはタイムアウトによりダウンロードに失敗しました
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: 内部サーバーエラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    AssetCreated:
      allOf:
        - $ref: '#/components/schemas/Asset'
        - type: object
          required:
            - created_new
          properties:
            created_new:
              type: boolean
              description: これが新しいアセットの作成であるか（true）または既存のものが返されたか（false）
    ErrorResponse:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
        message:
          type: string
    Asset:
      type: object
      required:
        - id
        - name
        - size
        - created_at
        - updated_at
      properties:
        id:
          type: string
          format: uuid
          description: アセットの一意な識別子
        name:
          type: string
          description: アセットファイルの名前
        asset_hash:
          type: string
          description: アセットコンテンツのBlake3ハッシュ
          pattern: ^blake3:[a-f0-9]{64}$
        size:
          type: integer
          format: int64
          description: アセットのサイズ（バイト単位）
        mime_type:
          type: string
          description: アセットのMIMEタイプ
        tags:
          type: array
          items:
            type: string
          description: アセットに関連付けられたタグ
        user_metadata:
          type: object
          description: アセットのカスタムユーザーメタデータ
          additionalProperties: true
        preview_url:
          type: string
          format: uri
          description: アセットのプレビュー/サムネイルのURL
        preview_id:
          type: string
          format: uuid
          description: 利用可能な場合のプレビューアセットのID
          nullable: true
        prompt_id:
          type: string
          format: uuid
          description: このアセットを作成したジョブ/プロンプトのID（利用可能な場合）
          nullable: true
        created_at:
          type: string
          format: date-time
          description: アセット作成時のタイムスタンプ
        updated_at:
          type: string
          format: date-time
          description: アセットの最終更新時刻のタイムスタンプ
        last_access_time:
          type: string
          format: date-time
          description: アセットの最終アクセス時刻のタイムスタンプ
        is_immutable:
          type: boolean
          description: このアセットが不変であるかどうか（変更または削除不可）
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: |
        APIキー認証。アカウント設定からAPIキーを生成します
        （https://platform.comfy.org/profile/api-keys）。X-API-Keyヘッダーでキーを渡します。

````