Actions / Media
Start upload
Read and createstart_upload
Starts adding a file (image, video or PDF) to the Media Library. Checks the type, size and storage, then returns a link that works for a limited time. Send the file's bytes to it with an HTTP PUT and the headers given, then call finish_upload. Needs a client that can send a PUT, such as a script, curl or Claude Code.
Needs the write scope. Creates or changes things in Chirpy. Publishes nothing.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
fileName | string | Yes | The file's name, for example launch-film.mp4 |
fileSize | integer | Yes | The file's exact size in bytes |
mimeType | "image/jpeg" | "image/png" | "image/gif" | "image/webp" | "image/svg+xml" | "video/mp4" | "video/mpeg" | "video/quicktime" | "video/webm" | "video/x-msvideo" | "video/x-matroska" | "application/pdf" | Yes | The file's type |
REST
curl https://chirpy.me/api/v1/start_upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"fileName":"...","fileSize":123,"mimeType":"image/jpeg"}'MCP
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "start_upload",
"arguments": {
"fileName": "...",
"fileSize": 123,
"mimeType": "image/jpeg"
}
}
}MCP hints: readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false.
