POST /importBundleZip
Import a ZIP/.tsk bundle into a workspace. Send the file as the raw request body with Content-Type: application/zip, application/octet-stream, or application/x-tsk. Pass workspaceId as a query parameter. Maximum file size: 50 MB.
Base URL: https://www.taskade.com/api/v2
Authentication
Send a personal access token or an OAuth 2.0 access token as a bearer token. Create a personal access token at taskade.com/settings/api.
Authorization: Bearer tskdp_your_token_here
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
workspaceId |
query | string |
Yes | The target workspace ID to import the bundle into. |
Example request
# Send the file as the raw request body. Swap application/octet-stream
# for the file's real type (image/png, application/zip, …) when you know it.
curl -X POST "https://www.taskade.com/api/v2/importBundleZip?workspaceId=<workspaceId>" \
-H "Authorization: Bearer $TASKADE_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary @/path/to/your-file
Responses
200 — Default response
| Field | Type | Required | Description |
|---|---|---|---|
ok |
boolean |
Yes | — |
item |
object |
Yes | — |
Errors
Errors return an ok: false envelope. Rate limiting returns 429 with x-rate-limit-limit, x-rate-limit-remaining and x-rate-limit-reset headers — x-rate-limit-reset is the number of seconds until the window reopens. Retry-After is not sent, so schedule retries from x-rate-limit-reset; retrying sooner will fail again.
{ "ok": false, "message": "Unauthorized", "code": "UNAUTHORIZED" }
Rate limits for this version: enforced per endpoint; ceilings are not published and can change without notice. A 429 response carries x-rate-limit-limit, x-rate-limit-remaining, and x-rate-limit-reset (seconds until the window reopens) — back off from those headers rather than hardcoding numbers. If you need sustained throughput, prefer batching (operations like /createTask accept arrays) over tightening polling loops. See Rate limits.