Endpoints:
- Get message types
- Get a message type
- Create a message type
- Update a message type
- Destroy a message type
GET /buckets/1/categories.jsonwill return a list of all the message types in the project with an ID of1.
[
{
"id": 823758568,
"name": "Announcement",
"icon": "📢",
"created_at": "2026-02-12T06:09:34.617Z",
"updated_at": "2026-02-12T06:09:34.617Z"
},
{
"id": 823758569,
"name": "FYI",
"icon": "✨",
"created_at": "2026-02-12T06:09:34.619Z",
"updated_at": "2026-02-12T06:09:34.619Z"
}
]curl -s -H "Authorization: Bearer $ACCESS_TOKEN" https://3.basecampapi.com/$ACCOUNT_ID/buckets/1/categories.jsonGET /buckets/1/categories/2.jsonwill return the message type with ID2in the project with an ID of1.
{
"id": 823758568,
"name": "Announcement",
"icon": "📢",
"created_at": "2026-02-12T06:09:34.617Z",
"updated_at": "2026-02-12T06:09:34.617Z"
}curl -s -H "Authorization: Bearer $ACCESS_TOKEN" https://3.basecampapi.com/$ACCOUNT_ID/buckets/1/categories/2.jsonPOST /buckets/1/categories.jsoncreates a new message type in the project with an ID of1.
Required parameters: name and icon for the new message type.
This endpoint will return 201 Created with the current JSON representation of the message type if the creation was a success. See the Get a message type endpoint for more info on the payload.
{
"name": "Announcement",
"icon": "📢"
}curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"Announcement","icon": "📢"}' \
https://3.basecampapi.com/$ACCOUNT_ID/buckets/1/categories.jsonPUT /buckets/1/categories/2.jsonallows changing the message type with an ID of2in the project with an ID of1.
This endpoint will return 200 OK with the current JSON representation of the message type if the update was a success. See the Get a message type endpoint for more info on the payload.
{
"name": "Quick Update",
"icon": "📢"
}curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"Quick Update","icon":"📢"}' -X PUT \
https://3.basecampapi.com/$ACCOUNT_ID/buckets/1/categories/2.jsonDELETE /buckets/1/categories/2.jsonwill delete the message type with an ID of2in the project with an ID of1.
No parameters required. Returns 204 No Content if successful.
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" -X DELETE \
https://3.basecampapi.com/$ACCOUNT_ID/buckets/1/categories/2.json