POSTPro+
/api/v1/models/{model_id}/assetsUpload Asset
Create a new asset in a model and attach a file in a single multipart upload. Broadcasts AssetAdded + AssetFileAttached collaboration operations — browser users see the new asset in real-time. 100 MB max.
Pass ?locale=de to store the file as that language's variant instead of the default. Normally you upload the base language here first, then add further languages to the same asset with the Attach Asset File endpoint — creating a separate asset per language breaks the one-reference-serves-both-languages behaviour that asset: links rely on.
The response adds a file object naming the file_id just written and the language slot it landed in.
AuthenticationBearer mpt_... or OAuth JWT
Plan RequirementPro+
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
model_id | String (UUID) | ✓ | [Upload Asset] UUID of the model the new asset belongs to. Path parameter. | |
file | Multipart file (max 100 MB) | ✓ | [Upload Asset] The binary file to attach. Multipart form field — any field name other than 'label' is treated as the file. Filename and content-type are taken from the multipart headers. | |
label | Multipart text | — | [Upload Asset] Display name for the asset. Multipart text field. Defaults to the uploaded filename if omitted. | |
locale | String | — | [Upload Asset] Store the file as this language's variant, for example `de`. Leave it out — or pass the model's default language — to store the default file. Normally the default file goes first and further languages are added to the same asset with Attach Asset File. |
Example Response
{"id": "new-asset-uuid", "label": "Architecture Diagram", "description": null, "filename": "architecture.png", "content_type": "image/png", "size_bytes": 184320, "tags": [], "created_at": "2026-05-16T12:34:56Z", "updated_at": "2026-05-16T12:34:56Z", "file": {"asset_id": "new-asset-uuid", "file_id": "c3f1...", "filename": "architecture.png", "content_type": "image/png", "size_bytes": 184320, "locale": "default"}}This content was written collaboratively with AI.