Call after PUTting the bytes to uploadUrl. Probes the file (size limits, dimensions/duration), stores a normalized copy, and returns the finished asset. Idempotent: completing again returns the same asset.
Authorization
bearerAuth assets:writeIn: header
Scope: assets:write
Path Parameters
assetId from the upload ticket.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/assets/uploads/string/complete"{ "id": "string", "type": "image", "name": "string", "url": "http://example.com", "thumbnailUrl": "http://example.com", "width": 0, "height": 0, "duration": 0, "mimeType": "string", "source": "string", "sourceProcessId": "string", "favorite": true, "createdAt": "2019-08-24T14:15:22Z", "links": { "self": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}{ "error": { "code": "string", "message": "string", "requestId": "string" }}MCP Guide
The Yapper hosted MCP connector — a thin client over the public API.
Create a direct upload POST
For local files with no URL (use POST /assets/import when a URL exists — the server streams it directly). Returns a short-lived signed PUT URL: upload the bytes to uploadUrl with the matching Content-Type header, then call the complete endpoint to finalize the asset. Spends no credits.