Get upload credentials
Creates a pre-signed POST form data for uploading an attachment directly to S3. This endpoint handles the first step of the two-and-a-half step upload process where you first get the upload credentials and then use them to upload the actual file.
Path Parameters
workspace_slug:requiredstringThe workspace_slug represents the unique workspace identifier for a workspace in Plane. It can be found in the URL. For example, in the URL https://app.plane.so/my-team/projects/, the workspace slug is my-team.
project_id:requiredstringThe unique identifier of the project.
work_item_id:requiredstringThe unique identifier of the work item.
Body Parameters
name:requiredstringOriginal filename of the attachment.
type:optionalstringMIME type of the file (e.g., image/png, application/pdf).
size:requiredintegerSize of the file in bytes.
external_id:optionalstringExternal identifier for the asset (for integration tracking).
external_source:optionalstringExternal source system (for integration tracking).
curl -X POST \
"https://api.plane.so/api/v1/workspaces/my-workspace/projects/project-uuid/work-items/work-item-uuid/attachments/" \
-H "X-API-Key: $PLANE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "example-name",
"type": "example-type",
"size": 1,
"external_id": "example-external_id",
"external_source": "example-external_source"
}'import requests
response = requests.post(
"https://api.plane.so/api/v1/workspaces/my-workspace/projects/project-uuid/work-items/work-item-uuid/attachments/",
headers={"X-API-Key": "your-api-key"},
json={
'name': 'example-name',
'type': 'example-type',
'size': 1,
'external_id': 'example-external_id',
'external_source': 'example-external_source'
}
)
print(response.json())const response = await fetch(
'https://api.plane.so/api/v1/workspaces/my-workspace/projects/project-uuid/work-items/work-item-uuid/attachments/',
{
method: 'POST',
headers: {
'X-API-Key': 'your-api-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'example-name',
type: 'example-type',
size: 1,
external_id: 'example-external_id',
external_source: 'example-external_source',
}),
},
);
const data = await response.json();{
"id": "project-uuid",
"name": "Project Name",
"identifier": "PROJ",
"description": "Project description",
"created_at": "2024-01-01T00:00:00Z"
}
