# Unggah gambar atau video lokal

URL kanonis: https://sosoapi.ai/id/docs/mcp/upload-asset

`sosoapi_upload_asset`

Unggah file gambar atau video lokal ke pustaka aset ruang kerja dan daftarkan sebagai aset. Hanya file PNG/JPEG/GIF/WebP/MP4/MOV/WebM/MKV/MPEG asli berukuran maksimal 500 MiB dari direktori kerja, folder sementara, Pictures/Movies/Videos, atau SOSOAPI_UPLOAD_ROOTS yang diterima; file dan folder berawalan titik ditolak. Mengembalikan ID dan URL aset untuk media Scheduled Post.

## Profil dan transport

Profil: core, full

Transport: stdio

Pilih core atau full untuk mengatur alat yang terlihat oleh klien; ini tidak mengubah izinnya. Unggahan file lokal memerlukan stdio dan tidak tersedia melalui HTTP. Atur SOSOAPI_OUTPUT_SCHEMAS=1 untuk menyertakan skema output saat penemuan. Alat mengembalikan hasil terstruktur dengan atau tanpa pengaturan itu.

## Izin dan efek samping

Anotasi membantu klien menjelaskan alat. Setiap panggilan tetap memeriksa autentikasi pengguna, peran, akses sumber daya, dan izin kemampuan.

```json
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}
```

`/assets-api/upload/sign` — agent:operate; synchronous_http_response

`/assets-api/upload/complete` — agent:operate; synchronous_http_response

## Kolom input

```json
{
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid"
    },
    "file_path": {
      "type": "string",
      "minLength": 1
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 160
    },
    "content_type": {
      "type": "string",
      "minLength": 1
    },
    "title": {
      "type": "string",
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    },
    "tags": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 64
      }
    },
    "metadata": {
      "type": "object",
      "additionalProperties": {}
    }
  },
  "required": [
    "workspace_id",
    "file_path",
    "idempotency_key"
  ]
}
```

## Output terstruktur

Skema ini menjelaskan structuredContent dalam hasil alat yang berhasil. Respons MCP juga menyertakan content dan dapat menetapkan isError saat panggilan gagal. Untuk publikasi, baca hasil akhir postingan alih-alih menganggap permintaan diterima atau respons teks sebagai konfirmasi. Operasi API yang ditautkan menjelaskan izin dan aturan percobaan ulang.

```json
{
  "type": "object",
  "properties": {
    "asset": {
      "type": "object",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "string"
            }
          ]
        },
        "workspace_id": {
          "type": "string",
          "format": "uuid"
        },
        "user_id": {
          "type": "string",
          "format": "uuid"
        },
        "asset_type": {
          "type": "string",
          "enum": [
            "text",
            "image",
            "video",
            "audio"
          ]
        },
        "asset_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "preview_url": {
          "description": "Workspace-authorized temporary read URL. Refresh through Asset read/list after preview_expires_at; keep asset_url as persisted media identity.",
          "anyOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "null"
            }
          ]
        },
        "preview_expires_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "tags": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "null"
            }
          ]
        },
        "metadata": {
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            },
            {
              "type": "null"
            }
          ]
        },
        "source": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "source_metadata": {
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            },
            {
              "type": "null"
            }
          ]
        },
        "created_at": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "id",
        "workspace_id",
        "user_id",
        "asset_type",
        "asset_url",
        "title",
        "description",
        "tags",
        "metadata",
        "created_at"
      ],
      "additionalProperties": false
    },
    "deduped": {
      "type": "boolean"
    }
  },
  "required": [
    "asset",
    "deduped"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
```

## Contoh panggilan alat

Contoh ini menggunakan nilai fiktif yang diperiksa terhadap skema. Ganti ID dengan yang diizinkan bagi Anda, media dengan aset siap, dan tanggal dengan waktu publikasi yang dikonfirmasi. Periksa kelayakan akun sebelum mengirim penulisan. Halaman ini tidak mengirim permintaan API.

```json
{
  "name": "sosoapi_upload_asset",
  "arguments": {
    "workspace_id": "11111111-1111-4111-8111-111111111111",
    "file_path": "./example.png",
    "idempotency_key": "example-upload-001"
  }
}
```

structuredContent

```json
{
  "asset": {
    "id": 0,
    "workspace_id": "11111111-1111-4111-8111-111111111111",
    "user_id": "11111111-1111-4111-8111-111111111111",
    "asset_type": "text",
    "asset_url": null,
    "title": null,
    "description": null,
    "tags": null,
    "metadata": null,
    "created_at": "example"
  },
  "deduped": false
}
```

## Operasi API yang mendasari

- [/assets-api/upload/sign](https://sosoapi.ai/id/docs/api/assets-api-upload-sign)

- [/assets-api/upload/complete](https://sosoapi.ai/id/docs/api/assets-api-upload-complete)
