Tools
March 23, 2026 · View on GitHub
Tools are the features available in a project's dock. Every project has a dock containing tools like Message Board, To-dos, Docs & Files, Campfire, Schedule, etc. You can get, create, rename, reposition, and remove tools.
To find a project's tools, see the dock array in the Get a project response. Each dock entry includes the tool's id, name, title, enabled status, and position.
Endpoints:
Get a tool
GET /dock/tools/2.jsonwill return the tool with ID2.
Example JSON Response
{
"id": 1069479395,
"status": "active",
"visible_to_clients": false,
"created_at": "2026-02-12T06:09:34.667Z",
"updated_at": "2026-02-12T06:13:57.731Z",
"title": "Chat",
"inherits_status": true,
"type": "Chat::Transcript",
"url": "https://3.basecampapi.com/195539477/buckets/2085958504/chats/1069479395.json",
"app_url": "https://3.basecamp.com/195539477/buckets/2085958504/chats/1069479395",
"bookmark_url": "https://3.basecampapi.com/195539477/my/bookmarks/BAh7BkkiC19yYWlscwY6BkVUewdJIglkYXRhBjsAVEkiLmdpZDovL2JjMy9SZWNvcmRpbmcvMTA2OTQ3OTM5NT9leHBpcmVzX2luBjsAVEkiCHB1cgY7AFRJIg1yZWFkYWJsZQY7AFQ=--8737d118a3b0bb00e4fc9ddfea9e3a421b2b8bf5.json",
"subscription_url": "https://3.basecampapi.com/195539477/buckets/2085958504/recordings/1069479395/subscription.json",
"position": 4,
"bucket": {
"id": 2085958504,
"name": "The Leto Laptop",
"type": "Project"
},
"creator": {
"id": 1049715913,
"attachable_sgid": "BAh7BkkiC19yYWlscwY6BkVUewdJIglkYXRhBjsAVEkiK2dpZDovL2JjMy9QZXJzb24vMTA0OTcxNTkxMz9leHBpcmVzX2luBjsAVEkiCHB1cgY7AFRJIg9hdHRhY2hhYmxlBjsAVA==--e627c45e6b34e08862da23906862412620e4d5d9",
"name": "Victor Cooper",
"email_address": "victor@honchodesign.com",
"personable_type": "User",
"title": "Chief Strategist",
"bio": "Don’t let your dreams be dreams",
"location": "Chicago, IL",
"created_at": "2026-02-12T06:08:49.342Z",
"updated_at": "2026-02-12T06:08:50.871Z",
"admin": true,
"owner": true,
"client": false,
"employee": true,
"time_zone": "America/Chicago",
"avatar_url": "https://3.basecampapi.com/195539477/people/BAhpBMlkkT4=--5fe7b70fbee7a7f0e2e1e19df7579e5d880c753d/avatar?v=1",
"company": {
"id": 1033447817,
"name": "Honcho Design"
},
"can_ping": true,
"can_manage_projects": true,
"can_manage_people": true,
"can_access_timesheet": false,
"can_access_hill_charts": true
}
}
Copy as cURL
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" https://3.basecampapi.com/$ACCOUNT_ID/dock/tools/2.json
Create a tool
POST /buckets/1/dock/tools.jsoncreates a new tool in the project with ID1by cloning an existing tool.
Required parameters:
source_recording_id- the ID of an existing tool to clone. This determines the type of the new tool.title- the name for the new tool.
This endpoint will return 201 Created with the JSON representation of the new tool if successful.
Example JSON Request
{
"source_recording_id": 1069479341,
"title": "Q&A Chat"
}
Copy as cURL
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"source_recording_id":1069479341,"title":"Q&A Chat"}' \
https://3.basecampapi.com/$ACCOUNT_ID/buckets/1/dock/tools.json
Update a tool
PUT /dock/tools/2.jsonallows renaming the tool with ID2.
Required parameters: title for the new name.
This endpoint will return 200 OK with the updated JSON representation of the tool.
Example JSON Request
{
"title": "Team Chat"
}
Copy as cURL
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"title":"Team Chat"}' -X PUT \
https://3.basecampapi.com/$ACCOUNT_ID/dock/tools/2.json
Enable a tool
POST /buckets/1/recordings/2/position.jsonenables the tool with recording ID2in the project with ID1, adding it to the dock.
No parameters required. The tool will be positioned at the end of the dock.
This endpoint will return 201 Created if successful.
Copy as cURL
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-X POST \
https://3.basecampapi.com/$ACCOUNT_ID/buckets/1/recordings/2/position.json
Reposition a tool
PUT /buckets/1/recordings/2/position.jsonchanges the position of the tool with recording ID2in the project with ID1.
Required parameters: position - the new position (1-based index).
This endpoint will return 200 OK if successful.
Example JSON Request
{
"position": 1
}
Copy as cURL
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"position":1}' -X PUT \
https://3.basecampapi.com/$ACCOUNT_ID/buckets/1/recordings/2/position.json
Disable a tool
DELETE /buckets/1/recordings/2/position.jsondisables the tool with recording ID2in the project with ID1, removing it from the dock.
The tool is not deleted - it's just hidden from the dock. It can be re-enabled using the Enable a tool endpoint.
This endpoint will return 204 No Content if successful.
Copy as cURL
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-X DELETE \
https://3.basecampapi.com/$ACCOUNT_ID/buckets/1/recordings/2/position.json
Trash a tool
DELETE /dock/tools/2.jsontrashes the tool with ID2.
This permanently removes the tool and all its content. Use with caution.
This endpoint will return 204 No Content if successful.
Copy as cURL
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-X DELETE \
https://3.basecampapi.com/$ACCOUNT_ID/dock/tools/2.json
Legacy project-scoped routes
The following project-scoped routes are still supported and will remain available, but flat routes above are the canonical form for new integrations.
GET /buckets/1/dock/tools/2.json→ Get a toolPUT /buckets/1/dock/tools/2.json→ Update a toolDELETE /buckets/1/dock/tools/2.json→ Trash a tool