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 /dock/tools/2.jsonwill return the tool with ID2.
{
"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
}
}curl -s -H "Authorization: Bearer $ACCESS_TOKEN" https://3.basecampapi.com/$ACCOUNT_ID/dock/tools/2.jsonPOST /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.
{
"source_recording_id": 1069479341,
"title": "Q&A Chat"
}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.jsonPUT /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.
{
"title": "Team Chat"
}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.jsonPOST /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.
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.jsonPUT /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.
{
"position": 1
}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.jsonDELETE /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.
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.jsonDELETE /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.
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-X DELETE \
https://3.basecampapi.com/$ACCOUNT_ID/dock/tools/2.jsonThe 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